{"version":3,"file":"pwc-smartplayer.e2a10ba1.chunk.js","mappings":"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C,IAGA,IAAI65G,cAAgB1G,eAAelpF,cACnC,GAAsB,cAAlB4vF,eAAmD,iBAAlBA,cAAkC,CACrE,IAAIG,eAAiB5G,gBAAgBnpF,cACK,IAAtC+vF,eAAeh5G,QAAQ,YAA2D,IAAvCg5G,eAAeh5G,QAAQ,cACpEmyG,eAAiB,OACjBC,gBAAkB,OAEtB,CAtDA,CAuDF,EA0fE+E,YACAC,YACAE,UACAC,UACAK,kBACAC,kBACAK,cACAC,cACAJ,gBACAC,gBACAK,YACAC,YACAoI,4BACAC,4BACAnI,iBACAC,iBACA8M,iBAAkB5M,mBAClBC,iBACAE,kBACAC,kBACAE,iCACAC,iCACAG,uBACAC,uBACAE,gBACAC,gBACAhC,uBACA+N,uBAAwB9N,yBACxBiC,iBACAC,iBACAE,sBACAC,sBACAE,mBACAC,mBACAE,qCACAC,qCACAE,kBACAC,kBACAE,mBACAC,mBACAE,mBACAC,mBACAC,oBACAC,oBACAE,uBACAC,uBACAsK,uBAnO2B,WAC3B,OAAOtS,oBACT,EAkOEuS,uBAjO2B,SAAgCC,aAC3DxS,qBAAuBwS,WACzB,EAgOEtK,2BACAC,2BACAE,wBACAC,wBACAE,mBACAC,mBACAE,0BACAC,0BACAE,2BACAC,2BACAE,mCACAC,mCACAE,4BACAC,4BACAE,qBACAC,qBACAC,sBACAC,sBACAE,mBACAC,mBACAE,8BACAC,8BACAE,wBACAC,wBACAE,gCACAC,gCACAG,cACAC,cACAC,YACAC,YACAE,iBACAC,iBACAE,0BACAC,0BACAuH,8BA3VkC,WAClC,OAAOnR,2BACT,EA0VE8J,8BACAE,0BACAC,0BACAE,cACAC,cACAE,eACAC,eACAC,eACAC,eACAC,WACAC,WACAG,gBACAC,gBACAC,gBACAC,gBACAC,SACAkG,SAAUjG,WACVC,4BACAC,4BACAC,4BACAC,4BACAC,oBACAC,oBACAE,wBACAC,wBACAE,wBACAC,wBACAK,4BACAC,4BACAE,qBACAC,qBACAE,oBACAC,oBACAE,4BACAC,4BACAE,oBACAC,oBACAE,oBACAC,oBACAE,YACAC,YACA8D,gBAAiBhP,oBA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","sources":["../node_modules/@techsmith/techsmith-smartplayer/dist/techsmith-smart-player.esm.js"],"sourcesContent":["/**\n * TechSmith Smart Player v5.121.0\n */\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nvar pep = {exports: {}};\n\n/*!\n * PEP v0.4.3 | https://github.com/jquery/PEP\n * Copyright jQuery Foundation and other contributors | http://jquery.org/license\n */\n(function (module, exports) {\n (function (global, factory) {\n module.exports = factory() ;\n })(commonjsGlobal, function () {\n\n /**\n * This is the constructor for new PointerEvents.\n *\n * New Pointer Events must be given a type, and an optional dictionary of\n * initialization properties.\n *\n * Due to certain platform requirements, events returned from the constructor\n * identify as MouseEvents.\n *\n * @constructor\n * @param {String} inType The type of the event to create.\n * @param {Object} [inDict] An optional dictionary of initial event properties.\n * @return {Event} A new PointerEvent of type `inType`, initialized with properties from `inDict`.\n */\n var MOUSE_PROPS = ['bubbles', 'cancelable', 'view', 'detail', 'screenX', 'screenY', 'clientX', 'clientY', 'ctrlKey', 'altKey', 'shiftKey', 'metaKey', 'button', 'relatedTarget', 'pageX', 'pageY'];\n var MOUSE_DEFAULTS = [false, false, null, null, 0, 0, 0, 0, false, false, false, false, 0, null, 0, 0];\n function PointerEvent(inType, inDict) {\n inDict = inDict || Object.create(null);\n var e = document.createEvent('Event');\n e.initEvent(inType, inDict.bubbles || false, inDict.cancelable || false);\n\n // define inherited MouseEvent properties\n // skip bubbles and cancelable since they're set above in initEvent()\n for (var i = 2, p; i < MOUSE_PROPS.length; i++) {\n p = MOUSE_PROPS[i];\n e[p] = inDict[p] || MOUSE_DEFAULTS[i];\n }\n e.buttons = inDict.buttons || 0;\n\n // Spec requires that pointers without pressure specified use 0.5 for down\n // state and 0 for up state.\n var pressure = 0;\n if (inDict.pressure && e.buttons) {\n pressure = inDict.pressure;\n } else {\n pressure = e.buttons ? 0.5 : 0;\n }\n\n // add x/y properties aliased to clientX/Y\n e.x = e.clientX;\n e.y = e.clientY;\n\n // define the properties of the PointerEvent interface\n e.pointerId = inDict.pointerId || 0;\n e.width = inDict.width || 0;\n e.height = inDict.height || 0;\n e.pressure = pressure;\n e.tiltX = inDict.tiltX || 0;\n e.tiltY = inDict.tiltY || 0;\n e.twist = inDict.twist || 0;\n e.tangentialPressure = inDict.tangentialPressure || 0;\n e.pointerType = inDict.pointerType || '';\n e.hwTimestamp = inDict.hwTimestamp || 0;\n e.isPrimary = inDict.isPrimary || false;\n return e;\n }\n\n /**\n * This module implements a map of pointer states\n */\n var USE_MAP = window.Map && window.Map.prototype.forEach;\n var PointerMap = USE_MAP ? Map : SparseArrayMap;\n function SparseArrayMap() {\n this.array = [];\n this.size = 0;\n }\n SparseArrayMap.prototype = {\n set: function set(k, v) {\n if (v === undefined) {\n return this[\"delete\"](k);\n }\n if (!this.has(k)) {\n this.size++;\n }\n this.array[k] = v;\n },\n has: function has(k) {\n return this.array[k] !== undefined;\n },\n \"delete\": function _delete(k) {\n if (this.has(k)) {\n delete this.array[k];\n this.size--;\n }\n },\n get: function get(k) {\n return this.array[k];\n },\n clear: function clear() {\n this.array.length = 0;\n this.size = 0;\n },\n // return value, key, map\n forEach: function forEach(callback, thisArg) {\n return this.array.forEach(function (v, k) {\n callback.call(thisArg, v, k, this);\n }, this);\n }\n };\n var CLONE_PROPS = [\n // MouseEvent\n 'bubbles', 'cancelable', 'view', 'detail', 'screenX', 'screenY', 'clientX', 'clientY', 'ctrlKey', 'altKey', 'shiftKey', 'metaKey', 'button', 'relatedTarget',\n // DOM Level 3\n 'buttons',\n // PointerEvent\n 'pointerId', 'width', 'height', 'pressure', 'tiltX', 'tiltY', 'pointerType', 'hwTimestamp', 'isPrimary',\n // event instance\n 'type', 'target', 'currentTarget', 'which', 'pageX', 'pageY', 'timeStamp'];\n var CLONE_DEFAULTS = [\n // MouseEvent\n false, false, null, null, 0, 0, 0, 0, false, false, false, false, 0, null,\n // DOM Level 3\n 0,\n // PointerEvent\n 0, 0, 0, 0, 0, 0, '', 0, false,\n // event instance\n '', null, null, 0, 0, 0, 0];\n var BOUNDARY_EVENTS = {\n 'pointerover': 1,\n 'pointerout': 1,\n 'pointerenter': 1,\n 'pointerleave': 1\n };\n var HAS_SVG_INSTANCE = typeof SVGElementInstance !== 'undefined';\n\n /**\n * This module is for normalizing events. Mouse and Touch events will be\n * collected here, and fire PointerEvents that have the same semantics, no\n * matter the source.\n * Events fired:\n * - pointerdown: a pointing is added\n * - pointerup: a pointer is removed\n * - pointermove: a pointer is moved\n * - pointerover: a pointer crosses into an element\n * - pointerout: a pointer leaves an element\n * - pointercancel: a pointer will no longer generate events\n */\n var dispatcher = {\n pointermap: new PointerMap(),\n eventMap: Object.create(null),\n captureInfo: Object.create(null),\n // Scope objects for native events.\n // This exists for ease of testing.\n eventSources: Object.create(null),\n eventSourceList: [],\n /**\n * Add a new event source that will generate pointer events.\n *\n * `inSource` must contain an array of event names named `events`, and\n * functions with the names specified in the `events` array.\n * @param {string} name A name for the event source\n * @param {Object} source A new source of platform events.\n */\n registerSource: function registerSource(name, source) {\n var s = source;\n var newEvents = s.events;\n if (newEvents) {\n newEvents.forEach(function (e) {\n if (s[e]) {\n this.eventMap[e] = s[e].bind(s);\n }\n }, this);\n this.eventSources[name] = s;\n this.eventSourceList.push(s);\n }\n },\n register: function register(element) {\n var l = this.eventSourceList.length;\n for (var i = 0, es; i < l && (es = this.eventSourceList[i]); i++) {\n // call eventsource register\n es.register.call(es, element);\n }\n },\n unregister: function unregister(element) {\n var l = this.eventSourceList.length;\n for (var i = 0, es; i < l && (es = this.eventSourceList[i]); i++) {\n // call eventsource register\n es.unregister.call(es, element);\n }\n },\n contains: /*scope.external.contains || */function contains(container, contained) {\n try {\n return container.contains(contained);\n } catch (ex) {\n // most likely: https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n return false;\n }\n },\n // EVENTS\n down: function down(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointerdown', inEvent);\n },\n move: function move(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointermove', inEvent);\n },\n up: function up(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointerup', inEvent);\n },\n enter: function enter(inEvent) {\n inEvent.bubbles = false;\n this.fireEvent('pointerenter', inEvent);\n },\n leave: function leave(inEvent) {\n inEvent.bubbles = false;\n this.fireEvent('pointerleave', inEvent);\n },\n over: function over(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointerover', inEvent);\n },\n out: function out(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointerout', inEvent);\n },\n cancel: function cancel(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointercancel', inEvent);\n },\n leaveOut: function leaveOut(event) {\n this.out(event);\n this.propagate(event, this.leave, false);\n },\n enterOver: function enterOver(event) {\n this.over(event);\n this.propagate(event, this.enter, true);\n },\n // LISTENER LOGIC\n eventHandler: function eventHandler(inEvent) {\n // This is used to prevent multiple dispatch of pointerevents from\n // platform events. This can happen when two elements in different scopes\n // are set up to create pointer events, which is relevant to Shadow DOM.\n if (inEvent._handledByPE) {\n return;\n }\n var type = inEvent.type;\n var fn = this.eventMap && this.eventMap[type];\n if (fn) {\n fn(inEvent);\n }\n inEvent._handledByPE = true;\n },\n // set up event listeners\n listen: function listen(target, events) {\n events.forEach(function (e) {\n this.addEvent(target, e);\n }, this);\n },\n // remove event listeners\n unlisten: function unlisten(target, events) {\n events.forEach(function (e) {\n this.removeEvent(target, e);\n }, this);\n },\n addEvent: /*scope.external.addEvent || */function addEvent(target, eventName) {\n target.addEventListener(eventName, this.boundHandler);\n },\n removeEvent: /*scope.external.removeEvent || */function removeEvent(target, eventName) {\n target.removeEventListener(eventName, this.boundHandler);\n },\n // EVENT CREATION AND TRACKING\n /**\n * Creates a new Event of type `inType`, based on the information in\n * `inEvent`.\n *\n * @param {string} inType A string representing the type of event to create\n * @param {Event} inEvent A platform event with a target\n * @return {Event} A PointerEvent of type `inType`\n */\n makeEvent: function makeEvent(inType, inEvent) {\n // relatedTarget must be null if pointer is captured\n if (this.captureInfo[inEvent.pointerId]) {\n inEvent.relatedTarget = null;\n }\n var e = new PointerEvent(inType, inEvent);\n if (inEvent.preventDefault) {\n e.preventDefault = inEvent.preventDefault;\n }\n e._target = e._target || inEvent.target;\n return e;\n },\n // make and dispatch an event in one call\n fireEvent: function fireEvent(inType, inEvent) {\n var e = this.makeEvent(inType, inEvent);\n return this.dispatchEvent(e);\n },\n /**\n * Returns a snapshot of inEvent, with writable properties.\n *\n * @param {Event} inEvent An event that contains properties to copy.\n * @return {Object} An object containing shallow copies of `inEvent`'s\n * properties.\n */\n cloneEvent: function cloneEvent(inEvent) {\n var eventCopy = Object.create(null);\n var p;\n for (var i = 0; i < CLONE_PROPS.length; i++) {\n p = CLONE_PROPS[i];\n eventCopy[p] = inEvent[p] || CLONE_DEFAULTS[i];\n\n // Work around SVGInstanceElement shadow tree\n // Return the element that is represented by the instance for Safari, Chrome, IE.\n // This is the behavior implemented by Firefox.\n if (HAS_SVG_INSTANCE && (p === 'target' || p === 'relatedTarget')) {\n if (eventCopy[p] instanceof SVGElementInstance) {\n eventCopy[p] = eventCopy[p].correspondingUseElement;\n }\n }\n }\n\n // keep the semantics of preventDefault\n if (inEvent.preventDefault) {\n eventCopy.preventDefault = function () {\n inEvent.preventDefault();\n };\n }\n return eventCopy;\n },\n getTarget: function getTarget(inEvent) {\n var capture = this.captureInfo[inEvent.pointerId];\n if (!capture) {\n return inEvent._target;\n }\n if (inEvent._target === capture || !(inEvent.type in BOUNDARY_EVENTS)) {\n return capture;\n }\n },\n propagate: function propagate(event, fn, propagateDown) {\n var target = event.target;\n var targets = [];\n\n // Order of conditions due to document.contains() missing in IE.\n while (target !== document && !target.contains(event.relatedTarget)) {\n targets.push(target);\n target = target.parentNode;\n\n // Touch: Do not propagate if node is detached.\n if (!target) {\n return;\n }\n }\n if (propagateDown) {\n targets.reverse();\n }\n targets.forEach(function (target) {\n event.target = target;\n fn.call(this, event);\n }, this);\n },\n setCapture: function setCapture(inPointerId, inTarget, skipDispatch) {\n if (this.captureInfo[inPointerId]) {\n this.releaseCapture(inPointerId, skipDispatch);\n }\n this.captureInfo[inPointerId] = inTarget;\n this.implicitRelease = this.releaseCapture.bind(this, inPointerId, skipDispatch);\n document.addEventListener('pointerup', this.implicitRelease);\n document.addEventListener('pointercancel', this.implicitRelease);\n var e = new PointerEvent('gotpointercapture');\n e.pointerId = inPointerId;\n e._target = inTarget;\n if (!skipDispatch) {\n this.asyncDispatchEvent(e);\n }\n },\n releaseCapture: function releaseCapture(inPointerId, skipDispatch) {\n var t = this.captureInfo[inPointerId];\n if (!t) {\n return;\n }\n this.captureInfo[inPointerId] = undefined;\n document.removeEventListener('pointerup', this.implicitRelease);\n document.removeEventListener('pointercancel', this.implicitRelease);\n var e = new PointerEvent('lostpointercapture');\n e.pointerId = inPointerId;\n e._target = t;\n if (!skipDispatch) {\n this.asyncDispatchEvent(e);\n }\n },\n /**\n * Dispatches the event to its target.\n *\n * @param {Event} inEvent The event to be dispatched.\n * @return {Boolean} True if an event handler returns true, false otherwise.\n */\n dispatchEvent: /*scope.external.dispatchEvent || */function dispatchEvent(inEvent) {\n var t = this.getTarget(inEvent);\n if (t) {\n return t.dispatchEvent(inEvent);\n }\n },\n asyncDispatchEvent: function asyncDispatchEvent(inEvent) {\n requestAnimationFrame(this.dispatchEvent.bind(this, inEvent));\n }\n };\n dispatcher.boundHandler = dispatcher.eventHandler.bind(dispatcher);\n var targeting = {\n shadow: function shadow(inEl) {\n if (inEl) {\n return inEl.shadowRoot || inEl.webkitShadowRoot;\n }\n },\n canTarget: function canTarget(shadow) {\n return shadow && Boolean(shadow.elementFromPoint);\n },\n targetingShadow: function targetingShadow(inEl) {\n var s = this.shadow(inEl);\n if (this.canTarget(s)) {\n return s;\n }\n },\n olderShadow: function olderShadow(shadow) {\n var os = shadow.olderShadowRoot;\n if (!os) {\n var se = shadow.querySelector('shadow');\n if (se) {\n os = se.olderShadowRoot;\n }\n }\n return os;\n },\n allShadows: function allShadows(element) {\n var shadows = [];\n var s = this.shadow(element);\n while (s) {\n shadows.push(s);\n s = this.olderShadow(s);\n }\n return shadows;\n },\n searchRoot: function searchRoot(inRoot, x, y) {\n if (inRoot) {\n var t = inRoot.elementFromPoint(x, y);\n var st, sr;\n\n // is element a shadow host?\n sr = this.targetingShadow(t);\n while (sr) {\n // find the the element inside the shadow root\n st = sr.elementFromPoint(x, y);\n if (!st) {\n // check for older shadows\n sr = this.olderShadow(sr);\n } else {\n // shadowed element may contain a shadow root\n var ssr = this.targetingShadow(st);\n return this.searchRoot(ssr, x, y) || st;\n }\n }\n\n // light dom element is the target\n return t;\n }\n },\n owner: function owner(element) {\n var s = element;\n\n // walk up until you hit the shadow root or document\n while (s.parentNode) {\n s = s.parentNode;\n }\n\n // the owner element is expected to be a Document or ShadowRoot\n if (s.nodeType !== Node.DOCUMENT_NODE && s.nodeType !== Node.DOCUMENT_FRAGMENT_NODE) {\n s = document;\n }\n return s;\n },\n findTarget: function findTarget(inEvent) {\n var x = inEvent.clientX;\n var y = inEvent.clientY;\n\n // if the listener is in the shadow root, it is much faster to start there\n var s = this.owner(inEvent.target);\n\n // if x, y is not in this root, fall back to document search\n if (!s.elementFromPoint(x, y)) {\n s = document;\n }\n return this.searchRoot(s, x, y);\n }\n };\n var forEach = Array.prototype.forEach.call.bind(Array.prototype.forEach);\n var map = Array.prototype.map.call.bind(Array.prototype.map);\n var toArray = Array.prototype.slice.call.bind(Array.prototype.slice);\n var filter = Array.prototype.filter.call.bind(Array.prototype.filter);\n var MO = window.MutationObserver || window.WebKitMutationObserver;\n var SELECTOR = '[touch-action]';\n var OBSERVER_INIT = {\n subtree: true,\n childList: true,\n attributes: true,\n attributeOldValue: true,\n attributeFilter: ['touch-action']\n };\n function Installer(add, remove, changed, binder) {\n this.addCallback = add.bind(binder);\n this.removeCallback = remove.bind(binder);\n this.changedCallback = changed.bind(binder);\n if (MO) {\n this.observer = new MO(this.mutationWatcher.bind(this));\n }\n }\n Installer.prototype = {\n watchSubtree: function watchSubtree(target) {\n // Only watch scopes that can target find, as these are top-level.\n // Otherwise we can see duplicate additions and removals that add noise.\n //\n // TODO(dfreedman): For some instances with ShadowDOMPolyfill, we can see\n // a removal without an insertion when a node is redistributed among\n // shadows. Since it all ends up correct in the document, watching only\n // the document will yield the correct mutations to watch.\n if (this.observer && targeting.canTarget(target)) {\n this.observer.observe(target, OBSERVER_INIT);\n }\n },\n enableOnSubtree: function enableOnSubtree(target) {\n this.watchSubtree(target);\n if (target === document && document.readyState !== 'complete') {\n this.installOnLoad();\n } else {\n this.installNewSubtree(target);\n }\n },\n installNewSubtree: function installNewSubtree(target) {\n forEach(this.findElements(target), this.addElement, this);\n },\n findElements: function findElements(target) {\n if (target.querySelectorAll) {\n return target.querySelectorAll(SELECTOR);\n }\n return [];\n },\n removeElement: function removeElement(el) {\n this.removeCallback(el);\n },\n addElement: function addElement(el) {\n this.addCallback(el);\n },\n elementChanged: function elementChanged(el, oldValue) {\n this.changedCallback(el, oldValue);\n },\n concatLists: function concatLists(accum, list) {\n return accum.concat(toArray(list));\n },\n // register all touch-action = none nodes on document load\n installOnLoad: function installOnLoad() {\n document.addEventListener('readystatechange', function () {\n if (document.readyState === 'complete') {\n this.installNewSubtree(document);\n }\n }.bind(this));\n },\n isElement: function isElement(n) {\n return n.nodeType === Node.ELEMENT_NODE;\n },\n flattenMutationTree: function flattenMutationTree(inNodes) {\n // find children with touch-action\n var tree = map(inNodes, this.findElements, this);\n\n // make sure the added nodes are accounted for\n tree.push(filter(inNodes, this.isElement));\n\n // flatten the list\n return tree.reduce(this.concatLists, []);\n },\n mutationWatcher: function mutationWatcher(mutations) {\n mutations.forEach(this.mutationHandler, this);\n },\n mutationHandler: function mutationHandler(m) {\n if (m.type === 'childList') {\n var added = this.flattenMutationTree(m.addedNodes);\n added.forEach(this.addElement, this);\n var removed = this.flattenMutationTree(m.removedNodes);\n removed.forEach(this.removeElement, this);\n } else if (m.type === 'attributes') {\n this.elementChanged(m.target, m.oldValue);\n }\n }\n };\n function shadowSelector(v) {\n return 'body /shadow-deep/ ' + selector(v);\n }\n function selector(v) {\n return '[touch-action=\"' + v + '\"]';\n }\n function rule(v) {\n return '{ -ms-touch-action: ' + v + '; touch-action: ' + v + '; }';\n }\n var attrib2css = ['none', 'auto', 'pan-x', 'pan-y', {\n rule: 'pan-x pan-y',\n selectors: ['pan-x pan-y', 'pan-y pan-x']\n }];\n var styles = '';\n\n // only install stylesheet if the browser has touch action support\n var hasNativePE = window.PointerEvent || window.MSPointerEvent;\n\n // only add shadow selectors if shadowdom is supported\n var hasShadowRoot = !window.ShadowDOMPolyfill && document.head.createShadowRoot;\n function applyAttributeStyles() {\n if (hasNativePE) {\n attrib2css.forEach(function (r) {\n if (String(r) === r) {\n styles += selector(r) + rule(r) + '\\n';\n if (hasShadowRoot) {\n styles += shadowSelector(r) + rule(r) + '\\n';\n }\n } else {\n styles += r.selectors.map(selector) + rule(r.rule) + '\\n';\n if (hasShadowRoot) {\n styles += r.selectors.map(shadowSelector) + rule(r.rule) + '\\n';\n }\n }\n });\n var el = document.createElement('style');\n el.textContent = styles;\n document.head.appendChild(el);\n }\n }\n var pointermap = dispatcher.pointermap;\n\n // radius around touchend that swallows mouse events\n var DEDUP_DIST = 25;\n\n // left, middle, right, back, forward\n var BUTTON_TO_BUTTONS = [1, 4, 2, 8, 16];\n var HAS_BUTTONS = false;\n try {\n HAS_BUTTONS = new MouseEvent('test', {\n buttons: 1\n }).buttons === 1;\n } catch (e) {}\n\n // handler block for native mouse events\n var mouseEvents = {\n POINTER_ID: 1,\n POINTER_TYPE: 'mouse',\n events: ['mousedown', 'mousemove', 'mouseup', 'mouseover', 'mouseout'],\n register: function register(target) {\n dispatcher.listen(target, this.events);\n },\n unregister: function unregister(target) {\n dispatcher.unlisten(target, this.events);\n },\n lastTouches: [],\n // collide with the global mouse listener\n isEventSimulatedFromTouch: function isEventSimulatedFromTouch(inEvent) {\n var lts = this.lastTouches;\n var x = inEvent.clientX;\n var y = inEvent.clientY;\n for (var i = 0, l = lts.length, t; i < l && (t = lts[i]); i++) {\n // simulated mouse events will be swallowed near a primary touchend\n var dx = Math.abs(x - t.x);\n var dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DIST && dy <= DEDUP_DIST) {\n return true;\n }\n }\n },\n prepareEvent: function prepareEvent(inEvent) {\n var e = dispatcher.cloneEvent(inEvent);\n\n // forward mouse preventDefault\n var pd = e.preventDefault;\n e.preventDefault = function () {\n inEvent.preventDefault();\n pd();\n };\n e.pointerId = this.POINTER_ID;\n e.isPrimary = true;\n e.pointerType = this.POINTER_TYPE;\n return e;\n },\n prepareButtonsForMove: function prepareButtonsForMove(e, inEvent) {\n var p = pointermap.get(this.POINTER_ID);\n\n // Update buttons state after possible out-of-document mouseup.\n if (inEvent.which === 0 || !p) {\n e.buttons = 0;\n } else {\n e.buttons = p.buttons;\n }\n inEvent.buttons = e.buttons;\n },\n mousedown: function mousedown(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var p = pointermap.get(this.POINTER_ID);\n var e = this.prepareEvent(inEvent);\n if (!HAS_BUTTONS) {\n e.buttons = BUTTON_TO_BUTTONS[e.button];\n if (p) {\n e.buttons |= p.buttons;\n }\n inEvent.buttons = e.buttons;\n }\n pointermap.set(this.POINTER_ID, inEvent);\n if (!p || p.buttons === 0) {\n dispatcher.down(e);\n } else {\n dispatcher.move(e);\n }\n }\n },\n mousemove: function mousemove(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var e = this.prepareEvent(inEvent);\n if (!HAS_BUTTONS) {\n this.prepareButtonsForMove(e, inEvent);\n }\n e.button = -1;\n pointermap.set(this.POINTER_ID, inEvent);\n dispatcher.move(e);\n }\n },\n mouseup: function mouseup(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var p = pointermap.get(this.POINTER_ID);\n var e = this.prepareEvent(inEvent);\n if (!HAS_BUTTONS) {\n var up = BUTTON_TO_BUTTONS[e.button];\n\n // Produces wrong state of buttons in Browsers without `buttons` support\n // when a mouse button that was pressed outside the document is released\n // inside and other buttons are still pressed down.\n e.buttons = p ? p.buttons & ~up : 0;\n inEvent.buttons = e.buttons;\n }\n pointermap.set(this.POINTER_ID, inEvent);\n\n // Support: Firefox <=44 only\n // FF Ubuntu includes the lifted button in the `buttons` property on\n // mouseup.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1223366\n e.buttons &= ~BUTTON_TO_BUTTONS[e.button];\n if (e.buttons === 0) {\n dispatcher.up(e);\n } else {\n dispatcher.move(e);\n }\n }\n },\n mouseover: function mouseover(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var e = this.prepareEvent(inEvent);\n if (!HAS_BUTTONS) {\n this.prepareButtonsForMove(e, inEvent);\n }\n e.button = -1;\n pointermap.set(this.POINTER_ID, inEvent);\n dispatcher.enterOver(e);\n }\n },\n mouseout: function mouseout(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var e = this.prepareEvent(inEvent);\n if (!HAS_BUTTONS) {\n this.prepareButtonsForMove(e, inEvent);\n }\n e.button = -1;\n dispatcher.leaveOut(e);\n }\n },\n cancel: function cancel(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.cancel(e);\n this.deactivateMouse();\n },\n deactivateMouse: function deactivateMouse() {\n pointermap[\"delete\"](this.POINTER_ID);\n }\n };\n var captureInfo = dispatcher.captureInfo;\n var findTarget = targeting.findTarget.bind(targeting);\n var allShadows = targeting.allShadows.bind(targeting);\n var pointermap$1 = dispatcher.pointermap;\n\n // This should be long enough to ignore compat mouse events made by touch\n var DEDUP_TIMEOUT = 2500;\n var CLICK_COUNT_TIMEOUT = 200;\n var ATTRIB = 'touch-action';\n var INSTALLER;\n\n // handler block for native touch events\n var touchEvents = {\n events: ['touchstart', 'touchmove', 'touchend', 'touchcancel'],\n register: function register(target) {\n INSTALLER.enableOnSubtree(target);\n },\n unregister: function unregister() {\n\n // TODO(dfreedman): is it worth it to disconnect the MO?\n },\n elementAdded: function elementAdded(el) {\n var a = el.getAttribute(ATTRIB);\n var st = this.touchActionToScrollType(a);\n if (st) {\n el._scrollType = st;\n dispatcher.listen(el, this.events);\n\n // set touch-action on shadows as well\n allShadows(el).forEach(function (s) {\n s._scrollType = st;\n dispatcher.listen(s, this.events);\n }, this);\n }\n },\n elementRemoved: function elementRemoved(el) {\n el._scrollType = undefined;\n dispatcher.unlisten(el, this.events);\n\n // remove touch-action from shadow\n allShadows(el).forEach(function (s) {\n s._scrollType = undefined;\n dispatcher.unlisten(s, this.events);\n }, this);\n },\n elementChanged: function elementChanged(el, oldValue) {\n var a = el.getAttribute(ATTRIB);\n var st = this.touchActionToScrollType(a);\n var oldSt = this.touchActionToScrollType(oldValue);\n\n // simply update scrollType if listeners are already established\n if (st && oldSt) {\n el._scrollType = st;\n allShadows(el).forEach(function (s) {\n s._scrollType = st;\n }, this);\n } else if (oldSt) {\n this.elementRemoved(el);\n } else if (st) {\n this.elementAdded(el);\n }\n },\n scrollTypes: {\n EMITTER: 'none',\n XSCROLLER: 'pan-x',\n YSCROLLER: 'pan-y',\n SCROLLER: /^(?:pan-x pan-y)|(?:pan-y pan-x)|auto$/\n },\n touchActionToScrollType: function touchActionToScrollType(touchAction) {\n var t = touchAction;\n var st = this.scrollTypes;\n if (t === 'none') {\n return 'none';\n } else if (t === st.XSCROLLER) {\n return 'X';\n } else if (t === st.YSCROLLER) {\n return 'Y';\n } else if (st.SCROLLER.exec(t)) {\n return 'XY';\n }\n },\n POINTER_TYPE: 'touch',\n firstTouch: null,\n isPrimaryTouch: function isPrimaryTouch(inTouch) {\n return this.firstTouch === inTouch.identifier;\n },\n setPrimaryTouch: function setPrimaryTouch(inTouch) {\n // set primary touch if there no pointers, or the only pointer is the mouse\n if (pointermap$1.size === 0 || pointermap$1.size === 1 && pointermap$1.has(1)) {\n this.firstTouch = inTouch.identifier;\n this.firstXY = {\n X: inTouch.clientX,\n Y: inTouch.clientY\n };\n this.scrolling = false;\n this.cancelResetClickCount();\n }\n },\n removePrimaryPointer: function removePrimaryPointer(inPointer) {\n if (inPointer.isPrimary) {\n this.firstTouch = null;\n this.firstXY = null;\n this.resetClickCount();\n }\n },\n clickCount: 0,\n resetId: null,\n resetClickCount: function resetClickCount() {\n var fn = function () {\n this.clickCount = 0;\n this.resetId = null;\n }.bind(this);\n this.resetId = setTimeout(fn, CLICK_COUNT_TIMEOUT);\n },\n cancelResetClickCount: function cancelResetClickCount() {\n if (this.resetId) {\n clearTimeout(this.resetId);\n }\n },\n typeToButtons: function typeToButtons(type) {\n var ret = 0;\n if (type === 'touchstart' || type === 'touchmove') {\n ret = 1;\n }\n return ret;\n },\n touchToPointer: function touchToPointer(inTouch) {\n var cte = this.currentTouchEvent;\n var e = dispatcher.cloneEvent(inTouch);\n\n // We reserve pointerId 1 for Mouse.\n // Touch identifiers can start at 0.\n // Add 2 to the touch identifier for compatibility.\n var id = e.pointerId = inTouch.identifier + 2;\n e.target = captureInfo[id] || findTarget(e);\n e.bubbles = true;\n e.cancelable = true;\n e.detail = this.clickCount;\n e.button = 0;\n e.buttons = this.typeToButtons(cte.type);\n e.width = (inTouch.radiusX || inTouch.webkitRadiusX || 0) * 2;\n e.height = (inTouch.radiusY || inTouch.webkitRadiusY || 0) * 2;\n e.pressure = inTouch.force || inTouch.webkitForce || 0.5;\n e.isPrimary = this.isPrimaryTouch(inTouch);\n e.pointerType = this.POINTER_TYPE;\n\n // forward modifier keys\n e.altKey = cte.altKey;\n e.ctrlKey = cte.ctrlKey;\n e.metaKey = cte.metaKey;\n e.shiftKey = cte.shiftKey;\n\n // forward touch preventDefaults\n var self = this;\n e.preventDefault = function () {\n self.scrolling = false;\n self.firstXY = null;\n cte.preventDefault();\n };\n return e;\n },\n processTouches: function processTouches(inEvent, inFunction) {\n var tl = inEvent.changedTouches;\n this.currentTouchEvent = inEvent;\n for (var i = 0, t; i < tl.length; i++) {\n t = tl[i];\n inFunction.call(this, this.touchToPointer(t));\n }\n },\n // For single axis scrollers, determines whether the element should emit\n // pointer events or behave as a scroller\n shouldScroll: function shouldScroll(inEvent) {\n if (this.firstXY) {\n var ret;\n var scrollAxis = inEvent.currentTarget._scrollType;\n if (scrollAxis === 'none') {\n // this element is a touch-action: none, should never scroll\n ret = false;\n } else if (scrollAxis === 'XY') {\n // this element should always scroll\n ret = true;\n } else {\n var t = inEvent.changedTouches[0];\n\n // check the intended scroll axis, and other axis\n var a = scrollAxis;\n var oa = scrollAxis === 'Y' ? 'X' : 'Y';\n var da = Math.abs(t['client' + a] - this.firstXY[a]);\n var doa = Math.abs(t['client' + oa] - this.firstXY[oa]);\n\n // if delta in the scroll axis > delta other axis, scroll instead of\n // making events\n ret = da >= doa;\n }\n this.firstXY = null;\n return ret;\n }\n },\n findTouch: function findTouch(inTL, inId) {\n for (var i = 0, l = inTL.length, t; i < l && (t = inTL[i]); i++) {\n if (t.identifier === inId) {\n return true;\n }\n }\n },\n // In some instances, a touchstart can happen without a touchend. This\n // leaves the pointermap in a broken state.\n // Therefore, on every touchstart, we remove the touches that did not fire a\n // touchend event.\n // To keep state globally consistent, we fire a\n // pointercancel for this \"abandoned\" touch\n vacuumTouches: function vacuumTouches(inEvent) {\n var tl = inEvent.touches;\n\n // pointermap.size should be < tl.length here, as the touchstart has not\n // been processed yet.\n if (pointermap$1.size >= tl.length) {\n var d = [];\n pointermap$1.forEach(function (value, key) {\n // Never remove pointerId == 1, which is mouse.\n // Touch identifiers are 2 smaller than their pointerId, which is the\n // index in pointermap.\n if (key !== 1 && !this.findTouch(tl, key - 2)) {\n var p = value.out;\n d.push(p);\n }\n }, this);\n d.forEach(this.cancelOut, this);\n }\n },\n touchstart: function touchstart(inEvent) {\n this.vacuumTouches(inEvent);\n this.setPrimaryTouch(inEvent.changedTouches[0]);\n this.dedupSynthMouse(inEvent);\n if (!this.scrolling) {\n this.clickCount++;\n this.processTouches(inEvent, this.overDown);\n }\n },\n overDown: function overDown(inPointer) {\n pointermap$1.set(inPointer.pointerId, {\n target: inPointer.target,\n out: inPointer,\n outTarget: inPointer.target\n });\n dispatcher.enterOver(inPointer);\n dispatcher.down(inPointer);\n },\n touchmove: function touchmove(inEvent) {\n if (!this.scrolling) {\n if (this.shouldScroll(inEvent)) {\n this.scrolling = true;\n this.touchcancel(inEvent);\n } else {\n inEvent.preventDefault();\n this.processTouches(inEvent, this.moveOverOut);\n }\n }\n },\n moveOverOut: function moveOverOut(inPointer) {\n var event = inPointer;\n var pointer = pointermap$1.get(event.pointerId);\n\n // a finger drifted off the screen, ignore it\n if (!pointer) {\n return;\n }\n var outEvent = pointer.out;\n var outTarget = pointer.outTarget;\n dispatcher.move(event);\n if (outEvent && outTarget !== event.target) {\n outEvent.relatedTarget = event.target;\n event.relatedTarget = outTarget;\n\n // recover from retargeting by shadow\n outEvent.target = outTarget;\n if (event.target) {\n dispatcher.leaveOut(outEvent);\n dispatcher.enterOver(event);\n } else {\n // clean up case when finger leaves the screen\n event.target = outTarget;\n event.relatedTarget = null;\n this.cancelOut(event);\n }\n }\n pointer.out = event;\n pointer.outTarget = event.target;\n },\n touchend: function touchend(inEvent) {\n this.dedupSynthMouse(inEvent);\n this.processTouches(inEvent, this.upOut);\n },\n upOut: function upOut(inPointer) {\n if (!this.scrolling) {\n dispatcher.up(inPointer);\n dispatcher.leaveOut(inPointer);\n }\n this.cleanUpPointer(inPointer);\n },\n touchcancel: function touchcancel(inEvent) {\n this.processTouches(inEvent, this.cancelOut);\n },\n cancelOut: function cancelOut(inPointer) {\n dispatcher.cancel(inPointer);\n dispatcher.leaveOut(inPointer);\n this.cleanUpPointer(inPointer);\n },\n cleanUpPointer: function cleanUpPointer(inPointer) {\n pointermap$1[\"delete\"](inPointer.pointerId);\n this.removePrimaryPointer(inPointer);\n },\n // prevent synth mouse events from creating pointer events\n dedupSynthMouse: function dedupSynthMouse(inEvent) {\n var lts = mouseEvents.lastTouches;\n var t = inEvent.changedTouches[0];\n\n // only the primary finger will synth mouse events\n if (this.isPrimaryTouch(t)) {\n // remember x/y of last touch\n var lt = {\n x: t.clientX,\n y: t.clientY\n };\n lts.push(lt);\n var fn = function (lts, lt) {\n var i = lts.indexOf(lt);\n if (i > -1) {\n lts.splice(i, 1);\n }\n }.bind(null, lts, lt);\n setTimeout(fn, DEDUP_TIMEOUT);\n }\n }\n };\n INSTALLER = new Installer(touchEvents.elementAdded, touchEvents.elementRemoved, touchEvents.elementChanged, touchEvents);\n var pointermap$2 = dispatcher.pointermap;\n var HAS_BITMAP_TYPE = window.MSPointerEvent && typeof window.MSPointerEvent.MSPOINTER_TYPE_MOUSE === 'number';\n var msEvents = {\n events: ['MSPointerDown', 'MSPointerMove', 'MSPointerUp', 'MSPointerOut', 'MSPointerOver', 'MSPointerCancel', 'MSGotPointerCapture', 'MSLostPointerCapture'],\n register: function register(target) {\n dispatcher.listen(target, this.events);\n },\n unregister: function unregister(target) {\n dispatcher.unlisten(target, this.events);\n },\n POINTER_TYPES: ['', 'unavailable', 'touch', 'pen', 'mouse'],\n prepareEvent: function prepareEvent(inEvent) {\n var e = inEvent;\n if (HAS_BITMAP_TYPE) {\n e = dispatcher.cloneEvent(inEvent);\n e.pointerType = this.POINTER_TYPES[inEvent.pointerType];\n }\n return e;\n },\n cleanup: function cleanup(id) {\n pointermap$2[\"delete\"](id);\n },\n MSPointerDown: function MSPointerDown(inEvent) {\n pointermap$2.set(inEvent.pointerId, inEvent);\n var e = this.prepareEvent(inEvent);\n dispatcher.down(e);\n },\n MSPointerMove: function MSPointerMove(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.move(e);\n },\n MSPointerUp: function MSPointerUp(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.up(e);\n this.cleanup(inEvent.pointerId);\n },\n MSPointerOut: function MSPointerOut(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.leaveOut(e);\n },\n MSPointerOver: function MSPointerOver(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.enterOver(e);\n },\n MSPointerCancel: function MSPointerCancel(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.cancel(e);\n this.cleanup(inEvent.pointerId);\n },\n MSLostPointerCapture: function MSLostPointerCapture(inEvent) {\n var e = dispatcher.makeEvent('lostpointercapture', inEvent);\n dispatcher.dispatchEvent(e);\n },\n MSGotPointerCapture: function MSGotPointerCapture(inEvent) {\n var e = dispatcher.makeEvent('gotpointercapture', inEvent);\n dispatcher.dispatchEvent(e);\n }\n };\n function applyPolyfill() {\n // only activate if this platform does not have pointer events\n if (!window.PointerEvent) {\n window.PointerEvent = PointerEvent;\n if (window.navigator.msPointerEnabled) {\n var tp = window.navigator.msMaxTouchPoints;\n Object.defineProperty(window.navigator, 'maxTouchPoints', {\n value: tp,\n enumerable: true\n });\n dispatcher.registerSource('ms', msEvents);\n } else {\n Object.defineProperty(window.navigator, 'maxTouchPoints', {\n value: 0,\n enumerable: true\n });\n dispatcher.registerSource('mouse', mouseEvents);\n if (window.ontouchstart !== undefined) {\n dispatcher.registerSource('touch', touchEvents);\n }\n }\n dispatcher.register(document);\n }\n }\n var n = window.navigator;\n var s;\n var r;\n var h;\n function assertActive(id) {\n if (!dispatcher.pointermap.has(id)) {\n var error = new Error('InvalidPointerId');\n error.name = 'InvalidPointerId';\n throw error;\n }\n }\n function assertConnected(elem) {\n var parent = elem.parentNode;\n while (parent && parent !== elem.ownerDocument) {\n parent = parent.parentNode;\n }\n if (!parent) {\n var error = new Error('InvalidStateError');\n error.name = 'InvalidStateError';\n throw error;\n }\n }\n function inActiveButtonState(id) {\n var p = dispatcher.pointermap.get(id);\n return p.buttons !== 0;\n }\n if (n.msPointerEnabled) {\n s = function s(pointerId) {\n assertActive(pointerId);\n assertConnected(this);\n if (inActiveButtonState(pointerId)) {\n dispatcher.setCapture(pointerId, this, true);\n this.msSetPointerCapture(pointerId);\n }\n };\n r = function r(pointerId) {\n assertActive(pointerId);\n dispatcher.releaseCapture(pointerId, true);\n this.msReleasePointerCapture(pointerId);\n };\n } else {\n s = function setPointerCapture(pointerId) {\n assertActive(pointerId);\n assertConnected(this);\n if (inActiveButtonState(pointerId)) {\n dispatcher.setCapture(pointerId, this);\n }\n };\n r = function releasePointerCapture(pointerId) {\n assertActive(pointerId);\n dispatcher.releaseCapture(pointerId);\n };\n }\n h = function hasPointerCapture(pointerId) {\n return !!dispatcher.captureInfo[pointerId];\n };\n function applyPolyfill$1() {\n if (window.Element && !Element.prototype.setPointerCapture) {\n Object.defineProperties(Element.prototype, {\n 'setPointerCapture': {\n value: s\n },\n 'releasePointerCapture': {\n value: r\n },\n 'hasPointerCapture': {\n value: h\n }\n });\n }\n }\n applyAttributeStyles();\n applyPolyfill();\n applyPolyfill$1();\n var pointerevents = {\n dispatcher: dispatcher,\n Installer: Installer,\n PointerEvent: PointerEvent,\n PointerMap: PointerMap,\n targetFinding: targeting\n };\n return pointerevents;\n });\n})(pep);\n\n// external smart player events (value casing matters to maintain backward capability)\nvar _videoStartInitiated = 'VIDEO_START_INITIATED';\nvar _videoStart = 'VIDEO_START';\nvar _mediaReady = 'MEDIA_READY';\nvar _captionChange = 'CAPTION_CHANGE';\nvar _ready = 'READY';\nvar _videoPlayEvent = 'VIDEO_PLAY';\nvar _playerFullScreenModeChanged = 'PLAYER_FULL_SCREEN_MODE_CHANGED';\nvar _playerRumData = 'PLAYER_RUM_DATA';\nvar _videoEnd = 'tscspVideoEnd';\nvar _videoReplay = 'tscspVideoReplay';\nvar _externalMediaError = 'tscspMediaError';\nvar _playerSettingsOpenEvent = 'tscspPlayerSettingsOpen';\nvar _playerSettingsCloseEvent = 'tscspPlayerSettingsClose';\nvar _playerControlsHiddenEvent = 'tscspPlayerControlsHiddenEvent';\nvar _playerControlsVisibleEvent = 'tscspPlayerControlsVisibleEvent';\nvar _externalPlayerResize = 'tscspPlayerResize';\nvar _heroControlHidden = 'tscspHeroControlHidden';\nvar _imagePointerOver = 'tscspImagePointerOver';\nvar _imagePointerLeave = 'tscspImagePointerLeave';\nvar _displayModeChanged = 'tscspDisplayModeChanged';\nvar _captionsHidden = 'tscspCaptionsHidden';\nvar _captionsVisible = 'tscspCaptionsVisible';\nvar _captionsReady = 'tscspCaptionsReady';\n// this is the overload to set up a listener for the playerConfiguration.useCustomEventTracking related to analytics. this event will fire the handler for several\n// when they would normally trigger internally (i.e. 'Video_Started', 'Video_Replay', 'Video_Loading_Time', 'Video_Finished', others?)\n// the event will trigger with the related event name and data formatted for older version google-analytics events\nvar _googleAnalyticsCustomEvent = 'gacustomevents'; // deprecated\nvar _analyticsEvent = 'analyticsEvent';\nvar _googleAnalytics4Event = 'ga4event';\n\n// external smart player html5 events\n// these events are bubbled up from the html5 video element and _most_ are simulated by the youtube player in our code\nvar _videoLoadStart = 'loadstart';\nvar _videoLoadedMetadata = 'loadedmetadata';\nvar _videoLoadedData = 'loadeddata';\nvar _externalVideoCanPlay = 'canplay';\nvar _videoCanPlayThrough = 'canplaythrough';\nvar _videoPlaying = 'playing';\nvar _videoWaiting = 'waiting';\nvar _videoSeeking = 'seeking';\nvar _videoSeeked = 'seeked';\nvar _videoEnded = 'ended';\nvar _videoPlay = 'play';\nvar _videoPause = 'pause';\nvar _videoResize = 'resize';\nvar _videoError = 'error';\nvar _videoVolumeChange = 'volumechange';\nvar _videoDurationChange = 'durationchange';\nvar _videoRateChange = 'ratechange';\nvar _videoTimeUpdate = 'timeupdate';\nvar _videoProgress = 'progress';\nvar _initializeCurrent = 'initializecurrent';\nvar _sourceChanged = 'sourcechanged';\nvar _tryToAutoPlay = 'tscspTryToAutoPlay';\nvar _firstPlay = 'tscspFirstPlayer';\nvar _videoSuspend = 'suspend';\nvar _videoAbort = 'abort';\nvar _videoEmptied = 'emptied';\nvar _videoStalled = 'stalled';\n\n// Player Events\nvar _mediaControlsReady = 'tscspMediaControlsReady';\nvar _mediaExtensionsReady = 'tscspMediaExtensionsReady';\n\n// Control Events\nvar _clickPrevControl = 'tscspClickPrevControl';\nvar _clickNextControl = 'tscspClickNextControl';\nvar _toggleFullScreen = 'tscspToggleFullScreen';\nvar _fullScreenChange = 'tscspFullScreenChange';\nvar _expandVideo = 'tscspExpandVideo';\nvar _showToc = 'tscspShowToc';\nvar _hideToc = 'tscspHideToc';\nvar _tocScroll = 'tscspTocScroll';\nvar _disableControls$1 = 'tscspDisableControls';\nvar _enableControls = 'tscspEnableControls';\nvar _controlsUpdated = 'tscspControlsUpdated';\nvar _pipChanged = 'tscspPipChange';\nvar _theaterModeChanged = 'tscspTheaterModeChange';\nvar _playerResize = 'tscspPlayerResize';\nvar _mediaResize = 'tscspMediaResize';\nvar _controlsPlayerInitialized = 'tscspPlayerInitialized';\nvar _showVideoBufferingView = 'tscspShowVideoBufferingView';\nvar _hideVideoBufferingView = 'tscspHideVideoBufferingView';\nvar _switchToFullscreen = 'tscspSwitchToFullscreen';\nvar _exitFullscreen = 'tscspExitFullscreen';\nvar _videoControlsHidden = 'tscspVideoControlsHidden';\nvar _hideVideoControls = 'tscspHideVideoControls';\nvar _videoControlsVisible = 'tscspVideoControlsHVisible';\nvar _showVideoControls = 'tscspShowVideoControls';\nvar _displayCaptionControl = 'tscspDisplayCaptionControl';\nvar _displayTocControl = 'tscspDisplayTocControl';\nvar _tocDisplayToggled = 'tscspTocDisplayToggled';\nvar _focusTocButton = 'tscspFocusTocButton';\nvar _heroPlayControlClicked = 'tscspHeroPlayControlClicked';\nvar _heroPlayControlVisible = 'tscspHeroPlayControlVisible';\nvar _heroPlayControlHidden = 'tscspHeroPlayControlHidden';\nvar _replayControlVisible = 'tscspReplayControlVisible';\nvar _replayControlHidden = 'tscspReplayControlHidden';\nvar _startedPlayback = 'tscspStartedPlayback';\nvar _hideIOOverlay = 'tscspHideIOOverlay';\nvar _searchFocusChange = 'tscspSearchFocusChange';\nvar _hideLoadingMessage = 'tscspHideLoadingMessage';\nvar _playerSettingsOpen = 'tscspPlayerSettingsOpen';\nvar _playerSettingsClose = 'tscspPlayerSettingsClose';\n\n// Media Element Events\nvar _seekMediaToTime = 'tscspSeekMediaToTime';\nvar _replayMedia = 'tscspReplayMedia';\nvar _endMedia = 'tscspEndMedia';\nvar _setVolume = 'tscspSetVolume';\nvar _setMutedState = 'tscspSetMutedState';\nvar _setPlaybackRate = 'tscspSetPlaybackRate';\nvar _mediaError = 'tscspMediaError';\n\n// IFrame Events\nvar _enterFullFrame = 'ENTER-FULLFRAME';\nvar _exitFullFrame = 'EXIT-FULLFRAME';\n\n// Update Events\nvar _updateQuizMarkers = 'tscspUpdateQuizMarkers';\nvar _updatePlayProgress = 'tscspUpdatePlayProgress';\nvar _updateLoadProgress = 'tscspUpdateLoadProgress';\nvar _updateNextQuestionPos = 'tscspUpdateNextQuestionXPos';\n\n// Scrubbing Events\nvar _startedScrubbing = 'tscspStartedScrubbing';\nvar _endedScrubbing = 'tscspEndedScrubbing';\n\n// Quiz Events\nvar _quizSetupComplete = 'tscspQuizSetupComplete';\nvar _quizPaused = 'tscspMediaPaused';\nvar _quizComplete = 'tscspQuizComplete';\nvar _quizReview = 'tscspQuizReview';\nvar _quizBegin = 'tscspQuizBegin';\nvar _quizBeginClicked = 'tscspQuizBeginClicked';\nvar _quizSkip = 'tscspQuizSkip';\nvar _quizSkipClicked = 'tscspSkipQuizClicked';\nvar _quizError = 'tscspQuizError';\nvar _quizStatus = 'tscspQuizStatus';\nvar _quizSubmittingInstance = 'tscspSubmittingInstance';\nvar _quizCreatedInstance = 'tscspCreatedInstance';\nvar _quizSubmitted = 'tscspQuizSubmitted';\nvar _quizShowSubmissionRetryMessage = 'tscspQuizShowSubmissionRetryMessage';\nvar _quizHideSubmissionRetryMessage = 'tscspQuizHideSubmissionRetryMessage';\nvar _quizHideLoadingMessage = 'tscspQuizHideLoadingMessage';\nvar _transitionImageQuizToAnswers = 'tscspTransitionImageQuizToAnswers';\nvar _hideQuiz = 'tscspHideQuiz';\nvar _showQuizBar = 'tscspShowQuizBar';\nvar _showStartQuizPrompt = 'tscspShowStartQuizPrompt';\nvar _showQuizSetup = 'tscspShowQuizSetup';\nvar _hideStartQuizPrompt = 'tscspHideStartQuizPrompt';\nvar _showQuestionSetView = 'tscspShowQuestionSetView';\nvar _closeQuestionSetView = 'tscspCloseQuestionSetView';\nvar _submitQuestionSet = 'tscspSubmitQuestionSet';\nvar _rationaleActionLocation = 'tscspRationaleActionLocation';\nvar _rationaleActionJumpToTime = 'tscspRationaleActionJumpToTime';\nvar _quizIsOutOfDate = 'tscspQuizIsOutOfDate';\nvar _quizBadDefinition = 'tscspQuizBadDefinition';\nvar _quizVisible = 'tscspQuizVisible';\nvar _quizHidden = 'tscspQuizHidden';\nvar _minimizeQuizUI = 'tscspMinimizeQuizUI';\nvar _maximizeQuizUI = 'tscspMaximizeQuizUI';\nvar _quizUIVisible = 'tscspQuizUIVisible';\nvar _quizUIHidden = 'tscspQuizUIHidden';\n\n// Captions\nvar _captionsToggled = 'tscpCaptionsToggled';\nvar _stateLoaded = 'tscpCaptionsStateLoaded';\nvar _captionsChanged = 'tscspCaptionChanged';\nvar _captionsLanguageChanged = 'tscspLanguageChanged';\nvar _captionsDragStart = 'tscspCaptionsDragStart';\nvar _captionsDragEnd = 'tscspCaptionsDragEnd';\nvar _captionsResized = 'tscspCaptionsResized';\n\n// Caption Service\nvar _newCaptionTrack = 'tscspNewCaptionTrack';\n\n// Audio Description\nvar _audioDescriptionChanged = 'tscspAudioDescriptionChanged';\nvar _audioDescriptionFailed = 'tscspAudioDescriptionFailed';\n\n// Hotspots\nvar _hotspotPaused = 'tscspHotspotPaused';\nvar _hotspotResume = 'tscspHotspotResume';\nvar _hotspotClicked = 'tscspHotspotClicked';\nvar _hotspotAreaActive = 'tscspHotspotAreaActive';\nvar _hotspotAreaInactive = 'tscspHotspotAreaInactive';\n\n// Modals\nvar _modalOpen = 'tscspModalOpen';\nvar _modalClosed = 'tscspModalClosed';\n\n//Timing\nvar _smartPlayerInitialized = 'smart_player_initialized';\nvar _smartPlayerLoaded = 'smart_player_loaded';\nvar _videoMetadataLoaded = 'video_metadata_loaded';\nvar _videoLoadedDataTiming = 'video_loaded_data';\nvar _videoCanPlay = 'video_can_play';\nvar _videoHasEnoughData = 'video_has_enough_data';\n\n// Analytics\nvar _analyticsVideoStarted = 'Video_Started';\nvar _analyticsContentLoaded = 'Content_Loaded';\nvar _analyticsVideoPercentViewed = 'Video_Percent_Viewed';\nvar _analyticsVideoFinishedAction = 'Video_Finished_Action';\nvar _analyticsVideoFinished = 'Video_Finished';\nvar _analyticsVideoReplay = 'Video_Replay';\nvar _analyticsVideoLoadingTimeInSeconds = 'Video_Loading_Time_In_Seconds';\nvar _analyticsVideoLoadingTime = 'Video_Loading_Time';\nvar _analyticsOpenExternalLinkView = 'Open_External_Link_View';\nvar _analyticsOpenExternalLinkClick = 'Open_External_Link_Click';\nvar _analyticsHotspotAction = 'Hotspot_Action';\nvar _analyticsVideoCouldNotPlaySmoothlyIn20Secs = 'Could_Not_Play_Smoothly_In_20_Secs';\nvar _analyticsVideoPlaybackWasStoppedToBuffer = 'Video_Stopped_To_Buffer';\n\n// GA4 Analytics\nvar _ga4VideoStarted = 'video_started';\nvar _ga4PlayerInitialized = 'player_initialized';\nvar _ga4VideoLoadingTimeInSeconds = 'video_loading_time_secs';\nvar _ga4VideoLoadingTime = 'video_loading_time';\nvar _ga4VideoPercentViewed = 'video_percent_viewed';\nvar _ga4VideoFinishedAction = 'video_finished_action';\nvar _ga4VideoFinished = 'video_finished';\nvar _ga4VideoReplay = 'video_replayed';\nvar _ga4OpenExternalLinkView = 'open_external_link_view';\nvar _ga4OpenExternalLinkClick = 'open_external_link_click';\nvar _ga4HotspotAction = 'hotspot_open_url_action';\nvar _ga4VideoCouldNotPlaySmoothlyIn20Secs = 'bad_playback_twenty_secs';\nvar _ga4VideoPlaybackWasStoppedToBuffer = 'video_stopped_to_buffer';\n\n// Plugins\nvar _pluginAdded = 'pluginAdded';\nvar _mediaAreaPluginMouseDown = 'mediaAreaPluginMouseDown';\nvar _mediaAreaPluginMouseUp = 'mediaAreaPluginMouseUp';\nvar _mediaAreaPluginKeyDown = 'mediaAreaPluginKeyDown';\nvar _mediaAreaPluginKeyUp = 'mediaAreaPluginKeyUp';\n\n// Network\nvar _retryingRequest = 'retryingRequest';\n\n// Fathom\nvar _fathomGetComplete = 'GET_COMPLETE';\nvar _fathomError = 'ERROR';\n\n// External link view\nvar _openUrlViewOpened = 'tscspExternalUrlViewOpen';\nvar _openUrlViewClosed = 'tscspExternalUrlViewClosed';\nvar _openUrlViewClicked = 'tscspExternalUrlViewClick';\n\n// SCORM\nvar _exitScormSession = 'tscspExitScormSession';\nvar _exitScormSessionConfirmed = 'tscspExitScormSessionConfirmed';\nvar _exitScormSessionWithOutProgressConfirmed = 'tscspExitScormSessionWithOutProgressConfirmed';\nvar _resumeScormSession = 'tscspScormSession';\nvar _failedToFindApi = 'tscspScormFailedToFindApi';\n\n// Images\nvar _imagesPointerOver = 'tscspImagesPointerOver';\nvar _imagesPointerLeave = 'tscspImagesPointerLeave';\nvar events = Object.freeze({\n External: {\n VideoStartInitiated: _videoStartInitiated,\n VideoStart: _videoStart,\n VideoEnd: _videoEnd,\n VideoReplay: _videoReplay,\n MediaError: _externalMediaError,\n MediaReady: _mediaReady,\n CaptionChange: _captionChange,\n Ready: _ready,\n VideoPlay: _videoPlayEvent,\n PlayerFullScreenModeChanged: _playerFullScreenModeChanged,\n PlayerRumData: _playerRumData,\n GoogleAnalyticsCustomEvent: _googleAnalyticsCustomEvent,\n AnalyticsEvent: _analyticsEvent,\n GoogleAnalytics4Event: _googleAnalytics4Event,\n QuizVisible: _quizVisible,\n QuizHidden: _quizHidden,\n ShowStartQuizPrompt: _showStartQuizPrompt,\n HideStartQuizPrompt: _hideStartQuizPrompt,\n SwitchToFullscreen: _switchToFullscreen,\n ExitFullscreen: _exitFullscreen,\n PlayerSettingsOpen: _playerSettingsOpenEvent,\n PlayerSettingsClose: _playerSettingsCloseEvent,\n PlayerControlsHidden: _playerControlsHiddenEvent,\n PlayerControlsVisible: _playerControlsVisibleEvent,\n PlayerResize: _externalPlayerResize,\n HeroControlHidden: _heroControlHidden,\n ImagePointerOver: _imagePointerOver,\n ImagePointerLeave: _imagePointerLeave,\n DisplayModeChanged: _displayModeChanged,\n CaptionsHidden: _captionsHidden,\n CaptionsVisible: _captionsVisible,\n CaptionsReady: _captionsReady\n },\n ExternalVideo: {\n VideoLoadStart: _videoLoadStart,\n VideoLoadedMetadata: _videoLoadedMetadata,\n VideoLoadedData: _videoLoadedData,\n VideoCanPlay: _externalVideoCanPlay,\n VideoCanPlayThrough: _videoCanPlayThrough,\n VideoPlaying: _videoPlaying,\n VideoWaiting: _videoWaiting,\n VideoSeeking: _videoSeeking,\n VideoSeeked: _videoSeeked,\n VideoEnded: _videoEnded,\n VideoPlay: _videoPlay,\n VideoPause: _videoPause,\n VideoResize: _videoResize,\n VideoError: _videoError,\n VideoVolumeChange: _videoVolumeChange,\n VideoDurationChange: _videoDurationChange,\n VideoRateChange: _videoRateChange,\n VideoTimeUpdate: _videoTimeUpdate,\n VideoProgress: _videoProgress\n },\n Player: {\n MediaControlsReady: _mediaControlsReady,\n MediaExtensionsReady: _mediaExtensionsReady\n },\n Controls: {\n ClickPrev: _clickPrevControl,\n ClickNext: _clickNextControl,\n FullScreenChange: _fullScreenChange,\n ToggleFullScreen: _toggleFullScreen,\n ExpandVideo: _expandVideo,\n ShowToc: _showToc,\n HideToc: _hideToc,\n TocScroll: _tocScroll,\n Disable: _disableControls$1,\n Enable: _enableControls,\n Updated: _controlsUpdated,\n HotspotClicked: _hotspotClicked,\n PipChanged: _pipChanged,\n TheaterModeChanged: _theaterModeChanged,\n PlayerResize: _playerResize,\n MediaResize: _mediaResize,\n PlayerInitialized: _controlsPlayerInitialized,\n ShowVideoBufferingView: _showVideoBufferingView,\n HideVideoBufferingView: _hideVideoBufferingView,\n VideoControlsHidden: _videoControlsHidden,\n HideVideoControls: _hideVideoControls,\n VideoControlsVisible: _videoControlsVisible,\n ShowVideoControls: _showVideoControls,\n DisplayCaptionControl: _displayCaptionControl,\n DisplayTocControl: _displayTocControl,\n TocDisplayToggled: _tocDisplayToggled,\n FocusTocButton: _focusTocButton,\n HeroPlayControlClicked: _heroPlayControlClicked,\n HeroPlayControlVisible: _heroPlayControlVisible,\n HeroPlayControlHidden: _heroPlayControlHidden,\n ReplayControlVisible: _replayControlVisible,\n ReplayControlHidden: _replayControlHidden,\n StartedPlayback: _startedPlayback,\n HideIOOverlay: _hideIOOverlay,\n SearchFocusChange: _searchFocusChange,\n HideLoadingMessage: _hideLoadingMessage,\n PlayerSettingsOpen: _playerSettingsOpen,\n PlayerSettingsClose: _playerSettingsClose\n },\n Hotspots: {\n Paused: _hotspotPaused,\n Resume: _hotspotResume,\n AreaActive: _hotspotAreaActive,\n AreaInactive: _hotspotAreaInactive\n },\n Media: {\n Play: _videoPlay,\n Playing: _videoPlaying,\n Pause: _videoPause,\n SeekToTime: _seekMediaToTime,\n Replay: _replayMedia,\n End: _endMedia,\n Abort: _videoAbort,\n Suspend: _videoSuspend,\n Emptied: _videoEmptied,\n Stalled: _videoStalled,\n Progress: _videoProgress,\n InitializeCurrent: _initializeCurrent,\n SourceChanged: _sourceChanged,\n TryToAutoPlay: _tryToAutoPlay,\n SetVolume: _setVolume,\n SetMutedState: _setMutedState,\n SetPlaybackRate: _setPlaybackRate,\n FirstPlay: _firstPlay,\n Error: _mediaError\n },\n IFrame: {\n EnterFullFrame: _enterFullFrame,\n ExitFullFrame: _exitFullFrame\n },\n Update: {\n QuizMarkers: _updateQuizMarkers,\n PlayProgress: _updatePlayProgress,\n LoadProgress: _updateLoadProgress,\n NextQuestionPosition: _updateNextQuestionPos\n },\n Scrubbing: {\n Started: _startedScrubbing,\n Ended: _endedScrubbing\n },\n Quizzing: {\n QuizSetupComplete: _quizSetupComplete,\n Paused: _quizPaused,\n Complete: _quizComplete,\n Review: _quizReview,\n Begin: _quizBegin,\n BeginClicked: _quizBeginClicked,\n Skip: _quizSkip,\n SkipClicked: _quizSkipClicked,\n Error: _quizError,\n Status: _quizStatus,\n SubmittingInstance: _quizSubmittingInstance,\n CreatedInstance: _quizCreatedInstance,\n Submitted: _quizSubmitted,\n ShowSubmissionRetryMessage: _quizShowSubmissionRetryMessage,\n HideSubmissionRetryMessage: _quizHideSubmissionRetryMessage,\n HideLoadingMessage: _quizHideLoadingMessage,\n TransitionImageQuizToAnswers: _transitionImageQuizToAnswers,\n HideQuiz: _hideQuiz,\n ShowQuizBar: _showQuizBar,\n ShowStartQuizPrompt: _showStartQuizPrompt,\n ShowQuizSetup: _showQuizSetup,\n ShowQuestionSetView: _showQuestionSetView,\n CloseQuestionSetView: _closeQuestionSetView,\n SubmitQuestionSet: _submitQuestionSet,\n RationaleActionLocation: _rationaleActionLocation,\n RationaleActionJumpToTime: _rationaleActionJumpToTime,\n QuizIsOutOfDate: _quizIsOutOfDate,\n QuizBadDefinition: _quizBadDefinition,\n MinimizeUI: _minimizeQuizUI,\n MaximizeUI: _maximizeQuizUI,\n UIVisible: _quizUIVisible,\n UIHidden: _quizUIHidden\n },\n Captions: {\n Toggled: _captionsToggled,\n StateLoaded: _stateLoaded,\n Changed: _captionsChanged,\n LanguageChanged: _captionsLanguageChanged,\n DragStart: _captionsDragStart,\n DragEnd: _captionsDragEnd,\n Resized: _captionsResized\n },\n CaptionService: {\n NewCaptionTrack: _newCaptionTrack\n },\n AudioDescription: {\n Changed: _audioDescriptionChanged,\n Failed: _audioDescriptionFailed\n },\n Timing: {\n PlayerInitialized: _smartPlayerInitialized,\n PlayerLoaded: _smartPlayerLoaded,\n VideoMetadataLoaded: _videoMetadataLoaded,\n VideoLoadedData: _videoLoadedDataTiming,\n VideoCanPlay: _videoCanPlay,\n VideoHasEnoughData: _videoHasEnoughData\n },\n GA4: {\n PlayerInitialized: _ga4PlayerInitialized,\n VideoStarted: _ga4VideoStarted,\n VideoLoadingTimeInSeconds: _ga4VideoLoadingTimeInSeconds,\n VideoLoadingTime: _ga4VideoLoadingTime,\n VideoPercentViewed: _ga4VideoPercentViewed,\n VideoFinishedAction: _ga4VideoFinishedAction,\n VideoFinished: _ga4VideoFinished,\n VideoReplay: _ga4VideoReplay,\n OpenExternalLinkView: _ga4OpenExternalLinkView,\n OpenExternalLinkClick: _ga4OpenExternalLinkClick,\n HotspotAction: _ga4HotspotAction,\n CouldNotPlaySmoothlyIn20Secs: _ga4VideoCouldNotPlaySmoothlyIn20Secs,\n PlaybackWasStoppedToBuffer: _ga4VideoPlaybackWasStoppedToBuffer\n },\n Analytics: {\n VideoStarted: _analyticsVideoStarted,\n ContentLoaded: _analyticsContentLoaded,\n VideoPercentViewed: _analyticsVideoPercentViewed,\n VideoFinishedAction: _analyticsVideoFinishedAction,\n VideoFinished: _analyticsVideoFinished,\n VideoReplay: _analyticsVideoReplay,\n VideoLoadingTimeInSeconds: _analyticsVideoLoadingTimeInSeconds,\n VideoLoadingTime: _analyticsVideoLoadingTime,\n OpenExternalLinkView: _analyticsOpenExternalLinkView,\n OpenExternalLinkClick: _analyticsOpenExternalLinkClick,\n HotspotAction: _analyticsHotspotAction,\n CouldNotPlaySmoothlyIn20Secs: _analyticsVideoCouldNotPlaySmoothlyIn20Secs,\n PlaybackWasStoppedToBuffer: _analyticsVideoPlaybackWasStoppedToBuffer\n },\n Plugin: {\n Added: _pluginAdded,\n MediaAreaPluginMouseDown: _mediaAreaPluginMouseDown,\n MediaAreaPluginMouseUp: _mediaAreaPluginMouseUp,\n MediaAreaPluginKeyDown: _mediaAreaPluginKeyDown,\n MediaAreaPluginKeyUp: _mediaAreaPluginKeyUp\n },\n Network: {\n Retrying: _retryingRequest\n },\n Fathom: {\n GetComplete: _fathomGetComplete,\n Error: _fathomError\n },\n Modals: {\n Open: _modalOpen,\n Closed: _modalClosed\n },\n ExternalLinkView: {\n Open: _openUrlViewOpened,\n Closed: _openUrlViewClosed,\n Clicked: _openUrlViewClicked\n },\n SCORM: {\n ExitSession: _exitScormSession,\n ExitSessionConfirmed: _exitScormSessionConfirmed,\n ExitSessionWithOutProgressConfirmed: _exitScormSessionWithOutProgressConfirmed,\n ResumeSession: _resumeScormSession,\n FailedToFindApi: _failedToFindApi\n },\n Images: {\n PointerOver: _imagesPointerOver,\n PointerLeave: _imagesPointerLeave\n }\n});\n\nvar supportedPluginViewElements = Object.freeze({\n PROGRESS_BAR: 'progressBar',\n MEDIA: 'media',\n BEFORE_AFTER_PLAY_CONTROLS: 'beforeAfterPlayControls',\n PLAYER: 'player'\n});\n\nvar _english = 'en-US';\nvar _german = 'de-DE';\nvar _japanese = 'ja-JP';\nvar _french = 'fr-FR';\nvar _spanish = 'es-ES';\nvar _chinese = 'zh-CN';\nvar _portuguese = 'pt-BR';\nvar _supportedLanguages = [_english, _german, _japanese, _french, _spanish, _chinese, _portuguese];\nvar languageCodes = Object.freeze({\n ENGLISH: _english,\n GERMAN: _german,\n JAPANESE: _japanese,\n FRENCH: _french,\n SPANISH: _spanish,\n CHINESE: _chinese,\n PORTUGUESE: _portuguese,\n ENU: _english,\n DEU: _german,\n JPN: _japanese,\n FRA: _french,\n SP: _spanish,\n ZH: _chinese,\n PT: _portuguese,\n isValid: function isValid(language) {\n return _supportedLanguages.some(function (supportedLanguage) {\n return supportedLanguage === language;\n });\n }\n});\n\nvar mediaInterfaceConstants = Object.freeze({\n controls: {\n \"true\": 'true',\n \"false\": 'false',\n autohide: 'autohide',\n youtube: 'youtube'\n }\n});\n\nfunction _typeof$1(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof$1 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof$1(o);\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || value !== value && other !== other;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache();\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = (typeof global === \"undefined\" ? \"undefined\" : _typeof$1(global)) == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = (typeof self === \"undefined\" ? \"undefined\" : _typeof$1(self)) == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Built-in value references. */\nvar _Symbol = root.Symbol;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar objectProto$1 = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString$1 = objectProto$1.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString$1.call(value);\n}\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag$1 = _Symbol ? _Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return symToStringTag$1 && symToStringTag$1 in Object(value) ? getRawTag(value) : objectToString(value);\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = _typeof$1(value);\n return value != null && (type == 'object' || type == 'function');\n}\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = function () {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? 'Symbol(src)_1.' + uid : '';\n}();\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && maskSrcKey in func;\n}\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return func + '';\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto$1 = Function.prototype,\n objectProto$2 = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString$1 = funcProto$1.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$1 = objectProto$2.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' + funcToString$1.call(hasOwnProperty$1).replace(reRegExpChar, '\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/* Built-in method references that are verified to be native. */\nvar Map$1 = getNative(root, 'Map');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto$3 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$2 = objectProto$3.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty$2.call(data, key) ? data[key] : undefined;\n}\n\n/** Used for built-in method references. */\nvar objectProto$4 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$3 = objectProto$4.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty$3.call(data, key);\n}\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED$1 = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED$1 : value;\n return this;\n}\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash(),\n 'map': new (Map$1 || ListCache)(),\n 'string': new Hash()\n };\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = _typeof$1(value);\n return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null;\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map$1 || pairs.length < LARGE_ARRAY_SIZE - 1) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED$2 = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED$2);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n this.__data__ = new MapCache();\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined;\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n if (customizer) {\n var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function (othValue, othIndex) {\n if (!cacheHas(seen, othIndex) && (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n map.forEach(function (value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n set.forEach(function (value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG$1 = 1,\n COMPARE_UNORDERED_FLAG$1 = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = _Symbol ? _Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n case arrayBufferTag:\n if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n case errorTag:\n return object.name == other.name && object.message == other.message;\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == other + '';\n case mapTag:\n var convert = mapToArray;\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG$1;\n convert || (convert = setToArray);\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG$1;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray$1 = Array.isArray;\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray$1(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/** Used for built-in method references. */\nvar objectProto$5 = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto$5.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function (object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function (symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && _typeof$1(value) == 'object';\n}\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/** Used for built-in method references. */\nvar objectProto$6 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$4 = objectProto$6.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable$1 = objectProto$6.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function () {\n return arguments;\n}()) ? baseIsArguments : function (value) {\n return isObjectLike(value) && hasOwnProperty$4.call(value, 'callee') && !propertyIsEnumerable$1.call(value, 'callee');\n};\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\n/** Detect free variable `exports`. */\nvar freeExports = (typeof exports === \"undefined\" ? \"undefined\" : _typeof$1(exports)) == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && (typeof module === \"undefined\" ? \"undefined\" : _typeof$1(module)) == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = _typeof$1(value);\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length && (type == 'number' || type != 'symbol' && reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n}\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER$1 = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER$1;\n}\n\n/** `Object#toString` result references. */\nvar argsTag$1 = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag$1 = '[object Boolean]',\n dateTag$1 = '[object Date]',\n errorTag$1 = '[object Error]',\n funcTag$1 = '[object Function]',\n mapTag$1 = '[object Map]',\n numberTag$1 = '[object Number]',\n objectTag = '[object Object]',\n regexpTag$1 = '[object RegExp]',\n setTag$1 = '[object Set]',\n stringTag$1 = '[object String]',\n weakMapTag = '[object WeakMap]';\nvar arrayBufferTag$1 = '[object ArrayBuffer]',\n dataViewTag$1 = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag$1] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag$1] = typedArrayTags[boolTag$1] = typedArrayTags[dataViewTag$1] = typedArrayTags[dateTag$1] = typedArrayTags[errorTag$1] = typedArrayTags[funcTag$1] = typedArrayTags[mapTag$1] = typedArrayTags[numberTag$1] = typedArrayTags[objectTag] = typedArrayTags[regexpTag$1] = typedArrayTags[setTag$1] = typedArrayTags[stringTag$1] = typedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function (value) {\n return func(value);\n };\n}\n\n/** Detect free variable `exports`. */\nvar freeExports$1 = (typeof exports === \"undefined\" ? \"undefined\" : _typeof$1(exports)) == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule$1 = freeExports$1 && (typeof module === \"undefined\" ? \"undefined\" : _typeof$1(module)) == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports$1 = freeModule$1 && freeModule$1.exports === freeExports$1;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports$1 && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = function () {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule$1 && freeModule$1.require && freeModule$1.require('util').types;\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}();\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/** Used for built-in method references. */\nvar objectProto$7 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$5 = objectProto$7.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray$1(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n for (var key in value) {\n if ((inherited || hasOwnProperty$5.call(value, key)) && !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n isBuff && (key == 'offset' || key == 'parent') ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset') ||\n // Skip index properties.\n isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar objectProto$8 = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = typeof Ctor == 'function' && Ctor.prototype || objectProto$8;\n return value === proto;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n}\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\n/** Used for built-in method references. */\nvar objectProto$9 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$6 = objectProto$9.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty$6.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys$1(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys$1, getSymbols);\n}\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG$2 = 1;\n\n/** Used for built-in method references. */\nvar objectProto$a = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$7 = objectProto$a.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG$2,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty$7.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n if (customizer) {\n var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor && 'constructor' in object && 'constructor' in other && !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\n/* Built-in method references that are verified to be native. */\nvar Promise$2 = getNative(root, 'Promise');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\n/** `Object#toString` result references. */\nvar mapTag$2 = '[object Map]',\n objectTag$1 = '[object Object]',\n promiseTag = '[object Promise]',\n setTag$2 = '[object Set]',\n weakMapTag$1 = '[object WeakMap]';\nvar dataViewTag$2 = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map$1),\n promiseCtorString = toSource(Promise$2),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag$2 || Map$1 && getTag(new Map$1()) != mapTag$2 || Promise$2 && getTag(Promise$2.resolve()) != promiseTag || Set && getTag(new Set()) != setTag$2 || WeakMap && getTag(new WeakMap()) != weakMapTag$1) {\n getTag = function getTag(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag$1 ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString:\n return dataViewTag$2;\n case mapCtorString:\n return mapTag$2;\n case promiseCtorString:\n return promiseTag;\n case setCtorString:\n return setTag$2;\n case weakMapCtorString:\n return weakMapTag$1;\n }\n }\n return result;\n };\n}\nvar getTag$1 = getTag;\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG$3 = 1;\n\n/** `Object#toString` result references. */\nvar argsTag$2 = '[object Arguments]',\n arrayTag$1 = '[object Array]',\n objectTag$2 = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto$b = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$8 = objectProto$b.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray$1(object),\n othIsArr = isArray$1(other),\n objTag = objIsArr ? arrayTag$1 : getTag$1(object),\n othTag = othIsArr ? arrayTag$1 : getTag$1(other);\n objTag = objTag == argsTag$2 ? objectTag$2 : objTag;\n othTag = othTag == argsTag$2 ? objectTag$2 : othTag;\n var objIsObj = objTag == objectTag$2,\n othIsObj = othTag == objectTag$2,\n isSameTag = objTag == othTag;\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack());\n return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG$3)) {\n var objIsWrapped = objIsObj && hasOwnProperty$8.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty$8.call(other, '__wrapped__');\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n stack || (stack = new Stack());\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack());\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG$4 = 1,\n COMPARE_UNORDERED_FLAG$2 = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack();\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG$4 | COMPARE_UNORDERED_FLAG$2, customizer, stack) : result)) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys$1(object),\n length = result.length;\n while (length--) {\n var key = result[length],\n value = object[key];\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function (object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue && (srcValue !== undefined || key in Object(object));\n };\n}\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function (object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\n/** `Object#toString` result references. */\nvar symbolTag$1 = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return _typeof$1(value) == 'symbol' || isObjectLike(value) && baseGetTag(value) == symbolTag$1;\n}\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray$1(value)) {\n return false;\n }\n var type = _typeof$1(value);\n if (type == 'number' || type == 'symbol' || type == 'boolean' || value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);\n}\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || resolver != null && typeof resolver != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function memoized() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache)();\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function (key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n var cache = result.cache;\n return result;\n}\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function (string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function (match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : number || match);\n });\n return result;\n});\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto$1 = _Symbol ? _Symbol.prototype : undefined,\n symbolToString = symbolProto$1 ? symbolProto$1.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray$1(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result;\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray$1(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\n/** Used as references for various `Number` constants. */\nvar INFINITY$1 = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = value + '';\n return result == '0' && 1 / value == -INFINITY$1 ? '-0' : result;\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n var index = 0,\n length = path.length;\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return index && index == length ? object : undefined;\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n var index = -1,\n length = path.length,\n result = false;\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) && (isArray$1(object) || isArguments(object));\n}\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG$5 = 1,\n COMPARE_UNORDERED_FLAG$3 = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function (object) {\n var objValue = get(object, path);\n return objValue === undefined && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG$5 | COMPARE_UNORDERED_FLAG$3);\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function (object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function (object) {\n return baseGet(object, path);\n };\n}\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (_typeof$1(value) == 'object') {\n return isArray$1(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);\n }\n return property(value);\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function (object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys$1);\n}\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function (collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n while (fromRight ? index-- : ++index < length) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n baseEach(collection, function (value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray$1(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee));\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray$1(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function (collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate);\n collection = keys$1(collection);\n predicate = function predicate(key) {\n return iteratee(iterable[key], key, iterable);\n };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n while (fromRight ? index-- : ++index < length) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\n\n/** Used as references for various `Number` constants. */\nvar INFINITY$2 = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY$2 || value === -INFINITY$2) {\n var sign = value < 0 ? -1 : 1;\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n return result === result ? remainder ? result - remainder : result : 0;\n}\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate), index);\n}\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function (value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT$1 = 'Expected a function';\n\n/**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\nfunction negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT$1);\n }\n return function () {\n var args = arguments;\n switch (args.length) {\n case 0:\n return !predicate.call(this);\n case 1:\n return !predicate.call(this, args[0]);\n case 2:\n return !predicate.call(this, args[0], args[1]);\n case 3:\n return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n}\n\n/**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\nfunction reject$1(collection, predicate) {\n var func = isArray$1(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(baseIteratee(predicate)));\n}\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0:\n return func.call(thisArg);\n case 1:\n return func.call(thisArg, args[0]);\n case 2:\n return func.call(thisArg, args[0], args[1]);\n case 3:\n return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\n/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n if (start < 0) {\n start = -start > length ? 0 : length + start;\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : end - start >>> 0;\n start >>>= 0;\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\n/**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\nfunction baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n}\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax$1 = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax$1(start === undefined ? func.length - 1 : start, 0);\n return function () {\n var args = arguments,\n index = -1,\n length = nativeMax$1(args.length - start, 0),\n array = Array(length);\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function () {\n return value;\n };\n}\nvar defineProperty = function () {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}();\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function (func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n return function () {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\nvar invokeMap = baseRest(function (collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n baseEach(collection, function (value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n});\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\n/** Used for built-in method references. */\nvar arrayProto$1 = Array.prototype;\n\n/** Built-in value references. */\nvar splice$1 = arrayProto$1.splice;\n\n/**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\nfunction basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice$1.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n}\n\n/**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\nfunction remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n predicate = baseIteratee(predicate);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n}\nvar wellKnownNamespaces = {\n x: 'adobe:ns:meta/',\n xml: 'http://www.w3.org/1999/xhtml',\n rdf: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',\n dc: 'http://purl.org/dc/elements/1.1/',\n exif: 'http://ns.adobe.com/exif/1.0',\n stDim: 'http://ns.adobe.com/xap/1.0/sType/Dimensions#',\n stFnt: 'http://ns.adobe.com/xap/1.0/sType/Font#',\n tsc: 'http://www.techsmith.com/xmp/tsc/',\n tscDM: 'http://www.techsmith.com/xmp/tscDM/',\n tscHS: 'http://www.techsmith.com/xmp/tscHS/',\n tscIQ: 'http://www.techsmith.com/xmp/tscIQ/',\n xmp: 'http://ns.adobe.com/xap/1.0/',\n xmpDM: 'http://ns.adobe.com/xmp/1.0/DynamicMedia/',\n xmpG: 'http://ns.adobe.com/xap/1.0/g/',\n xmpMM: 'http://ns.adobe.com/xap/1.0/mm/'\n};\n\n/**\n * Namespace resolver for xmp namespaces.\n * @function namespaceResolver\n * @param {String} prefix - XML namespace prefix\n * @static\n * @return {String} The namespace corresponding to the prefix or null if not found\n */\nvar namespaceResolver = function namespaceResolver(prefix) {\n return wellKnownNamespaces[prefix] || null;\n};\n\n/** `Object#toString` result references. */\nvar stringTag$2 = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' || !isArray$1(value) && isObjectLike(value) && baseGetTag(value) == stringTag$2;\n}\n\n/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n return value == null;\n}\nvar parseXml;\n\n// Taken from http://stackoverflow.com/a/17604251\nif (typeof window.DOMParser !== 'undefined') {\n var DOMParserProto = DOMParser.prototype;\n var realParseFromString = DOMParserProto.parseFromString;\n\n // Firefox/Opera/IE throw errors on unsupported types\n var canParseHtmlNatively;\n try {\n // WebKit returns null on unsupported types\n if (new DOMParser().parseFromString('', 'text/html')) {\n // text/html parsing is natively supported\n canParseHtmlNatively = true;\n }\n } catch (ex) {\n // nothing to do\n }\n if (!canParseHtmlNatively) {\n DOMParserProto.parseFromString = function (markup, type) {\n if (/^\\s*text\\/html\\s*(?:;|$)/i.test(type)) {\n var doc = document.implementation.createHTMLDocument('');\n var docElement = doc.documentElement;\n var firstElement;\n docElement.innerHTML = markup;\n firstElement = docElement.firstElementChild;\n if (docElement.childElementCount === 1 && firstElement.localName.toLowerCase() === 'html') {\n doc.replaceChild(firstElement, docElement);\n }\n return doc;\n }\n return realParseFromString.apply(this, arguments);\n };\n }\n parseXml = function parseXml(xmlStr, contentType) {\n contentType = contentType || 'text/xml';\n return new window.DOMParser().parseFromString(xmlStr, contentType);\n };\n} else if (typeof window.ActiveXObject !== 'undefined' && new window.ActiveXObject('Microsoft.XMLDOM')) {\n parseXml = function parseXml(xmlStr) {\n var xmlDoc = new window.ActiveXObject('Microsoft.XMLDOM');\n xmlDoc.async = 'false';\n xmlDoc.loadXML(xmlStr);\n return xmlDoc;\n };\n} else {\n throw new Error('No XML parser found');\n}\nvar xmlDocFragmentToString = function xmlDocFragmentToString(xmlDoc) {\n var xmlSerializer = new XMLSerializer();\n return xmlSerializer.serializeToString(xmlDoc);\n};\nvar xmlDocToString = function xmlDocToString(xmlDoc) {\n return '\\n' + this.xmlDocFragmentToString(xmlDoc);\n};\nvar getElementText = function getElementText(element) {\n return element.textContent;\n};\nvar hasAttribute = function hasAttribute(element, attributeName) {\n var attrValue = element.getAttribute(attributeName);\n return !isNil(attrValue);\n};\nvar hasAttributeWithValue = function hasAttributeWithValue(element, attributeName, value) {\n var attrValue = element.getAttribute(attributeName);\n return attrValue === value;\n};\nvar createDocument = function createDocument() {\n var xmlDocument = document.implementation.createDocument('', '', null);\n return xmlDocument;\n};\nvar createElement = function createElement(doc, name) {\n var element = doc.createElement(name);\n return element;\n};\nvar createElementWithValue = function createElementWithValue(doc, name, value) {\n var element = doc.createElement(name);\n element.appendChild(doc.createTextNode(value));\n return element;\n};\nvar getElementsByTagName = function getElementsByTagName(element, name) {\n var ns = '*';\n var childElements = element.getElementsByTagNameNS(ns, name);\n return childElements;\n};\nvar getFirstElementByTagName = function getFirstElementByTagName(element, name) {\n var childElements = getElementsByTagName(element, name);\n return childElements && childElements[0] ? childElements[0] : null;\n};\nvar getFirstChildElementTextByTagName = function getFirstChildElementTextByTagName(element, name) {\n var childElement = getFirstElementByTagName(element, name);\n return childElement ? getElementText(childElement) : null;\n};\nvar XmlUtility = function XmlUtility() {}; // eslint-disable-line no-empty-function\nXmlUtility.prototype.parseXml = parseXml;\nXmlUtility.prototype.xmlDocFragmentToString = xmlDocFragmentToString;\nXmlUtility.prototype.xmlDocToString = xmlDocToString;\nXmlUtility.prototype.getElementText = getElementText;\nXmlUtility.prototype.hasAttribute = hasAttribute;\nXmlUtility.prototype.hasAttributeWithValue = hasAttributeWithValue;\nXmlUtility.prototype.createDocument = createDocument;\nXmlUtility.prototype.createElement = createElement;\nXmlUtility.prototype.createElementWithValue = createElementWithValue;\nXmlUtility.prototype.getElementsByTagName = getElementsByTagName;\nXmlUtility.prototype.getFirstElementByTagName = getFirstElementByTagName;\nXmlUtility.prototype.getFirstChildElementTextByTagName = getFirstChildElementTextByTagName;\nvar isDocument = function isDocument(docOrElement) {\n return isFunction(docOrElement.evaluate);\n};\nvar getFirstElementByTagNameNSPrefix = function getFirstElementByTagNameNSPrefix(docOrElement, name) {\n if (isDocument(docOrElement)) {\n return docOrElement.evaluate('//' + name, docOrElement, this.namespaceResolver, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n var childElements = this.getElementsByTagNameNSPrefix(docOrElement, name);\n return childElements && childElements[0] ? childElements[0] : undefined;\n};\nvar getElementsByTagNameNSPrefix = function getElementsByTagNameNSPrefix(element, name) {\n if (!element) {\n return null;\n }\n if (name.indexOf(':') === -1) {\n throw new Error('getElementsByTagNameNSPrefix requires the name passed in to have a namespace prefix. getElementsByTagName can be used if you do not know the prefix.');\n }\n var tokens = name.split(':');\n var ns = this.namespaceResolver(tokens[0]);\n var tagName = name.split(':')[1];\n var childElements = element.getElementsByTagNameNS(ns, tagName);\n return childElements;\n};\nvar getFirstChildElementTextByTagNameNSPrefix = function getFirstChildElementTextByTagNameNSPrefix(element, name) {\n var childElement = this.getFirstElementByTagNameNSPrefix(element, name);\n return childElement ? this.getElementText(childElement) : undefined;\n};\nvar createDocumentNS = function createDocumentNS(ns, prefix, name) {\n var xmlDocument = document.implementation.createDocument(ns, prefix + ':' + name, null);\n return xmlDocument;\n};\nvar createElementNS = function createElementNS(doc, ns, prefix, name) {\n var element = doc.createElementNS(ns, prefix + ':' + name);\n return element;\n};\nvar createElementNSWithValue = function createElementNSWithValue(doc, ns, prefix, name, value) {\n var element = createElementNS(doc, ns, prefix, name);\n element.appendChild(doc.createTextNode(value));\n return element;\n};\nvar getNSInfo = function getNSInfo(tagName, namespaceResolver) {\n var nameParts = tagName.split(':', 2);\n if (nameParts.length !== 2) {\n throw new Error('invalid tag name [' + tagName + '] should contain \\':\\' to define namespace');\n } else if (!namespaceResolver(nameParts[0])) {\n throw new Error('invalid namespace prefix [' + nameParts[0] + '] was not able to be mapped to known namespace');\n }\n return {\n nsUrl: namespaceResolver(nameParts[0]),\n nsPrefix: nameParts[0],\n tagShortName: nameParts[1]\n };\n};\nvar createElementFromObject = function createElementFromObject(tagInfo, doc) {\n doc = doc || this.createDocument();\n var that = this;\n if (isString(tagInfo)) {\n return createElement(doc, tagInfo);\n } else if (_typeof$1(tagInfo) === 'object' && typeof tagInfo.toXmp === 'function') {\n return tagInfo.toXmp();\n } else if (_typeof$1(tagInfo) === 'object' && tagInfo.name) {\n var nsInfo = getNSInfo(tagInfo.name, this.namespaceResolver);\n var newElement = createElementNS(doc, nsInfo.nsUrl, nsInfo.nsPrefix, nsInfo.tagShortName);\n if (tagInfo.atts && _typeof$1(tagInfo.atts) === 'object') {\n forEach(tagInfo.atts, function (attrVal, attrName) {\n if (!isNil(attrVal)) {\n var attNsInfo = getNSInfo(attrName, that.namespaceResolver);\n if (attNsInfo.nsPrefix !== 'xml') {\n newElement.setAttributeNS(attNsInfo.nsUrl, attrName, attrVal);\n } else {\n newElement.setAttribute(attrName, attrVal);\n }\n }\n });\n }\n if (tagInfo.children && Array.isArray(tagInfo.children)) {\n forEach(tagInfo.children, function (child) {\n if (child) {\n newElement.appendChild(that.createElementFromObject(child, doc));\n }\n });\n }\n if (tagInfo.text !== undefined && tagInfo.text !== null) {\n newElement.textContent = tagInfo.text;\n }\n return newElement;\n }\n throw new Error('invalid tag info');\n};\nvar NamespaceXmlUtility = function NamespaceXmlUtility(namespaceResolver) {\n if (!namespaceResolver) {\n throw new Error('namespaceResolver is required');\n }\n this.namespaceResolver = namespaceResolver;\n};\nNamespaceXmlUtility.prototype = Object.create(XmlUtility.prototype);\nNamespaceXmlUtility.prototype.getFirstElementByTagNameNSPrefix = getFirstElementByTagNameNSPrefix;\nNamespaceXmlUtility.prototype.getElementsByTagNameNSPrefix = getElementsByTagNameNSPrefix;\nNamespaceXmlUtility.prototype.getFirstChildElementTextByTagNameNSPrefix = getFirstChildElementTextByTagNameNSPrefix;\nNamespaceXmlUtility.prototype.createDocumentNS = createDocumentNS;\nNamespaceXmlUtility.prototype.createElementFromObject = createElementFromObject;\nNamespaceXmlUtility.prototype.createElementNS = createElementNS;\nNamespaceXmlUtility.prototype.createElementNSWithValue = createElementNSWithValue;\nvar LanguageIdentifier = function LanguageIdentifier(languageIdentifier) {\n if (typeof languageIdentifier !== 'string') {\n throw new Error('Language Identifier is expecting a string, but got (' + languageIdentifier + ')');\n }\n var _identifier = languageIdentifier.toLowerCase();\n var _language = '';\n var _region = '';\n var parseLanguageIdentifier = function parseLanguageIdentifier() {\n var languageIdentifierParts = _identifier.split('-');\n if (languageIdentifierParts.length > 1) {\n _region = languageIdentifierParts.pop();\n }\n _language = languageIdentifierParts.join('-');\n };\n var toPOJO = function toPOJO() {\n return {\n identifier: _identifier,\n language: _language,\n region: _region\n };\n };\n parseLanguageIdentifier();\n return Object.defineProperties({\n toPOJO: toPOJO\n }, {\n identifier: {\n get: function get() {\n return _identifier;\n }\n },\n language: {\n get: function get() {\n return _language;\n }\n },\n region: {\n get: function get() {\n return _region;\n }\n }\n });\n};\n\n/** @module LanguageIdentifier */\nvar LanguageIdentifier$1 = {\n /**\n * Factory method that returns a new LanguageIdentifier object.\n * @function create\n * @param {string} languageIdentifier - RFC 3066 notation language string\n * @static\n * @return {module:LanguageIdentifier} new LanguageIdentifier instance\n */\n create: LanguageIdentifier\n};\nvar _identifiers = Object.freeze({\n \"default\": 'default',\n af: {\n name: 'Afrikaans',\n displayName: 'Afrikaans',\n regions: {\n za: 'South Africa'\n }\n },\n sq: {\n name: 'Albanian',\n displayName: 'Shqip',\n regions: {\n al: 'Albania'\n }\n },\n ar: {\n name: 'Arabic',\n displayName: 'العربية',\n regions: {\n dz: 'Algeria',\n bh: 'Bahrain',\n eg: 'Egypt',\n iq: 'Iraq',\n jo: 'Jordan',\n kw: 'Kuwait',\n lb: 'Lebanon',\n ly: 'Libya',\n ma: 'Morocco',\n om: 'Oman',\n qa: 'Qatar',\n sa: 'Saudi Arabia',\n sy: 'Syria',\n tn: 'Tunisia',\n ae: 'United Arab Emirates',\n ye: 'Yemen'\n }\n },\n hy: {\n name: 'Armenian',\n displayName: 'Արևելահայերեն',\n regions: {\n am: 'Armenia'\n }\n },\n 'cy-az': {\n name: 'Azeri (Cyrillic)',\n displayName: 'Азәрбајҹан дили',\n regions: {\n az: 'Azerbaijan'\n }\n },\n 'lt-az': {\n name: 'Azeri (Latin)',\n displayName: 'Azərbaycanca',\n regions: {\n az: 'Azerbaijan'\n }\n },\n eu: {\n name: 'Basque',\n displayName: 'Euskara',\n regions: {\n es: 'Basque'\n }\n },\n be: {\n name: 'Belarusian',\n displayName: 'Беларуская',\n regions: {\n by: 'Belarus'\n }\n },\n bg: {\n name: 'Bulgarian',\n displayName: 'Български',\n regions: {\n bg: 'Bulgaria'\n }\n },\n ca: {\n name: 'Catalan',\n displayName: 'Català',\n regions: {\n es: 'Catalan'\n }\n },\n zh: {\n name: 'Chinese',\n displayName: '简体中文',\n regions: {\n cn: 'China',\n hk: 'Hong Kong SAR',\n mo: 'Macau SAR',\n sg: 'Singapore',\n tw: 'Taiwan',\n chs: '(Simplified)',\n cht: '(Traditional)'\n }\n },\n hr: {\n name: 'Croatian',\n displayName: 'hrvatski',\n regions: {\n hr: 'Croatia'\n }\n },\n cs: {\n name: 'Czech',\n displayName: 'Čeština',\n regions: {\n cz: 'Czech Republic'\n }\n },\n da: {\n name: 'Danish',\n displayName: 'Dansk',\n regions: {\n dk: 'Denmark'\n }\n },\n div: {\n name: 'Dhivehi',\n displayName: 'ދިވެހި',\n regions: {\n mv: 'Maldives'\n }\n },\n nl: {\n name: 'Dutch',\n displayName: 'Nederlands',\n regions: {\n be: 'Belgium',\n nl: 'The Netherlands'\n }\n },\n en: {\n name: 'English',\n displayName: 'English',\n regions: {\n au: 'Australia',\n bz: 'Belize',\n ca: 'Canada',\n cb: 'Caribbean',\n ie: 'Ireland',\n jm: 'Jamaica',\n nz: 'New Zealand',\n ph: 'Philippines',\n za: 'South Africa',\n tt: 'Trinidad and Tobago',\n gb: 'United Kingdom',\n us: 'United States',\n zw: 'Zimbabwe'\n }\n },\n et: {\n name: 'Estonian',\n displayName: 'Eesti',\n regions: {\n ee: 'Estonia'\n }\n },\n fo: {\n name: 'Faroese',\n displayName: 'Føroyskt',\n regions: {\n fo: 'Faroe Islands'\n }\n },\n fa: {\n name: 'Farsi',\n displayName: 'فارسی',\n regions: {\n ir: 'Iran'\n }\n },\n fi: {\n name: 'Finnish',\n displayName: 'Suomi',\n regions: {\n fi: 'Finland'\n }\n },\n fr: {\n name: 'French',\n displayName: 'Français',\n regions: {\n be: 'Belgium',\n ca: 'Canada',\n fr: 'France',\n lu: 'Luxembourg',\n mc: 'Monaco',\n ch: 'Switzerland'\n }\n },\n gl: {\n name: 'Galician',\n displayName: 'galego',\n regions: {\n es: 'Galician'\n }\n },\n ka: {\n name: 'Georgian',\n displayName: 'ქართული',\n regions: {\n ge: 'Georgia'\n }\n },\n de: {\n name: 'German',\n displayName: 'Deutsch',\n regions: {\n at: 'Austria',\n de: 'Germany',\n li: 'Liechtenstein',\n lu: 'Luxembourg',\n ch: 'Switzerland'\n }\n },\n el: {\n name: 'Greek',\n displayName: 'Ελληνικά',\n regions: {\n gr: 'Greece'\n }\n },\n gu: {\n name: 'Gujarati',\n displayName: 'ગુજરાતી',\n regions: {\n \"in\": 'India'\n }\n },\n he: {\n name: 'Hebrew',\n displayName: 'עברית',\n regions: {\n il: 'Israel'\n }\n },\n hi: {\n name: 'Hindi',\n displayName: 'हिन्दी',\n regions: {\n \"in\": 'India'\n }\n },\n hu: {\n name: 'Hungarian',\n displayName: 'Magyar',\n regions: {\n hu: 'Hungary'\n }\n },\n is: {\n name: 'Icelandic',\n displayName: 'Íslenska',\n regions: {\n is: 'Iceland'\n }\n },\n id: {\n name: 'Indonesian',\n displayName: 'Bahasa Indonesia',\n regions: {\n id: 'Indonesia'\n }\n },\n it: {\n name: 'Italian',\n displayName: 'Italiano',\n regions: {\n it: 'Italy',\n ch: 'Switzerland'\n }\n },\n ja: {\n name: 'Japanese',\n displayName: '日本語',\n regions: {\n jp: 'Japan'\n }\n },\n kn: {\n name: 'Kannada',\n displayName: 'ಕನ್ನಡ',\n regions: {\n \"in\": 'India'\n }\n },\n kk: {\n name: 'Kazakh',\n displayName: 'Қазақ Tілі',\n regions: {\n kz: 'Kazakhstan'\n }\n },\n kok: {\n name: 'Konkani',\n displayName: 'कोंकणी',\n regions: {\n \"in\": 'India'\n }\n },\n ko: {\n name: 'Korean',\n displayName: '한국어',\n regions: {\n kr: 'Korea'\n }\n },\n ky: {\n name: 'Kyrgyz',\n displayName: 'кыргызча',\n regions: {\n kz: 'Kazakhstan'\n }\n },\n lv: {\n name: 'Latvian',\n displayName: 'Latviešu',\n regions: {\n lv: 'Latvia'\n }\n },\n lt: {\n name: 'Lithuanian',\n displayName: 'Lietuvių',\n regions: {\n lt: 'Lithuania'\n }\n },\n mk: {\n name: 'Macedonian',\n displayName: 'Mакедонски',\n regions: {\n mk: '(FYROM)'\n }\n },\n ms: {\n name: 'Malay',\n displayName: 'Bahasa Melayu',\n regions: {\n bn: 'Brunei',\n my: 'Malaysia'\n }\n },\n mr: {\n name: 'Marathi',\n displayName: 'मराठी',\n regions: {\n \"in\": 'India'\n }\n },\n mn: {\n name: 'Mongolian',\n displayName: 'Монгол Хэл',\n regions: {\n mn: 'Mongolia'\n }\n },\n nb: {\n name: 'Norwegian (Bokmål)',\n displayName: 'Norsk (Bokmål)',\n regions: {\n no: 'Norway'\n }\n },\n nn: {\n name: 'Norwegian (Nynorsk)',\n displayName: 'Norsk (Nynorsk)',\n regions: {\n no: 'Norway'\n }\n },\n pl: {\n name: 'Polish',\n displayName: 'Polsk',\n regions: {\n pl: 'Poland'\n }\n },\n pt: {\n name: 'Portuguese',\n displayName: 'Português',\n regions: {\n br: 'Brazil',\n pt: 'Portugal'\n }\n },\n pa: {\n name: 'Punjabi',\n displayName: 'ਪੰਜਾਬੀ',\n regions: {\n \"in\": 'India'\n }\n },\n ro: {\n name: 'Romanian',\n displayName: 'Română',\n regions: {\n ro: 'Romania'\n }\n },\n ru: {\n name: 'Russian',\n displayName: 'Русский',\n regions: {\n ru: 'Russia'\n }\n },\n sa: {\n name: 'Sanskrit',\n displayName: 'संस्कृतम्',\n regions: {\n \"in\": 'India'\n }\n },\n 'cy-sr': {\n name: 'Serbian (Cyrillic)',\n displayName: 'Српски',\n regions: {\n sp: 'Serbia'\n }\n },\n 'lt-sr': {\n name: 'Serbian (Latin)',\n displayName: 'Srpski',\n regions: {\n sp: 'Serbia'\n }\n },\n sk: {\n name: 'Slovak',\n displayName: 'Slovenčina',\n regions: {\n sk: 'Slovakia'\n }\n },\n sl: {\n name: 'Slovenian',\n displayName: 'Slovenščina',\n regions: {\n si: 'Slovenia'\n }\n },\n es: {\n name: 'Spanish',\n displayName: 'Español',\n regions: {\n ar: 'Argentina',\n bo: 'Bolivia',\n cl: 'Chile',\n co: 'Colombia',\n cr: 'Costa Rica',\n \"do\": 'Dominican Republic',\n ec: 'Ecuador',\n sv: 'El Salvador',\n gt: 'Guatemala',\n hn: 'Honduras',\n mx: 'Mexico',\n ni: 'Nicaragua',\n pa: 'Panama',\n py: 'Paraguay',\n pe: 'Peru',\n pr: 'Puerto Rico',\n es: 'Spain',\n uy: 'Uruguay',\n ve: 'Venezuela'\n }\n },\n sw: {\n name: 'Swahili',\n displayName: 'Kiswahili',\n regions: {\n ke: 'Kenya'\n }\n },\n sv: {\n name: 'Swedish',\n displayName: 'Svenska',\n regions: {\n fi: 'Finland',\n se: 'Sweden'\n }\n },\n syr: {\n name: 'Syriac',\n displayName: 'ܠܫܢܐ ܣܘܪܝܝܐ‎',\n regions: {\n sy: 'Syria'\n }\n },\n ta: {\n name: 'Tamil',\n displayName: 'தமிழ்‎',\n regions: {\n \"in\": 'India'\n }\n },\n tt: {\n name: 'Tatar',\n displayName: 'татар теле',\n regions: {\n ru: 'Russia'\n }\n },\n te: {\n name: 'Telugu',\n displayName: 'తెలుగు',\n regions: {\n \"in\": 'India'\n }\n },\n th: {\n name: 'Thai',\n displayName: 'ไทย',\n regions: {\n th: 'Thailand'\n }\n },\n tr: {\n name: 'Turkish',\n displayName: 'Türkçe',\n regions: {\n tr: 'Turkey'\n }\n },\n uk: {\n name: 'Ukrainian',\n displayName: 'Українська',\n regions: {\n ua: 'Ukraine'\n }\n },\n ur: {\n name: 'Urdu',\n displayName: 'اُردُو',\n regions: {\n pk: 'Pakistan'\n }\n },\n 'cy-uz': {\n name: 'Uzbek (Cyrillic)',\n displayName: 'Ўзбек',\n regions: {\n uz: 'Uzbekistan'\n }\n },\n 'lt-uz': {\n name: 'Uzbek (Latin)',\n displayName: 'oʻzbek tili',\n regions: {\n uz: 'Uzbekistan'\n }\n },\n vi: {\n name: 'Vietnamese',\n displayName: 'Tiếng Việt',\n regions: {\n vn: 'Vietnam'\n }\n }\n});\n\n/** @module LanguageIdentifiers */\n\n/**\n * Check if a language is supported.\n * @function isSupportedLanguage\n * @param {string} languageIdentifierString - RFC 3066 notation language string\n * @static\n * @return {boolean} is the language found in the languageIdentifier is found.\n */\nvar isSupportedLanguage = function isSupportedLanguage(languageIdentifierString) {\n var identifier = LanguageIdentifier$1.create(languageIdentifierString);\n return _identifiers[identifier.language] !== undefined;\n};\nvar languageIdentifiers = Object.defineProperties({\n isSupportedLanguage: isSupportedLanguage\n}, {\n identifiers: {\n get: function get() {\n return _identifiers;\n }\n }\n});\n\n/**\n * @this {Promise}\n */\nfunction finallyConstructor$1(callback) {\n var constructor = this.constructor;\n return this.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n return constructor.reject(reason);\n });\n });\n}\n\n// Store setTimeout reference so promise-polyfill will be unaffected by\n// other code modifying setTimeout (like sinon.useFakeTimers())\nvar setTimeoutFunc$1 = setTimeout;\nfunction noop$2() {}\n\n// Polyfill for Function.prototype.bind\nfunction bind$1(fn, thisArg) {\n return function () {\n fn.apply(thisArg, arguments);\n };\n}\n\n/**\n * @constructor\n * @param {Function} fn\n */\nfunction Promise$1$1(fn) {\n if (!(this instanceof Promise$1$1)) throw new TypeError('Promises must be constructed via new');\n if (typeof fn !== 'function') throw new TypeError('not a function');\n /** @type {!number} */\n this._state = 0;\n /** @type {!boolean} */\n this._handled = false;\n /** @type {Promise|undefined} */\n this._value = undefined;\n /** @type {!Array} */\n this._deferreds = [];\n doResolve$1(fn, this);\n}\nfunction handle$1(self, deferred) {\n while (self._state === 3) {\n self = self._value;\n }\n if (self._state === 0) {\n self._deferreds.push(deferred);\n return;\n }\n self._handled = true;\n Promise$1$1._immediateFn(function () {\n var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n (self._state === 1 ? resolve$1 : reject$1$1)(deferred.promise, self._value);\n return;\n }\n var ret;\n try {\n ret = cb(self._value);\n } catch (e) {\n reject$1$1(deferred.promise, e);\n return;\n }\n resolve$1(deferred.promise, ret);\n });\n}\nfunction resolve$1(self, newValue) {\n try {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self) throw new TypeError('A promise cannot be resolved with itself.');\n if (newValue && (_typeof$1(newValue) === 'object' || typeof newValue === 'function')) {\n var then = newValue.then;\n if (newValue instanceof Promise$1$1) {\n self._state = 3;\n self._value = newValue;\n finale$1(self);\n return;\n } else if (typeof then === 'function') {\n doResolve$1(bind$1(then, newValue), self);\n return;\n }\n }\n self._state = 1;\n self._value = newValue;\n finale$1(self);\n } catch (e) {\n reject$1$1(self, e);\n }\n}\nfunction reject$1$1(self, newValue) {\n self._state = 2;\n self._value = newValue;\n finale$1(self);\n}\nfunction finale$1(self) {\n if (self._state === 2 && self._deferreds.length === 0) {\n Promise$1$1._immediateFn(function () {\n if (!self._handled) {\n Promise$1$1._unhandledRejectionFn(self._value);\n }\n });\n }\n for (var i = 0, len = self._deferreds.length; i < len; i++) {\n handle$1(self, self._deferreds[i]);\n }\n self._deferreds = null;\n}\n\n/**\n * @constructor\n */\nfunction Handler$1(onFulfilled, onRejected, promise) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve$1(fn, self) {\n var done = false;\n try {\n fn(function (value) {\n if (done) return;\n done = true;\n resolve$1(self, value);\n }, function (reason) {\n if (done) return;\n done = true;\n reject$1$1(self, reason);\n });\n } catch (ex) {\n if (done) return;\n done = true;\n reject$1$1(self, ex);\n }\n}\nPromise$1$1.prototype['catch'] = function (onRejected) {\n return this.then(null, onRejected);\n};\nPromise$1$1.prototype.then = function (onFulfilled, onRejected) {\n // @ts-ignore\n var prom = new this.constructor(noop$2);\n handle$1(this, new Handler$1(onFulfilled, onRejected, prom));\n return prom;\n};\nPromise$1$1.prototype['finally'] = finallyConstructor$1;\nPromise$1$1.all = function (arr) {\n return new Promise$1$1(function (resolve, reject) {\n if (!arr || typeof arr.length === 'undefined') throw new TypeError('Promise.all accepts an array');\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n function res(i, val) {\n try {\n if (val && (_typeof$1(val) === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(val, function (val) {\n res(i, val);\n }, reject);\n return;\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (ex) {\n reject(ex);\n }\n }\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\nPromise$1$1.resolve = function (value) {\n if (value && _typeof$1(value) === 'object' && value.constructor === Promise$1$1) {\n return value;\n }\n return new Promise$1$1(function (resolve) {\n resolve(value);\n });\n};\nPromise$1$1.reject = function (value) {\n return new Promise$1$1(function (resolve, reject) {\n reject(value);\n });\n};\nPromise$1$1.race = function (values) {\n return new Promise$1$1(function (resolve, reject) {\n for (var i = 0, len = values.length; i < len; i++) {\n values[i].then(resolve, reject);\n }\n });\n};\n\n// Use polyfill for setImmediate for performance gains\nPromise$1$1._immediateFn = typeof setImmediate === 'function' && function (fn) {\n setImmediate(fn);\n} || function (fn) {\n setTimeoutFunc$1(fn, 0);\n};\nPromise$1$1._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n if (typeof console !== 'undefined' && console) {\n console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n }\n};\nvar UndoAction = function UndoAction(undoFunc, undoParams, redoFunc, redoParams) {\n var execute = function execute() {\n return new Promise$1$1(function (resolve, reject) {\n try {\n undoFunc(undoParams);\n } catch (error) {\n reject(error);\n }\n var redo = UndoAction(redoFunc, redoParams, undoFunc, undoParams);\n resolve(redo);\n });\n };\n return {\n execute: execute\n };\n};\nvar NoOpAction = function NoOpAction() {\n return {\n execute: function execute() {\n return Promise$1$1.resolve();\n }\n };\n};\n\n/** @module UndoAction */\nvar UndoAction$1 = {\n /**\n * Factory method that returns a new UndoAction object.\n * @function create\n * @param {Function} undoFunc - The function that will be used to undo the action.\n * @param {Object} undoParams - Parameters that will be passed to undo function.\n * @param {Function} redoFunc - The function that will be use to redo the action.\n * @param {Object} redoParams - Parameters that will be passed to redo function.\n * @static\n * @return {module:UndoAction} new Command instance\n */\n create: function create(undoFunc, undoParams, redoFunc, redoParams) {\n return UndoAction(undoFunc, undoParams, redoFunc, redoParams);\n },\n noOp: function noOp() {\n return NoOpAction();\n }\n};\nvar ImageRectangle = function ImageRectangle(propertyInfo) {\n var _x;\n var _y;\n var _width;\n var _height;\n if (isString(propertyInfo)) {\n var tokens = propertyInfo.split(',');\n _x = Number(tokens[0]);\n _y = Number(tokens[1]);\n _width = Number(tokens[2]);\n _height = Number(tokens[3]);\n } else if (isObject(propertyInfo)) {\n _x = propertyInfo.x;\n _y = propertyInfo.y;\n _width = propertyInfo.width;\n _height = propertyInfo.height;\n } else {\n throw new Error('ImageRectangle is expecting a rectangle property string format: \"x, y, width, height\"');\n }\n var _public = Object.defineProperties({}, {\n x: {\n get: function get() {\n return _x;\n }\n },\n y: {\n get: function get() {\n return _y;\n }\n },\n width: {\n get: function get() {\n return _width;\n }\n },\n height: {\n get: function get() {\n return _height;\n }\n }\n });\n _public.toPOJO = function () {\n return {\n x: _x,\n y: _y,\n width: _width,\n height: _height\n };\n };\n _public.toXmpAtt = function () {\n return [_x, _y, _width, _height].join(', ');\n };\n return _public;\n};\n\n/** @module ImageRectangle */\nvar ImageRectangle$1 = {\n /**\n * Factory method that returns a new ImageRectangle object.\n * @function create\n * @param {String|Object} propertyInfo - Required property string of the rectangle. A Rectangle object\n * is an area defined by its position, as indicated by its top-left corner point (x, y) and by its width\n * and its height. The properties should be comma separated in the following format \"x, y, width, height\". Alternatively,\n * this can be an object containing x,y,width,height properties (i.e. the object that comes out from .toPOJO())\n * @static\n * @return {module:ImageRectangle} new ImageRectangle instance\n */\n create: function create(propertyInfo) {\n return ImageRectangle(propertyInfo);\n }\n};\nvar TAG_BEGIN_NOTATION = '\\\\';\nvar TAG_CLOSE_NOTATION = '0';\nvar TAG_END_NOTATION = ' ';\nvar TAG_SPACE = ' ';\nvar LOWER_CASE_A_CHAR_CODE = 97;\nvar LOWER_CASE_Z_CHAR_CODE = 122;\nvar isBlacklistedTag = function isBlacklistedTag(strTag) {\n var LINE_BREAK = 'par ';\n return strTag.toLowerCase() === LINE_BREAK;\n};\nvar findNextTag = function findNextTag(strTextToSearch, nStartPoint) {\n if (nStartPoint === undefined) {\n nStartPoint = 0;\n }\n var nPosition = -1;\n // Make sure we're not null\n if (strTextToSearch) {\n // Get the first tag-looking sequence\n nPosition = strTextToSearch.indexOf(TAG_BEGIN_NOTATION, nStartPoint);\n // While we've got a tag-looking sequence....\n while (nPosition !== -1) {\n // As long as this point is not the last character in the string\n if (nPosition + 1 < strTextToSearch.length) {\n var nCode = strTextToSearch.toLowerCase().charCodeAt(nPosition + 1);\n // If the lower-case character is a lower-case alpha character\n if (LOWER_CASE_A_CHAR_CODE <= nCode && nCode <= LOWER_CASE_Z_CHAR_CODE) {\n break;\n }\n }\n // Get the next location of a tag-looking sequence\n nPosition = strTextToSearch.indexOf(TAG_BEGIN_NOTATION, nPosition + 1);\n }\n }\n\n // Return -1 of the position of the first valid tag\n return nPosition;\n};\nvar getTagAt = function getTagAt(strText, nTagPosition) {\n var strTag;\n if (nTagPosition !== -1) {\n var nEnd = strText.indexOf(TAG_END_NOTATION, nTagPosition + 1);\n if (nEnd !== -1) {\n strTag = strText.substring(nTagPosition + 1, nEnd + 1);\n } else {\n strTag = strText.substring(nTagPosition + 1);\n }\n }\n return strTag;\n};\nvar findNextTagNotBlacklisted = function findNextTagNotBlacklisted(strTextToSearch, nStartPoint) {\n if (nStartPoint === undefined) {\n nStartPoint = 0;\n }\n var nPosition = findNextTag(strTextToSearch, nStartPoint);\n while (nPosition !== -1) {\n var strTag = getTagAt(strTextToSearch, nPosition);\n if (strTag && !isBlacklistedTag(strTag)) {\n break;\n }\n nPosition = findNextTag(strTextToSearch, nPosition + 1);\n }\n return nPosition;\n};\nvar getTextToCloseTag = function getTextToCloseTag(strTag, arrStack) {\n var strCloseTags = '';\n var arrOpenTags = [];\n var strCloseTagNeeded = arrStack.pop();\n while (strCloseTagNeeded && strCloseTagNeeded !== strTag && arrStack.length) {\n strCloseTags += TAG_BEGIN_NOTATION + strCloseTagNeeded;\n arrOpenTags.push(matchingTag(strCloseTagNeeded));\n if (arrStack.length) {\n strCloseTagNeeded = arrStack.pop();\n }\n }\n strCloseTags += TAG_BEGIN_NOTATION + strTag;\n while (arrOpenTags.length) {\n var strOpenTagNeeded = arrOpenTags.pop();\n if (strOpenTagNeeded) {\n strCloseTags += TAG_BEGIN_NOTATION + strOpenTagNeeded;\n arrStack.push(matchingTag(strOpenTagNeeded));\n }\n }\n return strCloseTags;\n};\nvar isClosingTag = function isClosingTag(strTag) {\n return strTag.indexOf(TAG_CLOSE_NOTATION) !== -1;\n};\nvar matchingTag = function matchingTag(strToMatch) {\n var strMatch = '';\n if (strToMatch !== '') {\n // An end tag\n if (isClosingTag(strToMatch)) {\n strMatch = strToMatch.substring(0, strToMatch.indexOf(TAG_CLOSE_NOTATION));\n } else {\n // Not an end tag\n // If we need to remove space (and we should)\n if (strToMatch.indexOf(TAG_SPACE) !== -1) {\n strMatch = strToMatch.substring(0, strToMatch.indexOf(TAG_SPACE));\n }\n strMatch += TAG_CLOSE_NOTATION;\n }\n strMatch += TAG_SPACE;\n }\n return strMatch;\n};\nvar removeTag = function removeTag(strToFix, nTagPosition) {\n if (nTagPosition !== -1 && strToFix && nTagPosition < strToFix.length) {\n // Get the end of the tag\n var nTagEnd = strToFix.indexOf(TAG_END_NOTATION, nTagPosition);\n // If end exists\n if (nTagEnd !== -1) {\n // Remove it\n strToFix = strToFix.substring(0, nTagPosition) + strToFix.substring(nTagEnd + 1);\n } else {\n strToFix = strToFix.substring(0, nTagPosition);\n }\n }\n return strToFix;\n};\nvar trimString = function trimString(strToFix) {\n while (strToFix.length > 1 && strToFix.charAt(0) === TAG_SPACE) {\n strToFix = strToFix.substring(1);\n }\n while (strToFix.length > 1 && strToFix.charAt(strToFix.length - 1) === TAG_SPACE) {\n strToFix = strToFix.substring(0, strToFix.length - 1);\n }\n if (strToFix === TAG_SPACE) {\n strToFix = '';\n }\n return strToFix;\n};\nvar nestTags = function nestTags(strToFix) {\n if (strToFix) {\n var arrTagStack = [];\n var nPosition = findNextTagNotBlacklisted(strToFix);\n while (nPosition !== -1) {\n // Please note: the \"tag\" is considered to be what follows the backslash that signals it's beginning.\n var strTag = getTagAt(strToFix, nPosition);\n if (strTag && isClosingTag(strTag)) {\n // Get the new tag set required to add it in to the string\n var strCloseTags = getTextToCloseTag(strTag, arrTagStack);\n\n // Insert the tags and don't forget the rest of the original, if there is any\n var nTagEnd = strToFix.indexOf(TAG_END_NOTATION, nPosition);\n if (nTagEnd !== -1) {\n strToFix = strToFix.substring(0, nPosition) + strCloseTags + strToFix.substring(nTagEnd + 1);\n } else {\n strToFix = strToFix.substring(0, nPosition) + strCloseTags;\n }\n\n // Increment this so that we're not going through the stuff we just inserted\n nPosition += strCloseTags.length;\n } else {\n if (strTag && !isBlacklistedTag(strTag)) {\n arrTagStack.push(matchingTag(strTag));\n }\n nPosition = Number(nPosition) + 1;\n }\n nPosition = findNextTag(strToFix, nPosition);\n }\n }\n return strToFix;\n};\nvar removeEmptyTags = function removeEmptyTags(strToFix) {\n var strFixed = strToFix;\n if (strFixed) {\n // Loop through the entire string as long as there were corrections made last time\n // (in case more can be made based on the previous ones)\n var nCountCorrectedThisLoop = 1;\n while (nCountCorrectedThisLoop > 0) {\n nCountCorrectedThisLoop = 0;\n // Get the first tag that isn't blacklisted\n var nPosition = findNextTagNotBlacklisted(strFixed);\n while (nPosition !== -1) {\n // Get the next tag that's not blacklisted\n var nNextPosition = findNextTagNotBlacklisted(strFixed, nPosition + 1);\n\n // Get the actual tag\n var strTag = getTagAt(strFixed, nPosition);\n // If the actual tag exists\n if (strTag) {\n // As long as that next tag is actually found\n if (nNextPosition !== -1) {\n // Set up the alternate tag that we're trying to match with\n var strAlternateTag = matchingTag(strTag);\n\n // Get the actual next tag\n var strNextTag = getTagAt(strFixed, nNextPosition);\n // If the actual next tag exists and is the same as what we're looking for\n if (strNextTag && strNextTag === strAlternateTag) {\n // Get the string between the two tags\n var nStringBetweenBegin = nPosition + 1 + strTag.length;\n var strBetween = strFixed.substring(nStringBetweenBegin, nNextPosition);\n // If the trimmed string is empty\n if (!trimString(strBetween).length) {\n // Remove the ending tag\n strFixed = removeTag(strFixed, nNextPosition);\n // Then remove the beginning tag that we're actually at\n strFixed = removeTag(strFixed, nPosition);\n\n // Adjust the position of that next tag by the amount of space we've reduced\n nNextPosition -= strTag.length + 1;\n // Note that we've made a correction\n nCountCorrectedThisLoop++;\n }\n }\n }\n }\n\n // Set the actual next position for the inner loop\n nPosition = nNextPosition;\n }\n }\n }\n return strFixed;\n};\nvar toText = function toText(str) {\n if (str.match(/{\\\\rtf1 /)) {\n str = str.replace(/{\\\\rtf1 /, '');\n if (str.charAt(str.length - 1) === '}') {\n str = str.substring(0, str.length - 1);\n }\n }\n str = str.replace(/\\\\i /g, '');\n str = str.replace(/\\\\i0 /g, '');\n str = str.replace(/\\\\b /g, '');\n str = str.replace(/\\\\b0 /g, '');\n str = str.replace(/\\\\ul /g, '');\n str = str.replace(/\\\\ul0 /g, '');\n str = str.replace(/\\\\par/g, '');\n str = str.replace(/\\\\{/g, '{');\n str = str.replace(/\\\\}/g, '}');\n str = str.replace(/\\\\\\\\/g, '\\\\');\n return str;\n};\nvar toHtml = function toHtml(str) {\n str = nestTags(str);\n str = removeEmptyTags(str);\n str = str.split('<').join('<');\n str = str.split('>').join('>');\n var removeLastBracket = false;\n\n // remove the RTF and Replace with HTML\n if (str.indexOf('{\\\\rtf1') !== -1) {\n str = str.split('{\\\\rtf1 ').join('');\n removeLastBracket = true;\n }\n str = str.split('\\\\i0 ').join('');\n str = str.split('\\\\b0 ').join('');\n str = str.split(\"\\\\ul0 \").join('');\n str = str.split('\\\\i ').join('');\n str = str.split('\\\\b ').join('');\n str = str.split(\"\\\\ul \").join('');\n str = str.split('\\\\par ').join('
');\n str = str.split('\\\\{').join('{');\n str = str.split('\\\\}').join('}');\n str = str.split('\\\\\\\\').join('\\\\');\n if (removeLastBracket && str.charAt(str.length - 1) === '}') {\n str = str.substring(0, str.length - 1);\n }\n\n // convert these so they are displayed and not used as HTML Tags ( exception
)\n str = str.split('<br>').join('
');\n str = str.split('<BR>').join('
');\n return str;\n};\n\n/** @module Rtf */\nvar Rtf = {\n /**\n * Take a string with rtf markup and translate it to text\n * @function toText\n * @param {String} str - The rtf formatted input string to parse.\n * @static\n * @return {String} The string as text-only\n */\n toText: toText,\n /**\n * Take a string with rtf markup and translate it to html\n * @function toHtml\n * @param {String} str - The rtf formatted input string to parse.\n * @static\n * @return {String} The string with html markup aligning to the rtf markup\n */\n toHtml: toHtml\n};\nvar validateParams = function validateParams(params) {\n return params && typeof params.text === 'string' && (!params.languageIdentifierString || typeof params.languageIdentifierString === 'string');\n};\nvar CaptionText = function CaptionText(params) {\n var _languageIdentifier = LanguageIdentifier$1.create(languageIdentifiers.identifiers[\"default\"]);\n var _text;\n var _plainText;\n var _markupText;\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var setLanguageIdentifier = function setLanguageIdentifier(languageIdentifierString) {\n if (!languageIdentifiers.isSupportedLanguage(languageIdentifierString)) {\n languageIdentifierString = languageIdentifiers.identifiers[\"default\"];\n }\n var previousLanguageIdentifierString = _languageIdentifier.identifier;\n _languageIdentifier = LanguageIdentifier$1.create(languageIdentifierString);\n return UndoAction$1.create(setLanguageIdentifier, previousLanguageIdentifierString, setLanguageIdentifier, languageIdentifierString);\n };\n var setText = function setText(text) {\n if (typeof text !== 'string') {\n throw new Error('Caption text is expecting a string, but got (' + text + ')');\n }\n var previous = _text;\n _text = text;\n _plainText = Rtf.toText(_text);\n _markupText = Rtf.toHtml(_text);\n return UndoAction$1.create(setText, previous, setText, _text);\n };\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n atts: {\n 'xml:lang': _languageIdentifier.identifier\n },\n text: _text\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n languageIdentifier: {\n get: function get() {\n return _languageIdentifier;\n }\n },\n language: {\n get: function get() {\n return _languageIdentifier.language;\n }\n },\n text: {\n get: function get() {\n return _text;\n }\n },\n plainText: {\n get: function get() {\n return _plainText;\n }\n },\n markupText: {\n get: function get() {\n return _markupText;\n }\n }\n });\n _public.setLanguageIdentifier = setLanguageIdentifier;\n _public.setText = setText;\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n languageIdentifier: _languageIdentifier.toPOJO(),\n language: _languageIdentifier.language,\n text: _text,\n plainText: _plainText,\n markupText: _markupText\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n if (validateParams(params)) {\n forEach(keys$1(params), function (key) {\n if (key === 'languageIdentifierString') {\n setLanguageIdentifier(params.languageIdentifierString);\n } else if (key === 'text') {\n setText(params.text);\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n } else {\n throw new Error('CaptionText expects text and language parameters');\n }\n return _public;\n};\nvar createFromXmpElement = function createFromXmpElement(textElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var rtfText = _xmlUtility.getElementText(textElement);\n var params = {\n languageIdentifierString: textElement.getAttribute('xml:lang'),\n text: rtfText\n };\n return CaptionText(params);\n};\n\n/** @module CaptionText */\nvar CaptionText$1 = {\n /**\n * Factory method that returns a new CaptionText object.\n * @function create\n * @param {Object} params - Optional params for caption\n * @param {String} [params.languageIdentifierString] - RFC 3066 notation language string\n * @param {String} [params.text] - Text of caption item.\n * @static\n * @return {module:CaptionText} new CaptionText instance\n */\n create: function create(params) {\n return CaptionText(params);\n },\n /**\n * Factory method that returns a new CaptionText object from an XMP caption element.\n * @function createFromXmpElement\n * @param {Object} element - XMP caption item element.\n * @static\n * @return {module:CaptionText} new CaptionText instance\n */\n createFromXmpElement: createFromXmpElement\n};\nvar decoratorFunctions = [];\nvar nullCaptionText = {\n text: undefined,\n plainText: undefined,\n markupText: undefined\n};\nvar Caption = function Caption(params) {\n var _startTime;\n var _duration;\n var _captionTextList = [];\n var _horizontalAlignment;\n var _verticalAlignment;\n var _file;\n var _image;\n var _imageIndex;\n var _imageOffset;\n var _imageRectangle;\n var _activeLanguageIdentifier = LanguageIdentifier$1.create(languageIdentifiers.identifiers[\"default\"]);\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var getAvailableLanguages = function getAvailableLanguages() {\n return map(_captionTextList, function (captionText) {\n return captionText.languageIdentifier.identifier;\n });\n };\n var setStartTime = function setStartTime(startTime) {\n if (typeof startTime !== 'number') {\n throw new Error('Caption startTime is expecting a number, but got (' + startTime + ')');\n }\n var previous = _startTime;\n _startTime = Math.floor(startTime);\n return UndoAction$1.create(setStartTime, previous, setStartTime, _startTime);\n };\n var setDuration = function setDuration(duration) {\n if (typeof duration !== 'number') {\n throw new Error('Caption duration is expecting a number, but got (' + duration + ')');\n }\n var previous = _duration;\n _duration = Math.floor(duration);\n return UndoAction$1.create(setDuration, previous, setDuration, _duration);\n };\n var addOrReplaceCaptionText = function addOrReplaceCaptionText(newCaptionText) {\n var existingCaptionItemIndex = findIndex(_captionTextList, function (captionItem) {\n return captionItem.languageIdentifier.identifier === newCaptionText.languageIdentifier.identifier;\n });\n if (existingCaptionItemIndex !== -1) {\n var oldCaptionItem = _captionTextList[existingCaptionItemIndex];\n _captionTextList.splice(existingCaptionItemIndex, 1, newCaptionText);\n return UndoAction$1.create(addOrReplaceCaptionText, oldCaptionItem, addOrReplaceCaptionText, newCaptionText);\n }\n if (newCaptionText.toPOJO) {\n _captionTextList.push(newCaptionText);\n } else {\n _captionTextList.push(CaptionText$1.create(newCaptionText));\n }\n return UndoAction$1.create(removeCaptionText, newCaptionText, addOrReplaceCaptionText, newCaptionText);\n };\n var removeCaptionText = function removeCaptionText(captionText) {\n var removedCaptionItems = remove(_captionTextList, function (captionTextItem) {\n return captionTextItem.languageIdentifier.identifier === captionText.languageIdentifier.identifier && captionTextItem.text === captionText.text;\n });\n var removedCaptionItem = removedCaptionItems.length > 0 ? removedCaptionItems[0] : undefined;\n return UndoAction$1.create(addOrReplaceCaptionText, removedCaptionItem, removeCaptionText, captionText);\n };\n var setHorizontalAlignment = function setHorizontalAlignment(horizontalAlignment) {\n if (typeof horizontalAlignment !== 'string') {\n throw new Error('Caption horizontalAlignment is expecting a string, but got (' + horizontalAlignment + ')');\n }\n var previous = _horizontalAlignment;\n _horizontalAlignment = horizontalAlignment;\n return UndoAction$1.create(setHorizontalAlignment, previous, setHorizontalAlignment, _horizontalAlignment);\n };\n var setVerticalAlignment = function setVerticalAlignment(verticalAlignment) {\n if (typeof verticalAlignment !== 'string') {\n throw new Error('Caption verticalAlignment is expecting a string, but got (' + verticalAlignment + ')');\n }\n var previous = _verticalAlignment;\n _verticalAlignment = verticalAlignment;\n return UndoAction$1.create(setVerticalAlignment, previous, setVerticalAlignment, _verticalAlignment);\n };\n var setFile = function setFile(file) {\n if (typeof file !== 'string') {\n throw new Error('Caption file is expecting a string, but got (' + file + ')');\n }\n var previous = _file;\n _file = file;\n return UndoAction$1.create(setFile, previous, setFile, _file);\n };\n var setImage = function setImage(image) {\n if (typeof image !== 'string') {\n throw new Error('Caption image is expecting a string, but got (' + image + ')');\n }\n var previous = _image;\n _image = image;\n return UndoAction$1.create(setImage, previous, setImage, _image);\n };\n var setImageIndex = function setImageIndex(imageIndex) {\n if (typeof imageIndex !== 'number') {\n throw new Error('Caption imageIndex is expecting a number, but got (' + imageIndex + ')');\n }\n var previous = _imageIndex;\n _imageIndex = imageIndex;\n return UndoAction$1.create(setImageIndex, previous, setImageIndex, _imageIndex);\n };\n var setImageOffset = function setImageOffset(imageOffset) {\n if (typeof imageOffset !== 'number') {\n throw new Error('Caption imageOffset is expecting a number, but got (' + imageOffset + ')');\n }\n var previous = _imageOffset;\n _imageOffset = imageOffset;\n return UndoAction$1.create(setImageOffset, previous, setImageOffset, _imageOffset);\n };\n var setImageRectangle = function setImageRectangle(imageRectangle) {\n if (_typeof$1(imageRectangle) !== 'object') {\n throw new Error('Caption imageRectangle is expecting an object, but got (' + imageRectangle + ')');\n }\n var previous = _imageRectangle;\n _imageRectangle = imageRectangle;\n return UndoAction$1.create(setImageRectangle, previous, setImageRectangle, _imageRectangle);\n };\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:startTime': _startTime,\n 'xmpDM:duration': _duration,\n 'tscDM:halign': _horizontalAlignment,\n 'tscDM:valign': _verticalAlignment,\n 'tscDM:file': _file,\n 'tscDM:image': _image,\n 'tscDM:imageindex': _imageIndex,\n 'tscDM:imageoffset': _imageOffset,\n 'tscDM:imagerect': _imageRectangle ? [_imageRectangle.x, _imageRectangle.y, _imageRectangle.width, _imageRectangle.height].join(', ') : undefined\n },\n children: [{\n name: 'xmpDM:name',\n children: [{\n name: 'rdf:Alt',\n children: _captionTextList\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var getCaptionText = function getCaptionText() {\n if (_captionTextList.length === 0) {\n return nullCaptionText;\n }\n if (_activeLanguageIdentifier.identifier === languageIdentifiers.identifiers[\"default\"]) {\n return _captionTextList[0];\n }\n var preferredCaptionText = find(_captionTextList, function (captionText) {\n return captionText.languageIdentifier.identifier === _activeLanguageIdentifier.identifier;\n });\n if (!preferredCaptionText) {\n preferredCaptionText = find(_captionTextList, function (captionText) {\n return captionText.language === _activeLanguageIdentifier.language;\n });\n }\n return preferredCaptionText || nullCaptionText;\n };\n var _public = Object.defineProperties({}, {\n startTime: {\n get: function get() {\n return _startTime;\n }\n },\n duration: {\n get: function get() {\n return _duration;\n }\n },\n endTime: {\n get: function get() {\n return _startTime + _duration;\n }\n },\n captionTextList: {\n get: function get() {\n return _captionTextList;\n }\n },\n text: {\n get: function get() {\n return getCaptionText().text;\n }\n },\n plainText: {\n get: function get() {\n return getCaptionText().plainText;\n }\n },\n markupText: {\n get: function get() {\n return getCaptionText().markupText;\n }\n },\n horizontalAlignment: {\n get: function get() {\n return _horizontalAlignment;\n }\n },\n verticalAlignment: {\n get: function get() {\n return _verticalAlignment;\n }\n },\n file: {\n get: function get() {\n return _file;\n }\n },\n image: {\n get: function get() {\n return _image;\n }\n },\n imageIndex: {\n get: function get() {\n return _imageIndex;\n }\n },\n imageOffset: {\n get: function get() {\n return _imageOffset;\n }\n },\n imageRectangle: {\n get: function get() {\n return _imageRectangle;\n }\n },\n activeLanguageIdentifier: {\n get: function get() {\n return _activeLanguageIdentifier;\n },\n set: function set(languageIdentifier) {\n _activeLanguageIdentifier = languageIdentifier;\n }\n }\n });\n _public.getAvailableLanguages = getAvailableLanguages;\n _public.setStartTime = setStartTime;\n _public.setDuration = setDuration;\n _public.addOrReplaceCaptionText = addOrReplaceCaptionText;\n _public.removeCaptionText = removeCaptionText;\n _public.setHorizontalAlignment = setHorizontalAlignment;\n _public.setVerticalAlignment = setVerticalAlignment;\n _public.setFile = setFile;\n _public.setImage = setImage;\n _public.setImageIndex = setImageIndex;\n _public.setImageOffset = setImageOffset;\n _public.setImageRectangle = setImageRectangle;\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n startTime: _startTime,\n duration: _duration,\n captionTextList: invokeMap(_captionTextList, 'toPOJO'),\n horizontalAlignment: _horizontalAlignment,\n verticalAlignment: _verticalAlignment,\n file: _file,\n image: _image,\n imageIndex: _imageIndex,\n imageOffset: _imageOffset,\n imageRectangle: _imageRectangle ? _imageRectangle.toPOJO() : _imageRectangle\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'startTime' && typeof params.startTime === 'number') {\n setStartTime(params.startTime);\n } else if (key === 'duration' && typeof params.duration === 'number') {\n setDuration(params.duration);\n } else if (key === 'captionTextList' && params.captionTextList) {\n map(params.captionTextList, addOrReplaceCaptionText);\n } else if (key === 'horizontalAlignment' && params.horizontalAlignment) {\n setHorizontalAlignment(params.horizontalAlignment);\n } else if (key === 'verticalAlignment' && params.verticalAlignment) {\n setVerticalAlignment(params.verticalAlignment);\n } else if (key === 'file' && params.file) {\n setFile(params.file);\n } else if (key === 'image' && params.image) {\n setImage(params.image);\n } else if (key === 'imageIndex' && typeof params.imageIndex === 'number') {\n setImageIndex(params.imageIndex);\n } else if (key === 'imageOffset' && typeof params.imageOffset === 'number') {\n setImageOffset(params.imageOffset);\n } else if (key === 'imageRectangle' && params.imageRectangle) {\n if (!params.imageRectangle.toPOJO) {\n params.imageRectangle = ImageRectangle$1.create(params.imageRectangle);\n }\n setImageRectangle(params.imageRectangle);\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n forEach(decoratorFunctions, function (func) {\n func(_public);\n });\n return _public;\n};\nvar createFromXmpElement$1 = function createFromXmpElement$1(captionElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var captionTextElements = _xmlUtility.getElementsByTagNameNSPrefix(captionElement, 'rdf:li');\n var captionTextList = map(captionTextElements, CaptionText$1.createFromXmpElement);\n var params = {\n startTime: Number(captionElement.getAttribute('xmpDM:startTime')),\n duration: Number(captionElement.getAttribute('xmpDM:duration')),\n captionTextList: captionTextList,\n horizontalAlignment: captionElement.getAttribute('tscDM:halign'),\n verticalAlignment: captionElement.getAttribute('tscDM:valign')\n };\n if (captionElement.getAttribute('tscDM:file')) {\n params.file = captionElement.getAttribute('tscDM:file');\n }\n if (captionElement.getAttribute('tscDM:image')) {\n params.image = captionElement.getAttribute('tscDM:image');\n }\n if (captionElement.getAttribute('tscDM:imageindex')) {\n params.imageIndex = Number(captionElement.getAttribute('tscDM:imageindex'));\n }\n if (captionElement.getAttribute('tscDM:imageoffset')) {\n params.imageOffset = Number(captionElement.getAttribute('tscDM:imageoffset'));\n }\n if (captionElement.getAttribute('tscDM:imagerect')) {\n params.imageRectangle = ImageRectangle$1.create(captionElement.getAttribute('tscDM:imagerect'));\n }\n return Caption(params);\n};\nvar registerDecorator = function registerDecorator(decorator) {\n if (decorator && typeof decorator === 'function') {\n decoratorFunctions.push(decorator);\n } else {\n throw new Error('decorator must be a function');\n }\n};\nvar clearDecorators = function clearDecorators() {\n decoratorFunctions = [];\n};\n\n/** @module Caption */\nvar Caption$1 = {\n /**\n * Factory method that returns a new Caption object.\n * @function create\n * @param {Object} params - Optional params for caption\n * @param {Number} [params.startTime] - Start time of caption.\n * @param {Number} [params.duration] - Duration of caption.\n * @param {module:CaptionText[]} [params.captionTextList] - List of CaptionText objects.\n * @param {String} [params.horizontalAlignment] - Horizontal alignment of caption text.\n * @param {String} [params.verticalAlignment] - Vertical alignment of caption text.\n * @param {String} [params.file] - Reference to a specific file as String.\n * @param {String} [params.image] - Url for caption thumbnail.\n * @param {Number} [params.imageIndex] - Index of image within file consisting of one or more images.\n * @param {Number} [params.imageOffset] - Number of bytes this image begins at, relative to the beginning of the entire file\n * @param {module:ImageRectangle} [params.imageRectangle] - Image Rectangle for image sprite map\n * @static\n * @return {module:Caption} new Caption instance\n */\n create: function create(params) {\n return Caption(params);\n },\n /**\n * Factory method that returns a new Caption object from an XMP caption element.\n * @function createFromXmpElement\n * @param {Object} element - XMP caption element.\n * @static\n * @return {module:Caption} new Caption instance\n */\n createFromXmpElement: createFromXmpElement$1,\n /**\n * Method to allow registration of decorator function that can extend the caption\n * object before it is returned in the create functions.\n * @function registerDecorator\n * @param {Function} decorator - Function that will be used to decorate the caption.\n * The function should take a caption parameter.\n * @static\n */\n registerDecorator: registerDecorator,\n /**\n * Method to allow clearing decorator functions\n * @function clearDecorators\n * @static\n */\n clearDecorators: clearDecorators\n};\nfunction createCommonjsModule(fn, module) {\n return module = {\n exports: {}\n }, fn(module, module.exports), module.exports;\n}\nvar tinycolor$1 = createCommonjsModule(function (module) {\n // TinyColor v1.4.1\n // https://github.com/bgrins/TinyColor\n // Brian Grinstead, MIT License\n\n (function (Math) {\n var trimLeft = /^\\s+/,\n trimRight = /\\s+$/,\n tinyCounter = 0,\n mathRound = Math.round,\n mathMin = Math.min,\n mathMax = Math.max,\n mathRandom = Math.random;\n function tinycolor(color, opts) {\n color = color ? color : '';\n opts = opts || {};\n\n // If input is already a tinycolor, return itself\n if (color instanceof tinycolor) {\n return color;\n }\n // If we are called as a function, call using new instead\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n var rgb = inputToRGB(color);\n this._originalInput = color, this._r = rgb.r, this._g = rgb.g, this._b = rgb.b, this._a = rgb.a, this._roundA = mathRound(100 * this._a) / 100, this._format = opts.format || rgb.format;\n this._gradientType = opts.gradientType;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this._r < 1) {\n this._r = mathRound(this._r);\n }\n if (this._g < 1) {\n this._g = mathRound(this._g);\n }\n if (this._b < 1) {\n this._b = mathRound(this._b);\n }\n this._ok = rgb.ok;\n this._tc_id = tinyCounter++;\n }\n tinycolor.prototype = {\n isDark: function isDark() {\n return this.getBrightness() < 128;\n },\n isLight: function isLight() {\n return !this.isDark();\n },\n isValid: function isValid() {\n return this._ok;\n },\n getOriginalInput: function getOriginalInput() {\n return this._originalInput;\n },\n getFormat: function getFormat() {\n return this._format;\n },\n getAlpha: function getAlpha() {\n return this._a;\n },\n getBrightness: function getBrightness() {\n //http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n },\n getLuminance: function getLuminance() {\n //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var RsRGB, GsRGB, BsRGB, R, G, B;\n RsRGB = rgb.r / 255;\n GsRGB = rgb.g / 255;\n BsRGB = rgb.b / 255;\n if (RsRGB <= 0.03928) {\n R = RsRGB / 12.92;\n } else {\n R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n }\n if (GsRGB <= 0.03928) {\n G = GsRGB / 12.92;\n } else {\n G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n }\n if (BsRGB <= 0.03928) {\n B = BsRGB / 12.92;\n } else {\n B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n }\n return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n },\n setAlpha: function setAlpha(value) {\n this._a = boundAlpha(value);\n this._roundA = mathRound(100 * this._a) / 100;\n return this;\n },\n toHsv: function toHsv() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return {\n h: hsv.h * 360,\n s: hsv.s,\n v: hsv.v,\n a: this._a\n };\n },\n toHsvString: function toHsvString() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = mathRound(hsv.h * 360),\n s = mathRound(hsv.s * 100),\n v = mathRound(hsv.v * 100);\n return this._a == 1 ? \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" : \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \" + this._roundA + \")\";\n },\n toHsl: function toHsl() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return {\n h: hsl.h * 360,\n s: hsl.s,\n l: hsl.l,\n a: this._a\n };\n },\n toHslString: function toHslString() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = mathRound(hsl.h * 360),\n s = mathRound(hsl.s * 100),\n l = mathRound(hsl.l * 100);\n return this._a == 1 ? \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" : \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \" + this._roundA + \")\";\n },\n toHex: function toHex(allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function toHexString(allow3Char) {\n return '#' + this.toHex(allow3Char);\n },\n toHex8: function toHex8(allow4Char) {\n return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n },\n toHex8String: function toHex8String(allow4Char) {\n return '#' + this.toHex8(allow4Char);\n },\n toRgb: function toRgb() {\n return {\n r: mathRound(this._r),\n g: mathRound(this._g),\n b: mathRound(this._b),\n a: this._a\n };\n },\n toRgbString: function toRgbString() {\n return this._a == 1 ? \"rgb(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \")\" : \"rgba(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \", \" + this._roundA + \")\";\n },\n toPercentageRgb: function toPercentageRgb() {\n return {\n r: mathRound(bound01(this._r, 255) * 100) + \"%\",\n g: mathRound(bound01(this._g, 255) * 100) + \"%\",\n b: mathRound(bound01(this._b, 255) * 100) + \"%\",\n a: this._a\n };\n },\n toPercentageRgbString: function toPercentageRgbString() {\n return this._a == 1 ? \"rgb(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%)\" : \"rgba(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n },\n toName: function toName() {\n if (this._a === 0) {\n return \"transparent\";\n }\n if (this._a < 1) {\n return false;\n }\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function toFilter(secondColor) {\n var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n }\n return \"progid:DXImageTransform.Microsoft.gradient(\" + gradientType + \"startColorstr=\" + hex8String + \",endColorstr=\" + secondHex8String + \")\";\n },\n toString: function toString(format) {\n var formatSet = !!format;\n format = format || this._format;\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === \"name\" && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"hex4\") {\n formattedString = this.toHex8String(true);\n }\n if (format === \"hex8\") {\n formattedString = this.toHex8String();\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n return formattedString || this.toHexString();\n },\n clone: function clone() {\n return tinycolor(this.toString());\n },\n _applyModification: function _applyModification(fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function lighten() {\n return this._applyModification(_lighten, arguments);\n },\n brighten: function brighten() {\n return this._applyModification(_brighten, arguments);\n },\n darken: function darken() {\n return this._applyModification(_darken, arguments);\n },\n desaturate: function desaturate() {\n return this._applyModification(_desaturate, arguments);\n },\n saturate: function saturate() {\n return this._applyModification(_saturate, arguments);\n },\n greyscale: function greyscale() {\n return this._applyModification(_greyscale, arguments);\n },\n spin: function spin() {\n return this._applyModification(_spin, arguments);\n },\n _applyCombination: function _applyCombination(fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function analogous() {\n return this._applyCombination(_analogous, arguments);\n },\n complement: function complement() {\n return this._applyCombination(_complement, arguments);\n },\n monochromatic: function monochromatic() {\n return this._applyCombination(_monochromatic, arguments);\n },\n splitcomplement: function splitcomplement() {\n return this._applyCombination(_splitcomplement, arguments);\n },\n triad: function triad() {\n return this._applyCombination(_triad, arguments);\n },\n tetrad: function tetrad() {\n return this._applyCombination(_tetrad, arguments);\n }\n };\n\n // If input is an object, force 1 into \"1.0\" to handle ratios properly\n // String input requires \"1.0\" as input, so 1 will be treated as 1\n tinycolor.fromRatio = function (color, opts) {\n if (_typeof$1(color) == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n } else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n return tinycolor(color, opts);\n };\n\n // Given a string or object, convert that input to RGB\n // Possible string inputs:\n //\n // \"red\"\n // \"#f00\" or \"f00\"\n // \"#ff0000\" or \"ff0000\"\n // \"#ff000000\" or \"ff000000\"\n // \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n // \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n // \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n // \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n // \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n // \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n // \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n //\n function inputToRGB(color) {\n var rgb = {\n r: 0,\n g: 0,\n b: 0\n };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n if (_typeof$1(color) == \"object\") {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = \"hsv\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = \"hsl\";\n }\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n a = boundAlpha(a);\n return {\n ok: ok,\n format: color.format || format,\n r: mathMin(255, mathMax(rgb.r, 0)),\n g: mathMin(255, mathMax(rgb.g, 0)),\n b: mathMin(255, mathMax(rgb.b, 0)),\n a: a\n };\n }\n\n // Conversion Functions\n // --------------------\n\n // `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n // \n\n // `rgbToRgb`\n // Handle bounds / percentage checking to conform to CSS color spec\n // \n // *Assumes:* r, g, b in [0, 255] or [0, 1]\n // *Returns:* { r, g, b } in [0, 255]\n function rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255\n };\n }\n\n // `rgbToHsl`\n // Converts an RGB color value to HSL.\n // *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n // *Returns:* { h, s, l } in [0,1]\n function rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = mathMax(r, g, b),\n min = mathMin(r, g, b);\n var h,\n s,\n l = (max + min) / 2;\n if (max == min) {\n h = s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n l: l\n };\n }\n\n // `hslToRgb`\n // Converts an HSL color value to RGB.\n // *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n // *Returns:* { r, g, b } in the set [0, 255]\n function hslToRgb(h, s, l) {\n var r, g, b;\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n }\n\n // `rgbToHsv`\n // Converts an RGB color value to HSV\n // *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n // *Returns:* { h, s, v } in [0,1]\n function rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = mathMax(r, g, b),\n min = mathMin(r, g, b);\n var h,\n s,\n v = max;\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n if (max == min) {\n h = 0; // achromatic\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n v: v\n };\n }\n\n // `hsvToRgb`\n // Converts an HSV color value to RGB.\n // *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n // *Returns:* { r, g, b } in the set [0, 255]\n function hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n var i = Math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n }\n\n // `rgbToHex`\n // Converts an RGB color to hex\n // Assumes r, g, and b are contained in the set [0, 255]\n // Returns a 3 or 6 character hex\n function rgbToHex(r, g, b, allow3Char) {\n var hex = [pad2(mathRound(r).toString(16)), pad2(mathRound(g).toString(16)), pad2(mathRound(b).toString(16))];\n\n // Return a 3 character hex if possible\n if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n return hex.join(\"\");\n }\n\n // `rgbaToHex`\n // Converts an RGBA color plus alpha transparency to hex\n // Assumes r, g, b are contained in the set [0, 255] and\n // a in [0, 1]. Returns a 4 or 8 character rgba hex\n function rgbaToHex(r, g, b, a, allow4Char) {\n var hex = [pad2(mathRound(r).toString(16)), pad2(mathRound(g).toString(16)), pad2(mathRound(b).toString(16)), pad2(convertDecimalToHex(a))];\n\n // Return a 4 character hex if possible\n if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n return hex.join(\"\");\n }\n\n // `rgbaToArgbHex`\n // Converts an RGBA color to an ARGB Hex8 string\n // Rarely used, but required for \"toFilter()\"\n function rgbaToArgbHex(r, g, b, a) {\n var hex = [pad2(convertDecimalToHex(a)), pad2(mathRound(r).toString(16)), pad2(mathRound(g).toString(16)), pad2(mathRound(b).toString(16))];\n return hex.join(\"\");\n }\n\n // `equals`\n // Can be called with any tinycolor input\n tinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) {\n return false;\n }\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n };\n tinycolor.random = function () {\n return tinycolor.fromRatio({\n r: mathRandom(),\n g: mathRandom(),\n b: mathRandom()\n });\n };\n\n // Modification Functions\n // ----------------------\n // Thanks to less.js for some of the basics here\n // \n\n function _desaturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n }\n function _saturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n }\n function _greyscale(color) {\n return tinycolor(color).desaturate(100);\n }\n function _lighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n }\n function _brighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var rgb = tinycolor(color).toRgb();\n rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * -(amount / 100))));\n rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * -(amount / 100))));\n rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * -(amount / 100))));\n return tinycolor(rgb);\n }\n function _darken(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n }\n\n // Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n // Values outside of this range will be wrapped into this range.\n function _spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n }\n\n // Combination Functions\n // ---------------------\n // Thanks to jQuery xColor for some of the ideas behind these\n // \n\n function _complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n }\n function _triad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [tinycolor(color), tinycolor({\n h: (h + 120) % 360,\n s: hsl.s,\n l: hsl.l\n }), tinycolor({\n h: (h + 240) % 360,\n s: hsl.s,\n l: hsl.l\n })];\n }\n function _tetrad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [tinycolor(color), tinycolor({\n h: (h + 90) % 360,\n s: hsl.s,\n l: hsl.l\n }), tinycolor({\n h: (h + 180) % 360,\n s: hsl.s,\n l: hsl.l\n }), tinycolor({\n h: (h + 270) % 360,\n s: hsl.s,\n l: hsl.l\n })];\n }\n function _splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [tinycolor(color), tinycolor({\n h: (h + 72) % 360,\n s: hsl.s,\n l: hsl.l\n }), tinycolor({\n h: (h + 216) % 360,\n s: hsl.s,\n l: hsl.l\n })];\n }\n function _analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results;) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n }\n function _monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h,\n s = hsv.s,\n v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n while (results--) {\n ret.push(tinycolor({\n h: h,\n s: s,\n v: v\n }));\n v = (v + modification) % 1;\n }\n return ret;\n }\n\n // Utility Functions\n // ---------------------\n\n tinycolor.mix = function (color1, color2, amount) {\n amount = amount === 0 ? 0 : amount || 50;\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n var p = amount / 100;\n var rgba = {\n r: (rgb2.r - rgb1.r) * p + rgb1.r,\n g: (rgb2.g - rgb1.g) * p + rgb1.g,\n b: (rgb2.b - rgb1.b) * p + rgb1.b,\n a: (rgb2.a - rgb1.a) * p + rgb1.a\n };\n return tinycolor(rgba);\n };\n\n // Readability Functions\n // ---------------------\n // false\n // tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\n tinycolor.isReadable = function (color1, color2, wcag2) {\n var readability = tinycolor.readability(color1, color2);\n var wcag2Parms, out;\n out = false;\n wcag2Parms = validateWCAG2Parms(wcag2);\n switch (wcag2Parms.level + wcag2Parms.size) {\n case \"AAsmall\":\n case \"AAAlarge\":\n out = readability >= 4.5;\n break;\n case \"AAlarge\":\n out = readability >= 3;\n break;\n case \"AAAsmall\":\n out = readability >= 7;\n break;\n }\n return out;\n };\n\n // `mostReadable`\n // Given a base color and a list of possible foreground or background\n // colors for that base, returns the most readable color.\n // Optionally returns Black or White if the most readable color is unreadable.\n // *Example*\n // tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n // tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString(); // \"#ffffff\"\n // tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n // tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\n tinycolor.mostReadable = function (baseColor, colorList, args) {\n var bestColor = null;\n var bestScore = 0;\n var readability;\n var includeFallbackColors, level, size;\n args = args || {};\n includeFallbackColors = args.includeFallbackColors;\n level = args.level;\n size = args.size;\n for (var i = 0; i < colorList.length; i++) {\n readability = tinycolor.readability(baseColor, colorList[i]);\n if (readability > bestScore) {\n bestScore = readability;\n bestColor = tinycolor(colorList[i]);\n }\n }\n if (tinycolor.isReadable(baseColor, bestColor, {\n \"level\": level,\n \"size\": size\n }) || !includeFallbackColors) {\n return bestColor;\n } else {\n args.includeFallbackColors = false;\n return tinycolor.mostReadable(baseColor, [\"#fff\", \"#000\"], args);\n }\n };\n\n // Big List of Colors\n // ------------------\n // \n var names = tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"663399\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n };\n\n // Make it easy to access colors via `hexNames[hex]`\n var hexNames = tinycolor.hexNames = flip(names);\n\n // Utilities\n // ---------\n\n // `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\n function flip(o) {\n var flipped = {};\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n }\n\n // Return a valid alpha value [0,1] with all invalid values being set to 1\n function boundAlpha(a) {\n a = parseFloat(a);\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n return a;\n }\n\n // Take input from [0, n] and return it as [0, 1]\n function bound01(n, max) {\n if (isOnePointZero(n)) {\n n = \"100%\";\n }\n var processPercent = isPercentage(n);\n n = mathMin(max, mathMax(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if (Math.abs(n - max) < 0.000001) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return n % max / parseFloat(max);\n }\n\n // Force a number between 0 and 1\n function clamp01(val) {\n return mathMin(1, mathMax(0, val));\n }\n\n // Parse a base-16 hex value into a base-10 integer\n function parseIntFromHex(val) {\n return parseInt(val, 16);\n }\n\n // Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n // \n function isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf('.') != -1 && parseFloat(n) === 1;\n }\n\n // Check to see if string passed in is a percentage\n function isPercentage(n) {\n return typeof n === \"string\" && n.indexOf('%') != -1;\n }\n\n // Force a hex value to have 2 characters\n function pad2(c) {\n return c.length == 1 ? '0' + c : '' + c;\n }\n\n // Replace a decimal with it's percentage value\n function convertToPercentage(n) {\n if (n <= 1) {\n n = n * 100 + \"%\";\n }\n return n;\n }\n\n // Converts a decimal to a hex value\n function convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n }\n // Converts a hex value to a decimal\n function convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n }\n var matchers = function () {\n // \n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n // \n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n return {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n };\n }();\n\n // `isValidCSSUnit`\n // Take in a single string / number and check to see if it looks like a CSS unit\n // (see `matchers` above for definition).\n function isValidCSSUnit(color) {\n return !!matchers.CSS_UNIT.exec(color);\n }\n\n // `stringInputToObject`\n // Permissive string parsing. Take in a number of formats, and output an object\n // based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\n function stringInputToObject(color) {\n color = color.replace(trimLeft, '').replace(trimRight, '').toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n } else if (color == 'transparent') {\n return {\n r: 0,\n g: 0,\n b: 0,\n a: 0,\n format: \"name\"\n };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if (match = matchers.rgb.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3]\n };\n }\n if (match = matchers.rgba.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsl.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3]\n };\n }\n if (match = matchers.hsla.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsv.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3]\n };\n }\n if (match = matchers.hsva.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hex8.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex6.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n if (match = matchers.hex4.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n a: convertHexToDecimal(match[4] + '' + match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex3.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n return false;\n }\n function validateWCAG2Parms(parms) {\n // return valid WCAG2 parms for isReadable.\n // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n var level, size;\n parms = parms || {\n \"level\": \"AA\",\n \"size\": \"small\"\n };\n level = (parms.level || \"AA\").toUpperCase();\n size = (parms.size || \"small\").toLowerCase();\n if (level !== \"AA\" && level !== \"AAA\") {\n level = \"AA\";\n }\n if (size !== \"small\" && size !== \"large\") {\n size = \"small\";\n }\n return {\n \"level\": level,\n \"size\": size\n };\n }\n\n // Node: Export function\n if (module.exports) {\n module.exports = tinycolor;\n }\n // AMD/requirejs: Define the module\n else {\n window.tinycolor = tinycolor;\n }\n })(Math);\n});\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor,\n nativeMin = Math.min;\n\n/**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\nfunction baseSortedIndexBy(array, value, iteratee, retHighest) {\n value = iteratee(value);\n var low = 0,\n high = array == null ? 0 : array.length,\n valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? computed <= value : computed < value;\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n}\n\n/**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\nfunction sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, baseIteratee(iteratee));\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/** Used for built-in method references. */\nvar objectProto$c = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$9 = objectProto$c.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty$9.call(object, key) && eq(objValue, value)) || value === undefined && !(key in object)) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n var index = -1,\n length = props.length;\n while (++index < length) {\n var key = props[index];\n var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined;\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys$1(source), object);\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar objectProto$d = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$a = objectProto$d.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty$a.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn$1(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn$1(source), object);\n}\n\n/** Detect free variable `exports`. */\nvar freeExports$2 = (typeof exports === \"undefined\" ? \"undefined\" : _typeof$1(exports)) == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule$2 = freeExports$2 && (typeof module === \"undefined\" ? \"undefined\" : _typeof$1(module)) == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports$2 = freeModule$2 && freeModule$2.exports === freeExports$2;\n\n/** Built-in value references. */\nvar Buffer$1 = moduleExports$2 ? root.Buffer : undefined,\n allocUnsafe = Buffer$1 ? Buffer$1.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols$1 = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols$1 ? stubArray : function (object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn$1, getSymbolsIn);\n}\n\n/** Used for built-in method references. */\nvar objectProto$e = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$b = objectProto$e.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty$b.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto$2 = _Symbol ? _Symbol.prototype : undefined,\n symbolValueOf$1 = symbolProto$2 ? symbolProto$2.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf$1 ? Object(symbolValueOf$1.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/** `Object#toString` result references. */\nvar boolTag$2 = '[object Boolean]',\n dateTag$2 = '[object Date]',\n mapTag$3 = '[object Map]',\n numberTag$2 = '[object Number]',\n regexpTag$2 = '[object RegExp]',\n setTag$3 = '[object Set]',\n stringTag$3 = '[object String]',\n symbolTag$2 = '[object Symbol]';\nvar arrayBufferTag$2 = '[object ArrayBuffer]',\n dataViewTag$3 = '[object DataView]',\n float32Tag$1 = '[object Float32Array]',\n float64Tag$1 = '[object Float64Array]',\n int8Tag$1 = '[object Int8Array]',\n int16Tag$1 = '[object Int16Array]',\n int32Tag$1 = '[object Int32Array]',\n uint8Tag$1 = '[object Uint8Array]',\n uint8ClampedTag$1 = '[object Uint8ClampedArray]',\n uint16Tag$1 = '[object Uint16Array]',\n uint32Tag$1 = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag$2:\n return cloneArrayBuffer(object);\n case boolTag$2:\n case dateTag$2:\n return new Ctor(+object);\n case dataViewTag$3:\n return cloneDataView(object, isDeep);\n case float32Tag$1:\n case float64Tag$1:\n case int8Tag$1:\n case int16Tag$1:\n case int32Tag$1:\n case uint8Tag$1:\n case uint8ClampedTag$1:\n case uint16Tag$1:\n case uint32Tag$1:\n return cloneTypedArray(object, isDeep);\n case mapTag$3:\n return new Ctor();\n case numberTag$2:\n case stringTag$3:\n return new Ctor(object);\n case regexpTag$2:\n return cloneRegExp(object);\n case setTag$3:\n return new Ctor();\n case symbolTag$2:\n return cloneSymbol(object);\n }\n}\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = function () {\n function object() {}\n return function (proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object();\n object.prototype = undefined;\n return result;\n };\n}();\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return typeof object.constructor == 'function' && !isPrototype(object) ? baseCreate(getPrototype(object)) : {};\n}\n\n/** `Object#toString` result references. */\nvar mapTag$4 = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag$1(value) == mapTag$4;\n}\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n/** `Object#toString` result references. */\nvar setTag$4 = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag$1(value) == setTag$4;\n}\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag$3 = '[object Arguments]',\n arrayTag$2 = '[object Array]',\n boolTag$3 = '[object Boolean]',\n dateTag$3 = '[object Date]',\n errorTag$2 = '[object Error]',\n funcTag$2 = '[object Function]',\n genTag$1 = '[object GeneratorFunction]',\n mapTag$5 = '[object Map]',\n numberTag$3 = '[object Number]',\n objectTag$3 = '[object Object]',\n regexpTag$3 = '[object RegExp]',\n setTag$5 = '[object Set]',\n stringTag$4 = '[object String]',\n symbolTag$3 = '[object Symbol]',\n weakMapTag$2 = '[object WeakMap]';\nvar arrayBufferTag$3 = '[object ArrayBuffer]',\n dataViewTag$4 = '[object DataView]',\n float32Tag$2 = '[object Float32Array]',\n float64Tag$2 = '[object Float64Array]',\n int8Tag$2 = '[object Int8Array]',\n int16Tag$2 = '[object Int16Array]',\n int32Tag$2 = '[object Int32Array]',\n uint8Tag$2 = '[object Uint8Array]',\n uint8ClampedTag$2 = '[object Uint8ClampedArray]',\n uint16Tag$2 = '[object Uint16Array]',\n uint32Tag$2 = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag$3] = cloneableTags[arrayTag$2] = cloneableTags[arrayBufferTag$3] = cloneableTags[dataViewTag$4] = cloneableTags[boolTag$3] = cloneableTags[dateTag$3] = cloneableTags[float32Tag$2] = cloneableTags[float64Tag$2] = cloneableTags[int8Tag$2] = cloneableTags[int16Tag$2] = cloneableTags[int32Tag$2] = cloneableTags[mapTag$5] = cloneableTags[numberTag$3] = cloneableTags[objectTag$3] = cloneableTags[regexpTag$3] = cloneableTags[setTag$5] = cloneableTags[stringTag$4] = cloneableTags[symbolTag$3] = cloneableTags[uint8Tag$2] = cloneableTags[uint8ClampedTag$2] = cloneableTags[uint16Tag$2] = cloneableTags[uint32Tag$2] = true;\ncloneableTags[errorTag$2] = cloneableTags[funcTag$2] = cloneableTags[weakMapTag$2] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray$1(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag$1(value),\n isFunc = tag == funcTag$2 || tag == genTag$1;\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag$3 || tag == argsTag$3 || isFunc && !object) {\n result = isFlat || isFunc ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat ? copySymbolsIn(value, baseAssignIn(result, value)) : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack());\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n if (isSet(value)) {\n value.forEach(function (subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function (subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys$1;\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function (subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG$1 = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG$1);\n}\n\n/** Built-in value references. */\nvar spreadableSymbol = _Symbol ? _Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray$1(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n predicate || (predicate = isFlattenable);\n result || (result = []);\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n if (!othIsNull && !othIsSymbol && !valIsSymbol && value > other || valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol || valIsNull && othIsDefined && othIsReflexive || !valIsDefined && othIsReflexive || !valIsReflexive) {\n return 1;\n }\n if (!valIsNull && !valIsSymbol && !othIsSymbol && value < other || othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol || othIsNull && valIsDefined && valIsReflexive || !othIsDefined && valIsReflexive || !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(baseIteratee));\n var result = baseMap(collection, function (value, key, collection) {\n var criteria = arrayMap(iteratees, function (iteratee) {\n return iteratee(value);\n });\n return {\n 'criteria': criteria,\n 'index': ++index,\n 'value': value\n };\n });\n return baseSortBy(result, function (object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = _typeof$1(index);\n if (type == 'number' ? isArrayLike(object) && isIndex(index, object.length) : type == 'string' && index in object) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\nvar sortBy = baseRest(function (collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\nvar CaptionCollection = function CaptionCollection(params) {\n var _captions = [];\n var _activeLanguageIdentifier = LanguageIdentifier$1.create(languageIdentifiers.identifiers[\"default\"]);\n var _captionLanguages = {};\n var addCaptionFromLanguageCodeCache = function addCaptionFromLanguageCodeCache(caption) {\n caption.getAvailableLanguages().forEach(function (language) {\n if (!_captionLanguages[language]) {\n _captionLanguages[language] = 1;\n } else {\n _captionLanguages[language]++;\n }\n });\n };\n var removeCaptionFromLanguageCodeCache = function removeCaptionFromLanguageCodeCache(caption) {\n caption.getAvailableLanguages().forEach(function (language) {\n if (_captionLanguages[language]) {\n _captionLanguages[language]--;\n }\n if (_captionLanguages[language] === 0) {\n delete _captionLanguages[language];\n }\n });\n };\n var addCaption = function addCaption(caption) {\n addCaptionFromLanguageCodeCache(caption);\n caption.activeLanguageIdentifier = _activeLanguageIdentifier;\n var index = sortedIndexBy(_captions, caption, 'startTime');\n _captions.splice(index, 0, caption);\n return UndoAction$1.create(removeCaption, caption, addCaption, caption);\n };\n var removeCaption = function removeCaption(caption) {\n removeCaptionFromLanguageCodeCache(caption);\n var index = findIndex(_captions, caption);\n if (index !== -1) {\n _captions.splice(index, 1);\n return UndoAction$1.create(addCaption, caption, removeCaption, caption);\n }\n return UndoAction$1.noOp();\n };\n var setCaptions = function setCaptions(captions) {\n _captions = captions;\n _captionLanguages = [];\n _captions.forEach(function (caption) {\n addCaptionFromLanguageCodeCache(caption);\n });\n };\n var mergeCaptions = function mergeCaptions(captionsToMerge) {\n captionsToMerge.forEach(function (captionToMerge) {\n var matchingCaption = find(_captions, function (existingCaption) {\n return existingCaption.startTime === captionToMerge.startTime;\n });\n if (matchingCaption) {\n addCaptionFromLanguageCodeCache(captionToMerge);\n captionToMerge.captionTextList.forEach(function (captionText) {\n matchingCaption.addOrReplaceCaptionText(captionText);\n });\n }\n });\n };\n var clear = function clear() {\n var captionsClone = clone(_captions);\n _captions = [];\n _captionLanguages = [];\n return UndoAction$1.create(setCaptions, captionsClone, setCaptions, []);\n };\n var getAvailableLanguages = function getAvailableLanguages() {\n return Object.keys(_captionLanguages);\n };\n var setActiveLanguageIdentifier = function setActiveLanguageIdentifier(languageIdentifierString) {\n if (!languageIdentifiers.isSupportedLanguage(languageIdentifierString)) {\n languageIdentifierString = languageIdentifiers.identifiers[\"default\"];\n }\n var languageIdentifier = LanguageIdentifier$1.create(languageIdentifierString);\n var previousActiveLanguageIdentifierString = _activeLanguageIdentifier.identifier;\n _activeLanguageIdentifier = languageIdentifier;\n forEach(_captions, function (caption) {\n caption.activeLanguageIdentifier = languageIdentifier;\n });\n return UndoAction$1.create(setActiveLanguageIdentifier, previousActiveLanguageIdentifierString, setActiveLanguageIdentifier, languageIdentifierString);\n };\n var getActiveLanguageIdentifier = function getActiveLanguageIdentifier() {\n return _activeLanguageIdentifier;\n };\n if (params) {\n if (params.hasOwnProperty('captions') && isArray$1(params.captions)) {\n _captions = sortBy(params.captions, ['startTime']);\n _captions.forEach(function (caption) {\n addCaptionFromLanguageCodeCache(caption);\n });\n } else {\n throw new Error('CaptionCollection params is expecting an object eg. { captions: [caption1Object, ...] }');\n }\n }\n var _public = Object.defineProperties({}, {\n captions: {\n get: function get() {\n return _captions;\n }\n }\n });\n _public.setActiveLanguageIdentifier = setActiveLanguageIdentifier;\n _public.getActiveLanguageIdentifier = getActiveLanguageIdentifier;\n _public.getAvailableLanguages = getAvailableLanguages;\n _public.addCaption = addCaption;\n _public.removeCaption = removeCaption;\n _public.mergeCaptions = mergeCaptions;\n _public.clear = clear;\n _public.toPOJO = function () {\n return {\n captions: _captions\n };\n };\n return _public;\n};\n\n/** @module CaptionCollection */\nvar CaptionCollection$1 = {\n /**\n * Factory method that returns a new CaptionCollection object.\n * @function create\n * @param {Object} params - Optional params for caption\n * @param {Array} [params.captions] - array containing {module:Caption} objects.\n * @static\n * @return {module:CaptionCollection} new CaptionCollection instance\n */\n create: function create(params) {\n return CaptionCollection(params);\n }\n};\nvar _defaults$1 = Object.freeze({\n fontFamily: 'Arial, Helvetica, sans-serif;',\n fontSize: 24,\n fgColor: tinycolor$1({\n r: 255,\n g: 255,\n b: 255\n }),\n bgColor: tinycolor$1({\n r: 0,\n g: 0,\n b: 0,\n a: 0.9\n })\n});\nvar CaptionTrack = function CaptionTrack(params) {\n params = params || {};\n var _languageIdentifier = params.languageIdentifierString ? LanguageIdentifier$1.create(params.languageIdentifierString) : LanguageIdentifier$1.create(languageIdentifiers.identifiers[\"default\"]);\n var _fgColor = params.fgColor ? tinycolor$1(params.fgColor) : _defaults$1.fgColor.clone();\n var _bgColor = params.bgColor ? tinycolor$1(params.bgColor) : _defaults$1.bgColor.clone();\n var _fontFamily = params.fontFamily ? params.fontFamily : _defaults$1.fontFamily;\n var _fontSize = parseFontSize(params, _defaults$1.fontSize);\n var _position = params.position ? params.position : undefined;\n var _barHeight = params.barHeight ? params.barHeight : undefined;\n var _captionCollection = params.captions ? CaptionCollection$1.create({\n captions: params.captions\n }) : CaptionCollection$1.create();\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:trackType': 'Caption',\n 'xmpDM:frameRate': 'f1000',\n 'xmpDM:trackName': 'Captioning',\n 'stFnt:fontFamily': _fontFamily,\n 'tscDM:fontSize': _fontSize,\n 'tscDM:bgOpacity': _bgColor.getAlpha(),\n 'tscDM:position': _position,\n 'tscDM:captionbarheight': _barHeight\n },\n children: [{\n name: 'xmpDM:markers',\n children: [{\n name: 'rdf:Seq',\n children: _captionCollection.captions\n }]\n }, {\n name: 'tsc:fgColor',\n atts: attsFromColor(_fgColor.toRgb())\n }, {\n name: 'tsc:bgColor',\n atts: attsFromColor(_bgColor.toRgb())\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var attsFromColor = function attsFromColor(color) {\n return {\n 'xmpG:red': color.r,\n 'xmpG:green': color.g,\n 'xmpG:blue': color.b,\n 'xmpG:mode': 'RGB'\n };\n };\n var tinycolorToSimpleRgb = function tinycolorToSimpleRgb(tinycolorObj) {\n var rgbaColorObj = tinycolorObj.toRgb();\n return {\n r: rgbaColorObj.r,\n g: rgbaColorObj.g,\n b: rgbaColorObj.b\n };\n };\n var _public = Object.defineProperties({}, {\n languageIdentifier: {\n get: function get() {\n return _languageIdentifier;\n }\n },\n fgColor: {\n get: function get() {\n return tinycolorToSimpleRgb(_fgColor);\n }\n },\n fgHexColor: {\n get: function get() {\n return _fgColor.toHexString();\n }\n },\n bgColor: {\n get: function get() {\n return tinycolorToSimpleRgb(_bgColor);\n }\n },\n bgOpacity: {\n get: function get() {\n return _bgColor.getAlpha();\n }\n },\n bgHexColor: {\n get: function get() {\n return _bgColor.toHexString();\n }\n },\n bgRGBACssColor: {\n get: function get() {\n return _bgColor.toRgbString();\n }\n },\n fontFamily: {\n get: function get() {\n return _fontFamily;\n }\n },\n fontSize: {\n get: function get() {\n return _fontSize;\n }\n },\n position: {\n get: function get() {\n return _position;\n }\n },\n barHeight: {\n get: function get() {\n return _barHeight;\n }\n },\n captionCollection: {\n get: function get() {\n return _captionCollection;\n }\n }\n });\n _public.setActiveLanguageIdentifier = _captionCollection.setActiveLanguageIdentifier;\n _public.getActiveLanguageIdentifier = _captionCollection.getActiveLanguageIdentifier;\n _public.getAvailableLanguages = _captionCollection.getAvailableLanguages;\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n fgColor: _fgColor.toRgb(),\n bgColor: _bgColor.toRgb(),\n bgOpacity: _bgColor.getAlpha(),\n fontFamily: _fontFamily,\n fontSize: _fontSize,\n position: _position,\n barHeight: _barHeight,\n captions: invokeMap(_captionCollection.captions, 'toPOJO')\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n return pojo;\n };\n return _public;\n};\nvar getRGBColor = function getRGBColor(element) {\n return {\n r: Number(element.getAttribute('xmpG:red')),\n g: Number(element.getAttribute('xmpG:green')),\n b: Number(element.getAttribute('xmpG:blue'))\n };\n};\nvar parseFontSize = function parseFontSize(params, defaultFontSize) {\n if (!params.fontSize) {\n return defaultFontSize;\n }\n var parsedFontSize = +params.fontSize;\n if (isString(params.fontSize)) {\n parsedFontSize = +params.fontSize.replace('px', '').replace('pt', '');\n }\n return parsedFontSize ? parsedFontSize : defaultFontSize;\n};\nvar createFromXmpElement$2 = function createFromXmpElement$2(captionTrackElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var captionTrack = new CaptionTrack();\n if (captionTrackElement) {\n var fgColorElement = _xmlUtility.getFirstElementByTagNameNSPrefix(captionTrackElement, 'tsc:fgColor');\n var bgColorElement = _xmlUtility.getFirstElementByTagNameNSPrefix(captionTrackElement, 'tsc:bgColor');\n var captionElements = _xmlUtility.getElementsByTagNameNSPrefix(captionTrackElement, 'rdf:Description');\n var captions = map(captionElements, Caption$1.createFromXmpElement);\n var params = {\n fgColor: getRGBColor(fgColorElement),\n bgColor: getRGBColor(bgColorElement),\n fontFamily: captionTrackElement.getAttribute('stFnt:fontFamily'),\n fontSize: Number(captionTrackElement.getAttribute('tscDM:fontSize')),\n position: captionTrackElement.getAttribute('tscDM:position'),\n barHeight: Number(captionTrackElement.getAttribute('tscDM:captionbarheight')),\n captions: captions\n };\n params.bgColor.a = !isNil(captionTrackElement.getAttribute('tscDM:bgOpacity')) ? Number(captionTrackElement.getAttribute('tscDM:bgOpacity')) : _defaults$1.bgColor.getAlpha();\n captionTrack = new CaptionTrack(params);\n }\n return captionTrack;\n};\n\n/** @module CaptionTrack */\nvar CaptionTrack$1 = {\n /**\n * Factory method that returns a new CaptionTrack object.\n * @function create\n * @param {Object} params - Optional params for caption track\n * @param {String} [params.languageIdentifierString] - Local identifier string for caption track\n * @param {Object} [params.fgColor] - RGB values for foreground color.\n * @param {Number} [params.bgOpacity] - Opacity of background.\n * @param {String} [params.fontFamily] - Font family for caption track.\n * @param {String} [params.fontSize] - Font size for caption track.\n * @param {String} [params.position] - Position for caption track.\n * @param {String} [params.barHeight] - Bar height for caption track.\n * @static\n * @return {module:CaptionTrack} new CaptionTrack instance\n */\n create: function create(params) {\n return CaptionTrack(params);\n },\n /**\n * Factory method that returns a new CaptionTrack object from an XMP caption track element.\n * @function createFromXmpElement\n * @param {Object} element - XMP caption track element.\n * @static\n * @return {module:CaptionTrack} new CaptionTrack instance\n */\n createFromXmpElement: createFromXmpElement$2\n};\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray$1(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate));\n}\nvar CaptionController$2 = function CaptionController() {\n var _activeLanguageIdentifier = LanguageIdentifier$1.create(languageIdentifiers.identifiers[\"default\"]);\n var _activeCaptionTrack = null;\n var _captionTracks = [];\n var _captionLanguages = {};\n var storeCaptionLanguage = function storeCaptionLanguage(languageIdentifier) {\n _captionLanguages[languageIdentifier.identifier] = languageIdentifier.identifier;\n };\n var removeCaptionLanguage = function removeCaptionLanguage(languageIdentifier) {\n if (_captionLanguages[languageIdentifier.identifier]) {\n delete _captionLanguages[languageIdentifier.identifier];\n }\n };\n var getAvailableLanguages = function getAvailableLanguages() {\n return Object.keys(_captionLanguages);\n };\n var cacheActiveCaptionTrack = function cacheActiveCaptionTrack() {\n if (_captionTracks.length === 0) {\n _activeCaptionTrack = null;\n return;\n }\n if (_activeLanguageIdentifier.identifier === languageIdentifiers.identifiers[\"default\"]) {\n _activeCaptionTrack = _captionTracks[0];\n }\n var preferredCaptionTrack = find(_captionTracks, function (captionTrack) {\n return captionTrack.languageIdentifier.identifier === _activeLanguageIdentifier.identifier;\n });\n if (preferredCaptionTrack) {\n _activeCaptionTrack = preferredCaptionTrack;\n } else {\n _activeCaptionTrack = _captionTracks[0];\n }\n };\n var setActiveLanguageIdentifier = function setActiveLanguageIdentifier(languageIdentifierString) {\n if (!languageIdentifiers.isSupportedLanguage(languageIdentifierString)) {\n languageIdentifierString = languageIdentifiers.identifiers[\"default\"];\n }\n var previousLanguageIdentifierString = _activeLanguageIdentifier.identifier;\n _activeLanguageIdentifier = LanguageIdentifier$1.create(languageIdentifierString);\n cacheActiveCaptionTrack();\n return UndoAction$1.create(setActiveLanguageIdentifier, previousLanguageIdentifierString, setActiveLanguageIdentifier, languageIdentifierString);\n };\n var getActiveLanguageIdentifier = function getActiveLanguageIdentifier() {\n return _activeLanguageIdentifier;\n };\n var doesCaptionTrackExistForLanguageIdentifier = function doesCaptionTrackExistForLanguageIdentifier(languageIdentifier) {\n return _captionTracks.some(function (captionTrack) {\n return captionTrack.languageIdentifier.identifier === languageIdentifier.identifier;\n });\n };\n var addCaptionTrack = function addCaptionTrack(captionTrack) {\n if (doesCaptionTrackExistForLanguageIdentifier(captionTrack.languageIdentifier)) {\n throw new Error('CaptionController::addCaptionTrack - Caption track already exist for the ', captionTrack.languageIdentifier.identifier, ' langauge identifier.');\n }\n storeCaptionLanguage(captionTrack.languageIdentifier);\n _captionTracks.push(captionTrack);\n cacheActiveCaptionTrack();\n return UndoAction$1.create(removeCaptionTrack, captionTrack, addCaptionTrack, captionTrack);\n };\n var removeCaptionTrack = function removeCaptionTrack(captionTrackToRemove) {\n var removedCaptionTracks = remove(_captionTracks, function (captionTrack) {\n return captionTrack.languageIdentifier.identifier === captionTrackToRemove.languageIdentifier.identifier;\n });\n var removedCaptionTrack = removedCaptionTracks.length > 0 ? removedCaptionTracks[0] : undefined;\n if (removedCaptionTrack) {\n removeCaptionLanguage(removedCaptionTrack.languageIdentifier);\n cacheActiveCaptionTrack();\n }\n return UndoAction$1.create(addCaptionTrack, removedCaptionTrack, removeCaptionTrack, captionTrackToRemove);\n };\n var addCaptionTrackFromXmpElement = function addCaptionTrackFromXmpElement(captionTrackElement) {\n var parsedCaptionTrack = CaptionTrack$1.createFromXmpElement(captionTrackElement);\n var availableLanguages = parsedCaptionTrack.getAvailableLanguages();\n if (availableLanguages.length > 1) {\n availableLanguages.forEach(function (language) {\n var captionTrackParams = {\n languageIdentifierString: language,\n fgColor: parsedCaptionTrack.fgColor,\n bgColor: parsedCaptionTrack.bgColor,\n bgOpacity: parsedCaptionTrack.bgOpacity,\n fontFamily: parsedCaptionTrack.fontFamily,\n fontSize: parsedCaptionTrack.fontSize,\n position: parsedCaptionTrack.position,\n barHeight: parsedCaptionTrack.barHeight\n };\n var captionTrack = CaptionTrack$1.create(captionTrackParams);\n parsedCaptionTrack.captionCollection.captions.forEach(function (caption) {\n var filteredCaptionTextList = filter(caption.captionTextList, function (captionText) {\n return captionText.languageIdentifier.identifier === language;\n });\n var captionParams = {\n startTime: caption.startTime,\n duration: caption.duration,\n captionTextList: filteredCaptionTextList\n };\n if (caption.horizontalAlignment) {\n captionParams.horizontalAlignment = caption.horizontalAlignment;\n }\n if (caption.verticalAlignment) {\n captionParams.verticalAlignment = caption.verticalAlignment;\n }\n if (caption.file) {\n captionParams.file = caption.file;\n }\n if (caption.image) {\n captionParams.image = caption.image;\n }\n if (caption.imageIndex) {\n captionParams.imageIndex = caption.imageIndex;\n }\n if (caption.imageOffset) {\n captionParams.imageOffset = caption.imageOffset;\n }\n if (caption.imageRectangle) {\n captionParams.imageRectangle = caption.imageRectangle;\n }\n var newCaption = Caption$1.create(captionParams);\n captionTrack.captionCollection.addCaption(newCaption);\n });\n addCaptionTrack(captionTrack);\n });\n } else {\n addCaptionTrack(parsedCaptionTrack);\n }\n };\n var getMergedCaptionTrack = function getMergedCaptionTrack() {\n var captionTrackParams = {\n languageIdentifierString: _activeCaptionTrack ? _activeCaptionTrack.languageIdentifierString : undefined,\n fgColor: _activeCaptionTrack ? _activeCaptionTrack.fgColor : undefined,\n bgOpacity: _activeCaptionTrack ? _activeCaptionTrack.bgOpacity : undefined,\n fontFamily: _activeCaptionTrack ? _activeCaptionTrack.fontFamily : undefined,\n fontSize: _activeCaptionTrack ? _activeCaptionTrack.fontSize : undefined,\n position: _activeCaptionTrack ? _activeCaptionTrack.position : undefined,\n barHeight: _activeCaptionTrack ? _activeCaptionTrack.barHeight : undefined\n };\n var mergedCaptionTrack = CaptionTrack$1.create(captionTrackParams);\n _captionTracks.forEach(function (captionTrack) {\n mergedCaptionTrack.captionCollection.mergeCaptions(captionTrack.captionCollection.captions);\n });\n return mergedCaptionTrack;\n };\n var toXmp = function toXmp() {\n return getMergedCaptionTrack().toXmp();\n };\n var toPOJO = function toPOJO() {\n return getMergedCaptionTrack().toPOJO();\n };\n var getActiveCaptionTrack = function getActiveCaptionTrack() {\n return _activeCaptionTrack;\n };\n var clearCaptions = function clearCaptions() {\n _captionTracks = [];\n _captionLanguages = {};\n _activeLanguageIdentifier = LanguageIdentifier$1.create(languageIdentifiers.identifiers[\"default\"]);\n _activeCaptionTrack = null;\n };\n var activeCaptionTrackIsDefinedWithCaptions = function activeCaptionTrackIsDefinedWithCaptions() {\n return _activeCaptionTrack !== null && _activeCaptionTrack.captionCollection.captions.length > 0;\n };\n var getActiveCaptionsTocThumbnailImage = function getActiveCaptionsTocThumbnailImage() {\n return activeCaptionTrackIsDefinedWithCaptions() ? _activeCaptionTrack.captionCollection.captions[0].image : null;\n };\n var _public = Object.defineProperties({}, {\n activeCaptionTrack: {\n get: getActiveCaptionTrack\n },\n numberCaptionTracks: {\n get: function get() {\n return _captionTracks.length;\n }\n },\n containsCaptions: {\n get: activeCaptionTrackIsDefinedWithCaptions\n },\n captionsContainsTocThumbnails: {\n get: function get() {\n return activeCaptionTrackIsDefinedWithCaptions() && _activeCaptionTrack.captionCollection.captions[0].image !== undefined;\n }\n }\n });\n _public.setActiveLanguageIdentifier = setActiveLanguageIdentifier;\n _public.getActiveLanguageIdentifier = getActiveLanguageIdentifier;\n _public.clearCaptions = clearCaptions;\n _public.addCaptionTrackFromXmpElement = addCaptionTrackFromXmpElement;\n _public.addCaptionTrack = addCaptionTrack;\n _public.removeCaptionTrack = removeCaptionTrack;\n _public.getAvailableLanguages = getAvailableLanguages;\n _public.getActiveCaptionsTocThumbnailImage = getActiveCaptionsTocThumbnailImage;\n _public.toXmp = toXmp;\n _public.toPOJO = toPOJO;\n return _public;\n};\n\n/** @module CaptionController */\nvar CaptionController$1$1 = {\n /**\n * Factory method that returns a new CaptionController object.\n * @function create\n * @static\n * @return {module:CaptionController} new CaptionController instance\n */\n create: function create() {\n return CaptionController$2();\n }\n};\nvar TableOfContentsItem = function TableOfContentsItem(params) {\n var _name;\n var _startTime;\n var _image;\n var _imageIndex;\n var _imageOffset;\n var _imageRectangle;\n var _file;\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'name') {\n _name = params.name;\n } else if (key === 'startTime') {\n _startTime = params.startTime;\n } else if (key === 'image') {\n _image = params.image;\n } else if (key === 'imageIndex') {\n _imageIndex = params.imageIndex;\n } else if (key === 'imageOffset') {\n _imageOffset = params.imageOffset;\n } else if (key === 'imageRectangle') {\n _imageRectangle = params.imageRectangle;\n } else if (key === 'file') {\n _file = params.file;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:name': _name,\n 'xmpDM:startTime': _startTime,\n 'tscDM:image': _image,\n 'tscDM:imageindex': _imageIndex,\n 'tscDM:imageoffset': _imageOffset,\n 'tscDM:imagerect': _imageRectangle ? _imageRectangle.toXmpAtt() : null,\n 'tscDM:file': _file\n }\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n name: {\n get: function get() {\n return _name;\n }\n },\n startTime: {\n get: function get() {\n return _startTime;\n }\n },\n image: {\n get: function get() {\n return _image;\n }\n },\n imageIndex: {\n get: function get() {\n return _imageIndex;\n }\n },\n imageOffset: {\n get: function get() {\n return _imageOffset;\n }\n },\n imageRectangle: {\n get: function get() {\n return _imageRectangle;\n }\n },\n file: {\n get: function get() {\n return _file;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n name: _name,\n startTime: _startTime,\n image: _image,\n imageIndex: _imageIndex,\n imageOffset: _imageOffset,\n imageRectangle: _imageRectangle ? _imageRectangle.toPOJO() : undefined,\n file: _file\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$3 = function createFromXmpElement$3(tableOfContentsItemElement) {\n var params = {\n name: tableOfContentsItemElement.getAttribute('xmpDM:name'),\n startTime: Number(tableOfContentsItemElement.getAttribute('xmpDM:startTime'))\n };\n\n // optional attributes below\n\n params.image = tableOfContentsItemElement.getAttribute('tscDM:image') || undefined;\n if (tableOfContentsItemElement.getAttribute('tscDM:imageindex')) {\n params.imageIndex = Number(tableOfContentsItemElement.getAttribute('tscDM:imageindex'));\n }\n if (tableOfContentsItemElement.getAttribute('tscDM:imageoffset')) {\n params.imageOffset = Number(tableOfContentsItemElement.getAttribute('tscDM:imageoffset'));\n }\n params.file = tableOfContentsItemElement.getAttribute('tscDM:file') || undefined;\n if (tableOfContentsItemElement.getAttribute('tscDM:imagerect')) {\n params.imageRectangle = ImageRectangle$1.create(tableOfContentsItemElement.getAttribute('tscDM:imagerect'));\n }\n return new TableOfContentsItem(params);\n};\n\n/** @module TableOfContentsItem */\nvar TableOfContentsItem$1 = {\n /**\n * Factory method that returns a new TableOfContentsItem object.\n * @function create\n * @param {Object} params - Required params for table of contents item\n * @param {String} [params.name] - Table of contents item name.\n * @param {Number} [params.startTime] - Start time of table of contents item (milliseconds).\n * @param {String} [params.image] - Table of contents item image.\n * @param {Number} [params.imageIndex] - Table of contents item image index.\n * @param {Number} [params.imageOffset] - Table of contents item image offset.\n * @param {module:ImageRectangle} [params.imageRectangle] - Table of contents item image rectangle.\n * @param {String} [params.file] - File string associated with toc item.\n * @static\n * @return {module:TableOfContentsItem} new TableOfContentsItem instance\n */\n create: function create(params) {\n return TableOfContentsItem(params);\n },\n /**\n * Factory method that returns a new TableOfContentsItem object from an XMP tableOfContentsItem element.\n * @function createFromXmpElement\n * @param {Object} element - XMP tableOfContentsItem element.\n * @static\n * @return {module:TableOfContentsItem} new TableOfContentsItem instance\n */\n createFromXmpElement: createFromXmpElement$3\n};\nvar TableOfContentsTrack = function TableOfContentsTrack(params) {\n var _items = [];\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n if (params.hasOwnProperty('items') && isArray$1(params.items)) {\n _items = params.items;\n } else {\n throw new Error('TableOfContentsTrack params is expecting an object eg. { items: [item1Object, ...] }');\n }\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:trackType': 'TableOfContents',\n 'xmpDM:trackName': 'Table of Contents',\n 'xmpDM:frameRate': 'f1000',\n 'tscDM:image': params ? params.image : undefined,\n 'tscDM:tocCellLayout': params ? params.cellLayout : undefined\n },\n children: [{\n name: 'xmpDM:markers',\n children: [{\n name: 'rdf:Seq',\n children: _items\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n image: {\n get: function get() {\n return params.image;\n }\n },\n cellLayout: {\n get: function get() {\n return params.cellLayout;\n }\n },\n items: {\n get: function get() {\n return _items;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n image: params.image,\n cellLayout: params.cellLayout,\n items: invokeMap(_items, 'toPOJO')\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$4 = function createFromXmpElement$4(tableOfContentsTrackElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var tableOfContentsTrack = new TableOfContentsTrack();\n if (tableOfContentsTrackElement) {\n var tableOfContentsItemElements = _xmlUtility.getElementsByTagNameNSPrefix(tableOfContentsTrackElement, 'rdf:Description');\n var image = tableOfContentsTrackElement.getAttribute('tscDM:image');\n var cellLayout = tableOfContentsTrackElement.getAttribute('tscDM:tocCellLayout');\n var items = map(tableOfContentsItemElements, TableOfContentsItem$1.createFromXmpElement);\n var params = {\n image: image,\n cellLayout: cellLayout,\n items: items\n };\n tableOfContentsTrack = new TableOfContentsTrack(params);\n }\n return tableOfContentsTrack;\n};\n\n/** @module TableOfContentsTrack */\nvar TableOfContentsTrack$1 = {\n /**\n * Factory method that returns a new TableOfContentsTrack object.\n * @function create\n * @param {Object} params - Optional params for table of contents track\n * @param {module:TableOfContentsItem[]} [params.items] - Array of table of content items.\n * @static\n * @return {module:TableOfContentsTrack} new TableOfContentsTrack instance\n */\n create: function create(params) {\n return TableOfContentsTrack(params);\n },\n /**\n * Factory method that returns a new TableOfContentsTrack object from an XMP table of contents track element.\n * @function createFromXmpElement\n * @param {Object} element - XMP table of contents track element.\n * @static\n * @return {module:TableOfContentsTrack} new TableOfContentsTrack instance\n */\n createFromXmpElement: createFromXmpElement$4\n};\n\n/**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\nfunction compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\nvar BoundingPoly = function BoundingPoly(coordinatesString) {\n var _coordinates = [];\n var createCoordinate = function createCoordinate(coordinateString) {\n var tokens = coordinateString.split(',');\n return {\n x: Number(tokens[0]),\n y: Number(tokens[1])\n };\n };\n if (coordinatesString && isString(coordinatesString)) {\n var coordinateTokens = compact(coordinatesString.split(';'));\n _coordinates = map(coordinateTokens, createCoordinate);\n } else {\n throw new Error('BoundingPoly is expecting a coordinate string eg. \"0,94;111,90;112,191;0,194;\"');\n }\n var _public = Object.defineProperties({}, {\n coordinates: {\n get: function get() {\n return _coordinates;\n }\n }\n });\n _public.toPOJO = function () {\n return {\n coordinates: _coordinates\n };\n };\n _public.toXmpAtt = function () {\n return map(_coordinates, function (coord) {\n return coord.x + ',' + coord.y;\n }).join(';') + ';';\n };\n return _public;\n};\n\n/** @module BoundingPoly */\nvar BoundingPoly$1 = {\n /**\n * Factory method that returns a new BoundingPoly object.\n * @function create\n * @param {String} coordinatesString - Required coordinate string of the bounding poly eg. \"0,94;111,90;112,191;0,194;\"\n * @static\n * @return {module:BoundingPoly} new BoundingPoly instance\n */\n create: function create(coordinatesString) {\n return BoundingPoly(coordinatesString);\n }\n};\nvar Hotspot = function Hotspot(params) {\n var _label;\n var _startTime;\n var _duration;\n var _boundingPoly;\n var _rotate;\n var _pause;\n var _jumpTime;\n var _location;\n var _newWindow;\n var _jumpFile;\n var _file;\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'label') {\n _label = params.label;\n } else if (key === 'startTime') {\n _startTime = params.startTime;\n } else if (key === 'duration') {\n _duration = params.duration;\n } else if (key === 'boundingPoly') {\n _boundingPoly = params.boundingPoly;\n } else if (key === 'rotate') {\n _rotate = params.rotate;\n } else if (key === 'pause') {\n _pause = params.pause;\n } else if (key === 'jumpTime') {\n _jumpTime = params.jumpTime;\n } else if (key === 'location') {\n _location = params.location;\n } else if (key === 'newWindow') {\n _newWindow = params.newWindow;\n } else if (key === 'jumpFile') {\n _jumpFile = params.jumpFile;\n } else if (key === 'file') {\n _file = params.file;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:label': _label,\n 'xmpDM:duration': _duration,\n 'xmpDM:startTime': _startTime,\n 'tscDM:boundingPoly': _boundingPoly ? _boundingPoly.toXmpAtt() : undefined,\n 'tscDM:rotate': _rotate,\n 'tscHS:pause': _pause ? '1' : '0',\n 'tscHS:jumpTime': _jumpTime,\n 'tscHS:jumpFile': _jumpFile,\n 'xmpDM:location': _location,\n 'tscDM:file': _file,\n 'tscHS:newWindow': _newWindow ? '1' : '0'\n }\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n label: {\n get: function get() {\n return _label;\n }\n },\n startTime: {\n get: function get() {\n return _startTime;\n }\n },\n endTime: {\n get: function get() {\n return _startTime + _duration;\n }\n },\n duration: {\n get: function get() {\n return _duration;\n }\n },\n boundingPoly: {\n get: function get() {\n return _boundingPoly;\n }\n },\n rotate: {\n get: function get() {\n return _rotate;\n }\n },\n pause: {\n get: function get() {\n return _pause;\n }\n },\n jumpTime: {\n get: function get() {\n return _jumpTime;\n }\n },\n location: {\n get: function get() {\n return _location;\n }\n },\n newWindow: {\n get: function get() {\n return _newWindow;\n }\n },\n jumpFile: {\n get: function get() {\n return _jumpFile;\n }\n },\n file: {\n get: function get() {\n return _file;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n label: _label,\n startTime: _startTime,\n duration: _duration,\n boundingPoly: _boundingPoly,\n rotate: _rotate,\n pause: _pause,\n jumpTime: _jumpTime,\n location: _location,\n newWindow: _newWindow,\n jumpFile: _jumpFile,\n file: _file\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$5 = function createFromXmpElement$5(hotspotElement) {\n var params = {\n label: hotspotElement.getAttribute('xmp:label'),\n startTime: Number(hotspotElement.getAttribute('xmpDM:startTime')),\n duration: Number(hotspotElement.getAttribute('xmpDM:duration')),\n boundingPoly: BoundingPoly$1.create(hotspotElement.getAttribute('tscDM:boundingPoly')),\n rotate: Number(hotspotElement.getAttribute('tscDM:rotate')),\n pause: hotspotElement.getAttribute('tscHS:pause') === '1',\n newWindow: hotspotElement.getAttribute('tscHS:newWindow') === '1'\n };\n if (hotspotElement.getAttribute('tscHS:jumpTime')) {\n params.jumpTime = Number(hotspotElement.getAttribute('tscHS:jumpTime'));\n }\n params.jumpFile = hotspotElement.getAttribute('tscHS:jumpFile') || undefined;\n params.location = hotspotElement.getAttribute('xmpDM:location') || undefined;\n params.file = hotspotElement.getAttribute('tscDM:file') || undefined;\n return new Hotspot(params);\n};\n\n/** @module Hotspot */\nvar Hotspot$1 = {\n /**\n * Factory method that returns a new Hotspot object.\n * @function create\n * @param {Object} params - Required params for hotspot\n * @param {String} [params.label] - Hotspot label.\n * @param {Number} [params.startTime] - Start time of hotspot (milliseconds).\n * @param {Number} [params.duration] - Duration of hotspot (milliseconds).\n * @param {module:BoundingPoly} [params.boundingPoly] - Bounding polygon of hotspot.\n * @param {Number} [params.rotate] - Rotation value of polygon.\n * @param {Boolean} [params.pause] - Boolean if hotspot should pause at end.\n * @param {Number} [params.jumpTime] - Specific time within video that hotspot will jump to (milliseconds)\n * @param {Number} [params.jumpTime] - Specific time within video that hotspot will jump to (milliseconds)\n * @param {String} [params.location] - URL to launch for hotspot.\n * @param {Boolean} [params.newWindow] - True if the hotspot location should open in a new window.\n * @param {String} [params.jumpFile] - Url to file.\n * @param {String} [params.file] - Url to file.\n * @static\n * @return {module:Hotspot} new Hotspot instance\n */\n create: function create(params) {\n return Hotspot(params);\n },\n /**\n * Factory method that returns a new Hotspot object from an XMP hotspot element.\n * @function createFromXmpElement\n * @param {Object} element - XMP hotspot element.\n * @static\n * @return {module:Hotspot} new Hotspot instance\n */\n createFromXmpElement: createFromXmpElement$5\n};\nvar HotspotTrack = function HotspotTrack(params) {\n var _hotspots = [];\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n if (params.hasOwnProperty('hotspots') && isArray$1(params.hotspots)) {\n _hotspots = params.hotspots;\n } else {\n throw new Error('HotspotTrack params is expecting an object eg. { hotspots: [hotspot1Object, ...] }');\n }\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:trackType': 'Hotspot',\n 'xmpDM:trackName': 'Hotspots',\n 'xmpDM:frameRate': 'f1000'\n },\n children: [{\n name: 'xmpDM:markers',\n children: [{\n name: 'rdf:Seq',\n children: _hotspots\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n hotspots: {\n get: function get() {\n return _hotspots;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n hotspots: invokeMap(_hotspots, 'toPOJO')\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$6 = function createFromXmpElement$6(hotspotTrackElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var hotspotTrack = new HotspotTrack();\n if (hotspotTrackElement) {\n var hotspotElements = _xmlUtility.getElementsByTagNameNSPrefix(hotspotTrackElement, 'rdf:Description');\n var hotspots = map(hotspotElements, Hotspot$1.createFromXmpElement);\n var params = {\n hotspots: hotspots\n };\n hotspotTrack = new HotspotTrack(params);\n }\n return hotspotTrack;\n};\n\n/** @module HotspotTrack */\nvar HotspotTrack$1 = {\n /**\n * Factory method that returns a new HotspotTrack object.\n * @function create\n * @param {Object} params - Optional params for caption track\n * @param {module:Hotspot[]} [params.hotspots] - Array of hotspots.\n * @static\n * @return {module:HotspotTrack} new HotspotTrack instance\n */\n create: function create(params) {\n return HotspotTrack(params);\n },\n /**\n * Factory method that returns a new HotspotTrack object from an XMP hotspot track element.\n * @function create\n * @param {Object} element - XMP hotspot track element.\n * @static\n * @return {module:HotspotTrack} new HotspotTrack instance\n */\n createFromXmpElement: createFromXmpElement$6\n};\nvar Answer = function Answer(params) {\n var _orderId;\n var _text;\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'orderId') {\n _orderId = params.orderId;\n } else if (key === 'text') {\n _text = params.text;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'tscIQ:orderId': _orderId\n },\n children: [{\n name: 'tscIQ:answer',\n text: _text\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n orderId: {\n get: function get() {\n return _orderId;\n }\n },\n text: {\n get: function get() {\n return _text;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n orderId: _orderId,\n text: _text\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$7 = function createFromXmpElement$7(answerElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var answerText = _xmlUtility.getFirstChildElementTextByTagNameNSPrefix(answerElement, 'tscIQ:answer');\n var params = {\n orderId: Number(answerElement.getAttribute('tscIQ:orderId')),\n text: answerText\n };\n return new Answer(params);\n};\n\n/** @module Answer */\nvar Answer$1 = {\n /**\n * Factory method that returns a new Answer object.\n * @function create\n * @param {Object} params - Required params for answer\n * @param {Number} [params.orderId] - Answer order id.\n * @param {String} [params.text] - Answer text.\n * @static\n * @return {module:Answer} new Answer instance\n */\n create: function create(params) {\n return Answer(params);\n },\n /**\n * Factory method that returns a new Answer object from an XMP answer element.\n * @function createFromXmpElement\n * @param {Object} element - XMP answer element.\n * @static\n * @return {module:Answer} new Answer instance\n */\n createFromXmpElement: createFromXmpElement$7\n};\nvar Feedback = function Feedback(params) {\n var _reason;\n var _jumpToTime;\n var _location;\n var _text;\n var _plainText;\n var _markupText;\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'reason') {\n _reason = params.reason;\n } else if (key === 'text') {\n _text = params.text;\n _plainText = Rtf.toText(_text);\n _markupText = Rtf.toHtml(_text);\n } else if (key === 'jumpToTime') {\n _jumpToTime = params.jumpToTime;\n } else if (key === 'location') {\n _location = params.location;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'tscIQ:reason': _reason,\n 'tscIQ:jumpToTime': _jumpToTime,\n 'tscIQ:location': _location\n },\n children: [{\n name: 'xmpDM:name',\n children: [{\n name: 'rdf:Alt',\n // todo: according to the latest branch this is now a language collection of strings\n // for now i hardcoded a single english version to match the expected output\n children: [{\n name: 'rdf:li',\n atts: {\n 'xml:lang': 'en-US'\n },\n text: _text\n }]\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n reason: {\n get: function get() {\n return _reason;\n }\n },\n jumpToTime: {\n get: function get() {\n return _jumpToTime;\n }\n },\n location: {\n get: function get() {\n return _location;\n }\n },\n text: {\n get: function get() {\n return _text;\n }\n },\n plainText: {\n get: function get() {\n return _plainText;\n }\n },\n markupText: {\n get: function get() {\n return _markupText;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n reason: _reason,\n jumpToTime: _jumpToTime,\n location: _location,\n text: _text,\n plainText: _plainText,\n markupText: _markupText\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$8 = function createFromXmpElement$8(feedbackElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var feedbackText = _xmlUtility.getFirstChildElementTextByTagNameNSPrefix(feedbackElement, 'rdf:li');\n var params = {\n reason: feedbackElement.getAttribute('tscIQ:reason'),\n text: feedbackText\n };\n if (feedbackElement.getAttribute('tscIQ:jumpToTime')) {\n params.jumpToTime = Number(feedbackElement.getAttribute('tscIQ:jumpToTime'));\n }\n params.location = feedbackElement.getAttribute('tscIQ:location') || undefined;\n return Feedback(params);\n};\n\n/** @module Feedback */\nvar Feedback$1 = {\n /**\n * Factory method that returns a new Feedback object.\n * @function create\n * @param {Object} params - Required params for feedback\n * @param {String} [params.reason] - Feedback reason type.\n * @param {String} [params.text] - Feedback text.\n * @param {Number} [params.jumpToTime] - Feedback jumpToTime.\n * @param {String} [params.location] - Feedback location.\n * @static\n * @return {module:Feedback} new Feedback instance\n */\n create: function create(params) {\n return Feedback(params);\n },\n /**\n * Factory method that returns a new Feedback object from an XMP feedback element.\n * @function createFromXmpElement\n * @param {Object} element - XMP feedback element.\n * @static\n * @return {module:Feedback} new Feedback instance\n */\n createFromXmpElement: createFromXmpElement$8\n};\nvar Question$2 = function Question(params) {\n var _id;\n var _type;\n var _text;\n var _correctAnswer;\n var _answers = [];\n var _feedback = [];\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'id') {\n _id = params.id;\n } else if (key === 'type') {\n _type = params.type;\n } else if (key === 'text') {\n _text = params.text;\n } else if (key === 'correctAnswer') {\n _correctAnswer = params.correctAnswer;\n } else if (key === 'answers') {\n _answers = params.answers;\n } else if (key === 'feedback') {\n _feedback = params.feedback;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'tscIQ:id': _id,\n 'tscIQ:type': _type\n },\n children: [{\n name: 'tscIQ:question',\n text: _text\n }, {\n name: 'tscIQ:correctAnswer',\n text: _type === 'MC' ? _correctAnswer : null\n }, {\n name: 'tscIQ:answerArray',\n children: [{\n name: 'rdf:Seq',\n children: _answers\n }]\n }, {\n name: 'tscIQ:feedback',\n children: [{\n name: 'rdf:Bag',\n children: _feedback\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n id: {\n get: function get() {\n return _id;\n }\n },\n type: {\n get: function get() {\n return _type;\n }\n },\n text: {\n get: function get() {\n return _text;\n }\n },\n correctAnswer: {\n get: function get() {\n return _correctAnswer;\n }\n },\n answers: {\n get: function get() {\n return _answers;\n }\n },\n feedback: {\n get: function get() {\n return _feedback;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n id: _id,\n type: _type,\n text: _text,\n correctAnswer: _correctAnswer,\n answers: invokeMap(_answers, 'toPOJO'),\n feedback: _feedback !== undefined ? invokeMap(_feedback, 'toPOJO') : undefined\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$9 = function createFromXmpElement$9(questionElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var text = _xmlUtility.getFirstChildElementTextByTagNameNSPrefix(questionElement, 'tscIQ:question');\n var correctAnswerText = _xmlUtility.getFirstChildElementTextByTagNameNSPrefix(questionElement, 'tscIQ:correctAnswer');\n var descriptionElements = _xmlUtility.getElementsByTagNameNSPrefix(questionElement, 'rdf:Description');\n var answerElements = filter(descriptionElements, function (element) {\n return _xmlUtility.hasAttribute(element, 'tscIQ:orderId');\n });\n var answers = map(answerElements, Answer$1.createFromXmpElement);\n var feedbackElements = filter(descriptionElements, function (element) {\n return _xmlUtility.hasAttribute(element, 'tscIQ:reason');\n });\n var feedback = map(feedbackElements, Feedback$1.createFromXmpElement);\n var params = {\n id: Number(questionElement.getAttribute('tscIQ:id')),\n type: questionElement.getAttribute('tscIQ:type'),\n text: text,\n correctAnswer: correctAnswerText ? Number(correctAnswerText) : undefined,\n answers: answers,\n feedback: feedback\n };\n return Question$2(params);\n};\n\n/** @module Question */\nvar Question$1$1 = {\n /**\n * Factory method that returns a new Question object.\n * @function create\n * @param {Object} params - Required params for question\n * @param {Number} [params.id] - Question id.\n * @param {String} [params.text] - Question text.\n * @param {Number} [params.correctAnswer] - Index of the correct answer within answer array (1 based).\n * @param {module:Answer[]} [params.answers] - Question answer array.\n * @param {module:Feedback[]} [params.feedback] - Question feedback array.\n * @static\n * @return {module:Question} new Question instance\n */\n create: function create(params) {\n return Question$2(params);\n },\n /**\n * Factory method that returns a new Question object from an XMP question element.\n * @function createFromXmpElement\n * @param {Object} element - XMP question element.\n * @static\n * @return {module:Question} new Question instance\n */\n createFromXmpElement: createFromXmpElement$9\n};\nvar QuestionSet$2 = function QuestionSet(params) {\n var _name;\n var _feedback;\n var _startTime;\n var _questions;\n var _file;\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'name') {\n _name = params.name;\n } else if (key === 'feedback') {\n _feedback = params.feedback;\n } else if (key === 'startTime') {\n _startTime = params.startTime;\n } else if (key === 'file') {\n _file = params.file;\n } else if (key === 'questions') {\n _questions = params.questions;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'tscIQ:questionSetName': _name,\n 'tscIQ:feedback': _feedback ? '1' : '0',\n 'tscDM:file': _file,\n 'xmpDM:startTime': _startTime\n },\n children: [{\n name: 'tscIQ:questions',\n children: [{\n name: 'rdf:Seq',\n children: _questions\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n name: {\n get: function get() {\n return _name;\n }\n },\n feedback: {\n get: function get() {\n return _feedback;\n }\n },\n startTime: {\n get: function get() {\n return _startTime;\n }\n },\n file: {\n get: function get() {\n return _file;\n }\n },\n questions: {\n get: function get() {\n return _questions;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n name: _name,\n feedback: _feedback,\n startTime: _startTime,\n file: _file,\n questions: invokeMap(_questions, 'toPOJO')\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$a = function createFromXmpElement$a(questionSetElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var descriptionElements = _xmlUtility.getElementsByTagNameNSPrefix(questionSetElement, 'rdf:Description');\n var questionElements = filter(descriptionElements, function (element) {\n return _xmlUtility.hasAttribute(element, 'tscIQ:type');\n });\n var questions = map(questionElements, Question$1$1.createFromXmpElement);\n var params = {\n name: questionSetElement.getAttribute('tscIQ:questionSetName'),\n feedback: questionSetElement.getAttribute('tscIQ:feedback') === '1',\n startTime: Number(questionSetElement.getAttribute('xmpDM:startTime')),\n questions: questions\n };\n params.file = questionSetElement.getAttribute('tscDM:file') || undefined;\n return new QuestionSet$2(params);\n};\n\n/** @module QuestionSet */\nvar QuestionSet$1$1 = {\n /**\n * Factory method that returns a new QuestionSet object.\n * @function create\n * @param {Object} params - Required params for question set\n * @param {String} [params.questionsSetName] - Question set name.\n * @param {Boolean} [params.feedback] - Question set feedback.\n * @param {Number} [params.startTime] - Question set start time (milliseconds)\n * @param {String} [params.file] - Associated file\n * @param {module:Question[]} [params.questions] - Question set questions.\n * @static\n * @return {module:QuestionSet} new QuestionSet instance\n */\n create: function create(params) {\n return QuestionSet$2(params);\n },\n /**\n * Factory method that returns a new QuestionSet object from an XMP questionSet element.\n * @function createFromXmpElement\n * @param {Object} element - XMP questionSet element.\n * @static\n * @return {module:QuestionSet} new QuestionSet instance\n */\n createFromXmpElement: createFromXmpElement$a\n};\nvar QuizTrack = function QuizTrack(params) {\n var _quizGuid;\n var _authoredEmail;\n var _requireUserId;\n var _locale;\n var _reportMethod;\n var _clientId;\n var _quizHash;\n var _hideReplay;\n var _allowSkipQuiz;\n var _questionSets = [];\n var _parameters;\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'quizGuid') {\n _quizGuid = params.quizGuid;\n } else if (key === 'authoredEmail') {\n _authoredEmail = params.authoredEmail;\n } else if (key === 'requireUserId') {\n _requireUserId = params.requireUserId;\n } else if (key === 'locale') {\n _locale = params.locale;\n } else if (key === 'reportMethod') {\n _reportMethod = params.reportMethod;\n } else if (key === 'clientId') {\n _clientId = params.clientId;\n } else if (key === 'quizHash') {\n _quizHash = params.quizHash;\n } else if (key === 'hideReplay') {\n _hideReplay = params.hideReplay;\n } else if (key === 'allowSkipQuiz') {\n _allowSkipQuiz = params.allowSkipQuiz;\n } else if (key === 'parameters' && isArray$1(params.parameters)) {\n _parameters = params.parameters;\n } else if (key === 'questionSets' && isArray$1(params.questionSets)) {\n _questionSets = params.questionSets;\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:trackType': 'Quiz',\n 'xmpDM:trackName': 'Quiz',\n 'xmpDM:frameRate': 'f1000',\n 'tscIQ:clientId': _clientId,\n 'tscIQ:quizHash': _quizHash,\n 'tscIQ:quizGuid': _quizGuid,\n 'tscIQ:authoredEmail': _authoredEmail,\n 'tscIQ:requireUserId': _requireUserId ? '1' : '0',\n 'tscIQ:locale': _locale,\n 'tscIQ:reportMethod': _reportMethod,\n 'tscIQ:hideReplay': _hideReplay ? '1' : '0',\n 'tscIQ:allowSkipQuiz': _allowSkipQuiz ? '1' : '0'\n },\n children: [{\n name: 'xmpDM:markers',\n children: [{\n name: 'rdf:Seq',\n children: _questionSets\n }]\n }, {\n name: 'tscIQ:QuizParams',\n children: [{\n name: 'rdf:Bag',\n children: map(_parameters, function (param) {\n return {\n name: 'rdf:li',\n atts: {\n 'xmpDM:name': param.name,\n 'xmpDM:value': param.value\n }\n };\n })\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n quizGuid: {\n get: function get() {\n return _quizGuid;\n }\n },\n authoredEmail: {\n get: function get() {\n return _authoredEmail;\n }\n },\n requireUserId: {\n get: function get() {\n return _requireUserId;\n }\n },\n locale: {\n get: function get() {\n return _locale;\n }\n },\n reportMethod: {\n get: function get() {\n return _reportMethod;\n }\n },\n clientId: {\n get: function get() {\n return _clientId;\n }\n },\n quizHash: {\n get: function get() {\n return _quizHash;\n }\n },\n hideReplay: {\n get: function get() {\n return _hideReplay;\n }\n },\n allowSkipQuiz: {\n get: function get() {\n return _allowSkipQuiz;\n }\n },\n parameters: {\n get: function get() {\n return _parameters;\n }\n },\n questionSets: {\n get: function get() {\n return _questionSets;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n quizGuid: _quizGuid,\n authoredEmail: _authoredEmail,\n requireUserId: _requireUserId,\n locale: _locale,\n reportMethod: _reportMethod,\n clientId: _clientId,\n quizHash: _quizHash,\n hideReplay: _hideReplay,\n allowSkipQuiz: _allowSkipQuiz,\n questionSets: invokeMap(_questionSets, 'toPOJO'),\n parameters: _parameters || undefined\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n return pojo;\n };\n return _public;\n};\nvar parseParameter = function parseParameter(parameterElement) {\n return {\n name: parameterElement.getAttribute('xmpDM:name'),\n value: parameterElement.getAttribute('xmpDM:value')\n };\n};\nvar parseParameters = function parseParameters(quizParametersElement, xmlUtility) {\n if (quizParametersElement) {\n var parameterElements = xmlUtility.getElementsByTagNameNSPrefix(quizParametersElement, 'rdf:li');\n var parameters = map(parameterElements, parseParameter);\n return parameters;\n }\n return undefined;\n};\nvar createFromXmpElement$b = function createFromXmpElement$b(quizTrackElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var quizTrack = new QuizTrack();\n if (quizTrackElement) {\n var descriptionElements = _xmlUtility.getElementsByTagNameNSPrefix(quizTrackElement, 'rdf:Description');\n var questionSetElements = filter(descriptionElements, function (element) {\n return _xmlUtility.hasAttribute(element, 'tscIQ:questionSetName');\n });\n var questionSets = map(questionSetElements, QuestionSet$1$1.createFromXmpElement);\n var quizParametersElement = _xmlUtility.getFirstElementByTagNameNSPrefix(quizTrackElement, 'tscIQ:QuizParams');\n var params = {\n quizGuid: quizTrackElement.getAttribute('tscIQ:quizGuid'),\n authoredEmail: quizTrackElement.getAttribute('tscIQ:authoredEmail'),\n requireUserId: quizTrackElement.getAttribute('tscIQ:requireUserId') === '1',\n locale: quizTrackElement.getAttribute('tscIQ:locale'),\n reportMethod: quizTrackElement.getAttribute('tscIQ:reportMethod'),\n clientId: quizTrackElement.getAttribute('tscIQ:clientId'),\n quizHash: quizTrackElement.getAttribute('tscIQ:quizHash'),\n hideReplay: quizTrackElement.getAttribute('tscIQ:hideReplay') === '1',\n allowSkipQuiz: quizTrackElement.getAttribute('tscIQ:allowSkipQuiz') !== '0',\n parameters: parseParameters(quizParametersElement, _xmlUtility),\n questionSets: questionSets\n };\n quizTrack = new QuizTrack(params);\n }\n return quizTrack;\n};\n\n/** @module QuizTrack */\nvar QuizTrack$1 = {\n /**\n * Factory method that returns a new QuizTrack object.\n * @function create\n * @param {Object} params - Optional params for caption track\n * @param {module:QuestionSet[]} [params.questionSets] - Array of question sets.\n * @static\n * @return {module:QuizTrack} new QuizTrack instance\n */\n create: function create(params) {\n return QuizTrack(params);\n },\n /**\n * Factory method that returns a new QuizTrack object from an XMP quiz track element.\n * @function createFromXmpElement\n * @param {Object} element - XMP quiz track element.\n * @static\n * @return {module:QuizTrack} new QuizTrack instance\n */\n createFromXmpElement: createFromXmpElement$b\n};\nvar SpeechMarker = function SpeechMarker(params) {\n var _startTime;\n var _duration;\n var _name;\n var _probability;\n var _image;\n var _imageIndex;\n var _imageOffset;\n var _file;\n var _imageRectangle;\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'startTime') {\n _startTime = params.startTime;\n } else if (key === 'duration') {\n _duration = params.duration;\n } else if (key === 'name') {\n _name = params.name;\n } else if (key === 'probability') {\n _probability = params.probability;\n } else if (key === 'image') {\n _image = params.image;\n } else if (key === 'imageIndex') {\n _imageIndex = params.imageIndex;\n } else if (key === 'imageOffset') {\n _imageOffset = params.imageOffset;\n } else if (key === 'file') {\n _file = params.file;\n } else if (key === 'imageRectangle') {\n _imageRectangle = params.imageRectangle;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:name': _name,\n 'xmpDM:startTime': _startTime,\n 'xmpDM:duration': _duration,\n 'xmpDM:probability': _probability,\n 'tscDM:image': _image,\n 'tscDM:imageindex': _imageIndex,\n 'tscDM:imageoffset': _imageOffset,\n 'tscDM:imagerect': _imageRectangle ? _imageRectangle.toXmpAtt() : null,\n 'tscDM:file': _file\n }\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n startTime: {\n get: function get() {\n return _startTime;\n }\n },\n duration: {\n get: function get() {\n return _duration;\n }\n },\n name: {\n get: function get() {\n return _name;\n }\n },\n probability: {\n get: function get() {\n return _probability;\n }\n },\n image: {\n get: function get() {\n return _image;\n }\n },\n imageIndex: {\n get: function get() {\n return _imageIndex;\n }\n },\n imageOffset: {\n get: function get() {\n return _imageOffset;\n }\n },\n file: {\n get: function get() {\n return _file;\n }\n },\n imageRectangle: {\n get: function get() {\n return _imageRectangle;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n startTime: _startTime,\n duration: _duration,\n name: _name,\n probability: _probability,\n image: _image,\n imageIndex: _imageIndex,\n imageOffset: _imageOffset,\n file: _file,\n imageRectangle: _imageRectangle ? _imageRectangle.toPOJO() : undefined\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$c = function createFromXmpElement$c(speechMarkerElement) {\n var params = {\n startTime: Number(speechMarkerElement.getAttribute('xmpDM:startTime')),\n duration: Number(speechMarkerElement.getAttribute('xmpDM:duration')),\n name: speechMarkerElement.getAttribute('xmpDM:name'),\n probability: Number(speechMarkerElement.getAttribute('xmpDM:probability'))\n };\n\n // optional attributes below\n\n params.image = speechMarkerElement.getAttribute('tscDM:image') || undefined;\n if (speechMarkerElement.getAttribute('tscDM:imageindex')) {\n params.imageIndex = Number(speechMarkerElement.getAttribute('tscDM:imageindex'));\n }\n if (speechMarkerElement.getAttribute('tscDM:imageoffset')) {\n params.imageOffset = Number(speechMarkerElement.getAttribute('tscDM:imageoffset'));\n }\n params.file = speechMarkerElement.getAttribute('tscDM:file') || undefined;\n if (speechMarkerElement.getAttribute('tscDM:imagerect')) {\n params.imageRectangle = ImageRectangle$1.create(speechMarkerElement.getAttribute('tscDM:imagerect'));\n }\n return new SpeechMarker(params);\n};\n\n/** @module SpeechMarker */\nvar SpeechMarker$1 = {\n /**\n * Factory method that returns a new SpeechMarker object.\n * @function create\n * @param {Object} params - Required params for table of contents item\n * @param {Number} [params.startTime] - Start time of the speech marker (milliseconds).\n * @param {Number} [params.duration] - Duration of the speech marker (milliseconds).\n * @param {String} [params.name] - Speech marker name.\n * @param {String} [params.image] - Speech marker image.\n * @param {Number} [params.imageIndex] - Speech marker image index.\n * @param {Number} [params.imageOffset] - Speech marker image offset.\n * @param {module:ImageRectangle} [params.imageRectangle] - Speech marker image rectangle.\n * @static\n * @return {module:SpeechMarker} new SpeechMarker instance\n */\n create: function create(params) {\n return SpeechMarker(params);\n },\n /**\n * Factory method that returns a new SpeechMarker object from an XMP speech marker element.\n * @function createFromXmpElement\n * @param {Object} element - XMP speechMarker element.\n * @static\n * @return {module:SpeechMarker} new SpeechMarker instance\n */\n createFromXmpElement: createFromXmpElement$c\n};\nvar SpeechTrack = function SpeechTrack(params) {\n var _markers = [];\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n if (params.hasOwnProperty('markers') && isArray$1(params.markers)) {\n _markers = params.markers;\n } else {\n throw new Error('SpeechTrack params is expecting an object eg. { markers: [marker1Object, ...] }');\n }\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:trackType': 'Speech',\n 'xmpDM:trackName': 'Speech to Text',\n 'xmpDM:frameRate': 'f1000'\n },\n children: [{\n name: 'xmpDM:markers',\n children: [{\n name: 'rdf:Seq',\n children: _markers\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n markers: {\n get: function get() {\n return _markers;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n markers: invokeMap(_markers, 'toPOJO')\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$d = function createFromXmpElement$d(speechTrackElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var speechTrack = new SpeechTrack();\n if (speechTrackElement) {\n var markerElements = _xmlUtility.getElementsByTagNameNSPrefix(speechTrackElement, 'rdf:li');\n var markers = map(markerElements, SpeechMarker$1.createFromXmpElement);\n var params = {\n markers: markers\n };\n speechTrack = new SpeechTrack(params);\n }\n return speechTrack;\n};\n\n/** @module SpeechTrack */\nvar SpeechTrack$1 = {\n /**\n * Factory method that returns a new SpeechTrack object.\n * @function create\n * @param {Object} params - Optional params for speech track\n * @param {module:SpeechMarker[]} [params.markers] - Array of speech marker items.\n * @static\n * @return {module:SpeechTrack} new SpeechTrack instance\n */\n create: function create(params) {\n return SpeechTrack(params);\n },\n /**\n * Factory method that returns a new SpeechTrack object from an XMP speech track element.\n * @function createFromXmpElement\n * @param {Object} element - XMP speech track element.\n * @static\n * @return {module:SpeechTrack} new SpeechTrack instance\n */\n createFromXmpElement: createFromXmpElement$d\n};\nvar ScreenTextMarker = function ScreenTextMarker(params) {\n var _name;\n var _startTime;\n var _duration;\n var _tableOfContentsEntry;\n var _image;\n var _imageIndex;\n var _imageOffset;\n var _imageRectangle;\n var _file;\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'name') {\n _name = params.name;\n } else if (key === 'startTime') {\n _startTime = params.startTime;\n } else if (key === 'duration') {\n _duration = params.duration;\n } else if (key === 'tableOfContentsEntry') {\n _tableOfContentsEntry = params.tableOfContentsEntry;\n } else if (key === 'image') {\n _image = params.image;\n } else if (key === 'imageIndex') {\n _imageIndex = params.imageIndex;\n } else if (key === 'imageOffset') {\n _imageOffset = params.imageOffset;\n } else if (key === 'imageRectangle') {\n _imageRectangle = params.imageRectangle;\n } else if (key === 'file') {\n _file = params.file;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:name': _name,\n 'xmpDM:startTime': _startTime,\n 'xmpDM:duration': _duration,\n 'tscDM:tocEntry': _tableOfContentsEntry,\n 'tscDM:image': _image,\n 'tscDM:imageindex': _imageIndex,\n 'tscDM:imageoffset': _imageOffset,\n 'tscDM:imagerect': _imageRectangle ? _imageRectangle.toXmpAtt() : null,\n 'tscDM:file': _file\n }\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n name: {\n get: function get() {\n return _name;\n }\n },\n startTime: {\n get: function get() {\n return _startTime;\n }\n },\n duration: {\n get: function get() {\n return _duration;\n }\n },\n tableOfContentsEntry: {\n get: function get() {\n return _tableOfContentsEntry;\n }\n },\n image: {\n get: function get() {\n return _image;\n }\n },\n imageIndex: {\n get: function get() {\n return _imageIndex;\n }\n },\n imageOffset: {\n get: function get() {\n return _imageOffset;\n }\n },\n imageRectangle: {\n get: function get() {\n return _imageRectangle;\n }\n },\n file: {\n get: function get() {\n return _file;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n name: _name,\n startTime: _startTime,\n duration: _duration,\n tableOfContentsEntry: _tableOfContentsEntry,\n image: _image,\n imageIndex: _imageIndex,\n imageOffset: _imageOffset,\n imageRectangle: _imageRectangle ? _imageRectangle.toPOJO() : _imageRectangle,\n file: _file\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$e = function createFromXmpElement$e(screenTextMarkerElement) {\n var params = {\n name: screenTextMarkerElement.getAttribute('xmpDM:name'),\n startTime: Number(screenTextMarkerElement.getAttribute('xmpDM:startTime')),\n duration: Number(screenTextMarkerElement.getAttribute('xmpDM:duration'))\n };\n\n // optional attributes below\n\n if (screenTextMarkerElement.getAttribute('tscDM:tocEntry')) {\n params.tableOfContentsEntry = Number(screenTextMarkerElement.getAttribute('tscDM:tocEntry'));\n }\n params.image = screenTextMarkerElement.getAttribute('tscDM:image') || undefined;\n if (screenTextMarkerElement.getAttribute('tscDM:imageindex')) {\n params.imageIndex = Number(screenTextMarkerElement.getAttribute('tscDM:imageindex'));\n }\n if (screenTextMarkerElement.getAttribute('tscDM:imageoffset')) {\n params.imageOffset = Number(screenTextMarkerElement.getAttribute('tscDM:imageoffset'));\n }\n if (screenTextMarkerElement.getAttribute('tscDM:imagerect')) {\n params.imageRectangle = ImageRectangle$1.create(screenTextMarkerElement.getAttribute('tscDM:imagerect'));\n }\n params.file = screenTextMarkerElement.getAttribute('tscDM:file') || undefined;\n return new ScreenTextMarker(params);\n};\n\n/** @module ScreenTextMarker */\nvar ScreenTextMarker$1 = {\n /**\n * Factory method that returns a new ScreenTextMarker object.\n * @function create\n * @param {Object} params - Required params for table of contents item\n * @param {String} [params.name] - ScreenText marker name.\n * @param {Number} [params.startTime] - Start time of the screenText marker (milliseconds).\n * @param {Number} [params.duration] - Duration of the screenText marker (milliseconds).\n * @param {String} [params.tableOfContentsEntry] - Index of the table of contents entry corresponding to this screen text marker.\n * @param {String} [params.image] - ScreenText marker image.\n * @param {Number} [params.imageIndex] - ScreenText marker image index.\n * @param {Number} [params.imageOffset] - ScreenText marker image offset.\n * @param {module:ImageRectangle} [params.imageRectangle] - ScreenText marker image rectangle.\n * @param {String} [params.file] - file associated with ScreenText marker.\n * @static\n * @return {module:ScreenTextMarker} new ScreenTextMarker instance\n */\n create: function create(params) {\n return ScreenTextMarker(params);\n },\n /**\n * Factory method that returns a new ScreenTextMarker object from an XMP screenText marker element.\n * @function createFromXmpElement\n * @param {Object} element - XMP screenTextMarker element.\n * @static\n * @return {module:ScreenTextMarker} new ScreenTextMarker instance\n */\n createFromXmpElement: createFromXmpElement$e\n};\nvar ScreenTextTrack = function ScreenTextTrack(params) {\n var _markers = [];\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n if (params.hasOwnProperty('markers') && isArray$1(params.markers)) {\n _markers = params.markers;\n } else {\n throw new Error('ScreenTextTrack params is expecting an object eg. { markers: [marker1Object, ...] }');\n }\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:trackType': 'ScreenText',\n 'xmpDM:trackName': 'Screen Text',\n 'xmpDM:frameRate': 'f1000'\n },\n children: [{\n name: 'xmpDM:markers',\n children: [{\n name: 'rdf:Seq',\n children: _markers\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n markers: {\n get: function get() {\n return _markers;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n markers: invokeMap(_markers, 'toPOJO')\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$f = function createFromXmpElement$f(screenTextTrackElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var screenTextTrack = new ScreenTextTrack();\n if (screenTextTrackElement) {\n var markerElements = _xmlUtility.getElementsByTagNameNSPrefix(screenTextTrackElement, 'rdf:Description');\n var markers = map(markerElements, ScreenTextMarker$1.createFromXmpElement);\n var params = {\n markers: markers\n };\n screenTextTrack = new ScreenTextTrack(params);\n }\n return screenTextTrack;\n};\n\n/** @module ScreenTextTrack */\nvar ScreenTextTrack$1 = {\n /**\n * Factory method that returns a new ScreenTextTrack object.\n * @function create\n * @param {Object} params - Optional params for screenText track\n * @param {module:ScreenTextMarker[]} [params.markers] - Array of screenText marker items.\n * @static\n * @return {module:ScreenTextTrack} new ScreenTextTrack instance\n */\n create: function create(params) {\n return ScreenTextTrack(params);\n },\n /**\n * Factory method that returns a new ScreenTextTrack object from an XMP screenText track element.\n * @function createFromXmpElement\n * @param {Object} element - XMP screenText track element.\n * @static\n * @return {module:ScreenTextTrack} new ScreenTextTrack instance\n */\n createFromXmpElement: createFromXmpElement$f\n};\nvar _xmlUtility;\nvar getXmlUtility = function getXmlUtility() {\n return _xmlUtility || (_xmlUtility = new NamespaceXmlUtility(namespaceResolver));\n};\nvar Controller = function Controller(params) {\n var _name;\n var _parameters;\n var _controllerTextItems;\n var _additionalParamProperties = {};\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'name') {\n _name = params.name;\n } else if (key === 'parameters') {\n _parameters = params.parameters;\n } else if (key === 'controllerTextItems') {\n _controllerTextItems = params.controllerTextItems;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var localizedTextTree = map(_controllerTextItems, function (item) {\n return {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmp:label': item.label\n },\n children: [{\n name: 'tscDM:localizedText',\n children: [{\n name: 'rdf:Alt',\n children: map(item.localizedTexts, function (localizedText) {\n return {\n name: 'rdf:li',\n atts: {\n 'xml:lang': localizedText.lang\n },\n text: localizedText.text\n };\n })\n }]\n }]\n }]\n };\n });\n var treeDesc = {\n name: 'tscDM:controller',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:name': _name\n },\n children: [{\n name: 'tscDM:parameters',\n children: [{\n name: 'rdf:Bag',\n children: map(_parameters, function (param) {\n return {\n name: 'rdf:li',\n atts: {\n 'xmpDM:name': param.name,\n 'xmpDM:value': param.value\n }\n };\n })\n }]\n }, {\n name: 'tscDM:controllerText',\n children: [{\n name: 'rdf:Bag',\n children: localizedTextTree\n }]\n }]\n }]\n };\n return getXmlUtility().createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n name: {\n get: function get() {\n return _name;\n }\n },\n parameters: {\n get: function get() {\n return _parameters;\n }\n },\n controllerTextItems: {\n get: function get() {\n return _controllerTextItems;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n name: _name,\n parameters: _parameters,\n controllerTextItems: _controllerTextItems\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar parseParameter$1 = function parseParameter$1(parameterElement) {\n return {\n name: parameterElement.getAttribute('xmpDM:name'),\n value: parameterElement.getAttribute('xmpDM:value')\n };\n};\nvar parseParameters$1 = function parseParameters$1(parametersElement) {\n if (parametersElement) {\n var parameterElements = getXmlUtility().getElementsByTagNameNSPrefix(parametersElement, 'rdf:li');\n var parameters = map(parameterElements, parseParameter$1);\n return parameters;\n }\n return undefined;\n};\nvar parseLocalizedTextItem = function parseLocalizedTextItem(textElement) {\n if (textElement) {\n return {\n lang: textElement.getAttribute('xml:lang'),\n text: getXmlUtility().getElementText(textElement)\n };\n }\n return undefined;\n};\nvar parseControllerText = function parseControllerText(controllerTextItemElement) {\n var textElements = getXmlUtility().getElementsByTagNameNSPrefix(controllerTextItemElement, 'rdf:li');\n return {\n label: controllerTextItemElement.getAttribute('xmp:label'),\n localizedTexts: map(textElements, parseLocalizedTextItem)\n };\n};\nvar parseControllerTextItems = function parseControllerTextItems(controllerTextElement) {\n if (controllerTextElement) {\n var controllerTextElements = getXmlUtility().getElementsByTagNameNSPrefix(controllerTextElement, 'rdf:Description');\n var controllerTextItems = map(controllerTextElements, parseControllerText);\n return controllerTextItems;\n }\n return undefined;\n};\nvar createFromXmpElement$g = function createFromXmpElement$g(controllerElement) {\n if (controllerElement) {\n var descriptionElement = getXmlUtility().getFirstElementByTagNameNSPrefix(controllerElement, 'rdf:Description');\n var parametersElement = getXmlUtility().getFirstElementByTagNameNSPrefix(descriptionElement, 'tscDM:parameters');\n var controllerTextElement = getXmlUtility().getFirstElementByTagNameNSPrefix(descriptionElement, 'tscDM:controllerText');\n var params = {\n name: descriptionElement.getAttribute('xmpDM:name'),\n parameters: parseParameters$1(parametersElement),\n controllerTextItems: parseControllerTextItems(controllerTextElement)\n };\n return new Controller(params);\n }\n return undefined;\n};\n\n/** @module Controller */\nvar Controller$1 = {\n /**\n * Factory method that returns a new Controller object.\n * @function create\n * @param {Object} params - Required params for controller\n * @param {String} [params.name] - Controller label.\n * @param {Object[]} [params.parameters] - Array of Objects with name and value properties.\n * @param {Object[]} [params.controllerTextItems] - Array of localized controller text items.\n * @static\n * @return {module:Controller} new Controller instance\n */\n create: function create(params) {\n return Controller(params);\n },\n /**\n * Factory method that returns a new Controller object from an XMP controller element.\n * @function createFromXmpElement\n * @param {Object} element - XMP controller element.\n * @static\n * @return {module:Controller} new Controller instance\n */\n createFromXmpElement: createFromXmpElement$g\n};\nvar ContentList = function ContentList(params) {\n var _items;\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'items') {\n _items = params.items;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'tscDM:contentList',\n children: [{\n name: 'rdf:Description',\n children: [{\n name: 'tscDM:files',\n children: [{\n name: 'rdf:Seq',\n children: map(_items, function (item) {\n return {\n name: 'rdf:li',\n atts: {\n 'xmpDM:name': item.name,\n 'xmpDM:value': item.value\n }\n };\n })\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n items: {\n get: function get() {\n return _items;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n items: _items\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar parseContentListItems = function parseContentListItems(contentListItemElements) {\n if (contentListItemElements) {\n var items = map(contentListItemElements, function (itemElement) {\n return {\n name: itemElement.getAttribute('xmpDM:name'),\n value: itemElement.getAttribute('xmpDM:value')\n };\n });\n return items;\n }\n return undefined;\n};\nvar createFromXmpElement$h = function createFromXmpElement$h(contentListElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (contentListElement) {\n var contentListItemElements = _xmlUtility.getElementsByTagNameNSPrefix(contentListElement, 'rdf:li');\n var params = {\n items: parseContentListItems(contentListItemElements)\n };\n return new ContentList(params);\n }\n return undefined;\n};\n\n/** @module ContentList */\nvar ContentList$1 = {\n /**\n * Factory method that returns a new ContentList object.\n * @function create\n * @param {Object} params - Required params for contentList\n * @param {Object[]} [params.items] - Array of content list items.\n * @static\n * @return {module:ContentList} new ContentList instance\n */\n create: function create(params) {\n return ContentList(params);\n },\n /**\n * Factory method that returns a new ContentList object from an XMP contentList element.\n * @function createFromXmpElement\n * @param {Object} element - XMP contentList element.\n * @static\n * @return {module:ContentList} new ContentList instance\n */\n createFromXmpElement: createFromXmpElement$h\n};\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return !start && end >= length ? array : baseSlice(array, start, end);\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\n/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\n/**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\nfunction charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n}\n\n/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange = \"\\\\ud800-\\\\udfff\",\n rsComboMarksRange = \"\\\\u0300-\\\\u036f\",\n reComboHalfMarksRange = \"\\\\ufe20-\\\\ufe2f\",\n rsComboSymbolsRange = \"\\\\u20d0-\\\\u20ff\",\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = \"\\\\ufe0e\\\\ufe0f\";\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = \"\\\\u200d\";\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange$1 = \"\\\\ud800-\\\\udfff\",\n rsComboMarksRange$1 = \"\\\\u0300-\\\\u036f\",\n reComboHalfMarksRange$1 = \"\\\\ufe20-\\\\ufe2f\",\n rsComboSymbolsRange$1 = \"\\\\u20d0-\\\\u20ff\",\n rsComboRange$1 = rsComboMarksRange$1 + reComboHalfMarksRange$1 + rsComboSymbolsRange$1,\n rsVarRange$1 = \"\\\\ufe0e\\\\ufe0f\";\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange$1 + ']',\n rsCombo = '[' + rsComboRange$1 + ']',\n rsFitz = \"\\\\ud83c[\\\\udffb-\\\\udfff]\",\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange$1 + ']',\n rsRegional = \"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",\n rsSurrPair = \"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",\n rsZWJ$1 = \"\\\\u200d\";\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange$1 + ']?',\n rsOptJoin = '(?:' + rsZWJ$1 + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string) ? unicodeToArray(string) : asciiToArray(string);\n}\n\n/** Used to match leading and trailing whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\nfunction trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n return castSlice(strSymbols, start).join('');\n}\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function (key) {\n return object[key];\n });\n}\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys$1(object));\n}\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax$2 = Math.max;\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0;\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax$2(length + fromIndex, 0);\n }\n return isString(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf(collection, value, fromIndex) > -1;\n}\nvar _parsers = [];\nfunction trimLeadingDot(extension) {\n return trimStart(extension, '.');\n}\nvar registerParser = function registerParser(name, supportedExtensions, parserCreator) {\n _parsers.push({\n name: name,\n extensions: map(supportedExtensions, trimLeadingDot),\n create: parserCreator\n });\n};\nvar resolveParser = function resolveParser(extension) {\n var parser = find(_parsers, function (theParser) {\n return includes(theParser.extensions, trimLeadingDot(extension));\n });\n return parser ? parser.create() : null;\n};\nvar captionParsers = {\n register: registerParser,\n resolveByExtension: resolveParser\n};\n\n/**\n * Factory method that returns a new CaptionText object.\n * @function importFromFile\n * @param {module:CaptionController} captionController - CaptionController object\n * @param {String} fileName - Name of caption file\n * @param {String} fileContents - Contents of the caption file\n * @param {String} [languageIdentifierString='en-US'] - RFC 3066 notation language string\n * @static\n * @return {boolean} Did import succeed\n */\nvar importFromFile = function importFromFile(captionController, fileName, fileContents, languageIdentifierString) {\n try {\n var extension = fileName.toLowerCase().split('.').pop();\n var parser = captionParsers.resolveByExtension(extension);\n if (parser) {\n var parsedCaptionTrack = parser.deserialize(fileContents, languageIdentifierString);\n captionController.addCaptionTrack(parsedCaptionTrack);\n return true;\n }\n return false;\n } catch (e) {\n console.error(e); // eslint-disable-line no-console\n return false;\n }\n};\nvar captionImporter = {\n importFromFile: importFromFile\n};\nvar Xmp$1 = function Xmp(xmpXml) {\n var _version;\n var _title;\n var _date;\n var _creator;\n var _presenterEmail;\n var _description;\n var _source;\n var _about;\n var _keywords;\n var _thumbnail;\n var _firstFrame;\n var _project;\n var _originId;\n var _iPodExplicit;\n var _documentId;\n var _duration;\n var _videoFrameSize;\n var _captionController = CaptionController$1$1.create();\n var _hotspotTrack = null;\n var _tableOfContentsTrack = null;\n var _quizTrack = null;\n var _speechTrack = null;\n var _screenTextTrack = null;\n var _controller;\n var _contentList;\n var _languages = [];\n var _containsTocThumbnails = false;\n var _containsToc = false;\n var _containsCaptions = false;\n var _containsHotspots = false;\n var _containsQuiz = false;\n var _containsQuizQuestions = false;\n var _containsScreenText = false;\n var _containsSpeechText = false;\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var toXmp = function toXmp() {\n var _captionXmpProvider = _captionController.containsCaptions ? _captionController : null;\n var tracksContainer = filter([_captionXmpProvider, _hotspotTrack, _quizTrack, _screenTextTrack, _speechTrack, _tableOfContentsTrack], function (track) {\n return track !== null;\n });\n var treeDesc = {\n name: 'rdf:Description',\n atts: {\n 'tsc:version': _version,\n 'dc:title': _title,\n 'tscDM:presenteremail': _presenterEmail,\n 'dc:source': _source,\n 'dc:date': _date,\n 'rdf:about': _about,\n 'dc:creator': _creator,\n 'dc:description': _description,\n 'tscDM:keywords': _keywords,\n 'tscDM:thumbnail': _thumbnail,\n 'tscDM:firstFrame': _firstFrame,\n 'tscDM:project': _project,\n 'tscDM:originId': _originId,\n 'tscDM:iPodExplicit': _iPodExplicit,\n 'xmpMM:DocumentID': _documentId\n },\n children: [{\n name: 'xmpDM:Tracks',\n children: [{\n name: 'rdf:Bag',\n children: tracksContainer\n }]\n }, {\n name: 'tscDM:controller',\n children: [_controller]\n }, {\n name: 'tscDM:contentList',\n children: [_contentList]\n }, {\n name: 'tsc:langName',\n children: [{\n name: 'rdf:Bag',\n children: map(_languages, function (language) {\n return {\n name: 'rdf:li',\n atts: {\n 'xml:lang': language.langName\n },\n text: language.langValue\n };\n })\n }]\n }, {\n name: 'xmpDM:videoFrameSize',\n atts: {\n 'stDim:unit': _videoFrameSize.unit,\n 'stDim:w': _videoFrameSize.width,\n 'stDim:h': _videoFrameSize.height\n }\n }]\n };\n if (_duration) {\n treeDesc.children.push({\n name: 'xmpDM:duration',\n atts: {\n 'xmpDM:scale': _duration.scale,\n 'xmpDM:value': _duration.value\n }\n });\n }\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var toString = function toString() {\n var doc = _xmlUtility.createDocument();\n var nsElement = _xmlUtility.createElementNS(doc, namespaceResolver('x'), 'x', 'xmpmeta');\n forEach(wellKnownNamespaces, function (nsUrl, nsPrefix) {\n if (nsPrefix !== 'xml') {\n nsElement.setAttributeNS('http://www.w3.org/2000/xmlns/', ['xmlns', nsPrefix].join(':'), nsUrl);\n }\n });\n var rdfElement = _xmlUtility.createElementNS(doc, namespaceResolver('rdf'), 'rdf', 'RDF');\n rdfElement.appendChild(toXmp());\n nsElement.appendChild(rdfElement);\n doc.appendChild(nsElement);\n return _xmlUtility.xmlDocToString(doc);\n };\n var _public = Object.defineProperties({}, {\n version: {\n get: function get() {\n return _version;\n }\n },\n title: {\n get: function get() {\n return _title;\n }\n },\n date: {\n get: function get() {\n return _date;\n }\n },\n creator: {\n get: function get() {\n return _creator;\n }\n },\n presenterEmail: {\n get: function get() {\n return _presenterEmail;\n }\n },\n description: {\n get: function get() {\n return _description;\n }\n },\n source: {\n get: function get() {\n return _source;\n }\n },\n about: {\n get: function get() {\n return _about;\n }\n },\n keywords: {\n get: function get() {\n return _keywords;\n }\n },\n thumbnail: {\n get: function get() {\n return _thumbnail;\n }\n },\n firstFrame: {\n get: function get() {\n return _firstFrame;\n }\n },\n project: {\n get: function get() {\n return _project;\n }\n },\n originId: {\n get: function get() {\n return _originId;\n }\n },\n iPodExplicit: {\n get: function get() {\n return _iPodExplicit;\n }\n },\n documentId: {\n get: function get() {\n return _documentId;\n }\n },\n duration: {\n get: function get() {\n return _duration;\n }\n },\n videoFrameSize: {\n get: function get() {\n return _videoFrameSize;\n }\n },\n tocThumbnailImageSrc: {\n get: function get() {\n if (_containsToc && _tableOfContentsTrack.items[0].image !== undefined) {\n return _tableOfContentsTrack.items[0].image;\n } else if (_containsSpeechText && _speechTrack.markers[0].image !== undefined) {\n return _speechTrack.markers[0].image;\n } else if (_containsScreenText && _screenTextTrack.markers[0].image !== undefined) {\n return _screenTextTrack.markers[0].image;\n } else if (_captionController.captionsContainsTocThumbnails) {\n return _captionController.getActiveCaptionsTocThumbnailImage();\n }\n return '';\n }\n },\n containsTocThumbnails: {\n get: function get() {\n return _containsTocThumbnails;\n }\n },\n containsToc: {\n get: function get() {\n return _containsToc;\n }\n },\n containsCaptions: {\n get: function get() {\n return _containsCaptions;\n }\n },\n containsHotspots: {\n get: function get() {\n return _containsHotspots;\n }\n },\n containsQuiz: {\n get: function get() {\n return _containsQuiz;\n }\n },\n containsQuizQuestions: {\n get: function get() {\n return _containsQuizQuestions;\n }\n },\n containsScreenText: {\n get: function get() {\n return _containsScreenText;\n }\n },\n containsSpeechText: {\n get: function get() {\n return _containsSpeechText;\n }\n },\n captionController: {\n get: function get() {\n return _captionController;\n }\n },\n captionTrack: {\n get: function get() {\n return _captionController.activeCaptionTrack;\n }\n },\n hotspotTrack: {\n get: function get() {\n return _hotspotTrack;\n },\n set: function set(value) {\n _hotspotTrack = value;\n }\n },\n tableOfContentsTrack: {\n get: function get() {\n return _tableOfContentsTrack;\n },\n set: function set(value) {\n _tableOfContentsTrack = value;\n }\n },\n quizTrack: {\n get: function get() {\n return _quizTrack;\n },\n set: function set(value) {\n _quizTrack = value;\n }\n },\n speechTrack: {\n get: function get() {\n return _speechTrack;\n }\n },\n screenTextTrack: {\n get: function get() {\n return _screenTextTrack;\n }\n },\n controller: {\n get: function get() {\n return _controller;\n }\n },\n contentList: {\n get: function get() {\n return _contentList;\n }\n }\n });\n var parseLanguageName = function parseLanguageName(languageNameElement) {\n return {\n langName: languageNameElement.getAttribute('xml:lang'),\n langValue: _xmlUtility.getElementText(languageNameElement)\n };\n };\n var parseLanguages = function parseLanguages(langNameElement) {\n if (langNameElement) {\n var languageNameElements = _xmlUtility.getElementsByTagNameNSPrefix(langNameElement, 'rdf:li');\n var languageNames = map(languageNameElements, parseLanguageName);\n return languageNames;\n }\n return null;\n };\n var parseProductionDetails = function parseProductionDetails(doc) {\n var rootDescriptionElement = _xmlUtility.getFirstElementByTagNameNSPrefix(doc, 'rdf:Description');\n _version = rootDescriptionElement.getAttribute('tsc:version');\n _title = rootDescriptionElement.getAttribute('dc:title');\n _documentId = rootDescriptionElement.getAttribute('xmpMM:DocumentID');\n var videoFrameSizeElement = _xmlUtility.getFirstElementByTagNameNSPrefix(doc, 'xmpDM:videoFrameSize');\n _videoFrameSize = {\n unit: videoFrameSizeElement ? videoFrameSizeElement.getAttribute('stDim:unit') : 'pixel',\n width: videoFrameSizeElement ? Number(videoFrameSizeElement.getAttribute('stDim:w')) : 0,\n height: videoFrameSizeElement ? Number(videoFrameSizeElement.getAttribute('stDim:h')) : 0\n };\n var langNameElement = _xmlUtility.getFirstElementByTagNameNSPrefix(doc, 'tsc:langName');\n _languages = parseLanguages(langNameElement);\n\n // optional attributes below\n\n _presenterEmail = rootDescriptionElement.getAttribute('tscDM:presenteremail') || undefined;\n _source = rootDescriptionElement.getAttribute('dc:source') || undefined;\n _date = rootDescriptionElement.getAttribute('dc:date') || undefined;\n _about = rootDescriptionElement.getAttribute('rdf:about') || undefined;\n _creator = rootDescriptionElement.getAttribute('dc:creator') || undefined;\n _description = rootDescriptionElement.getAttribute('dc:description') || undefined;\n _keywords = rootDescriptionElement.getAttribute('tscDM:keywords') || undefined;\n _thumbnail = rootDescriptionElement.getAttribute('tscDM:thumbnail') || undefined;\n _firstFrame = rootDescriptionElement.getAttribute('tscDM:firstFrame') || undefined;\n _project = rootDescriptionElement.getAttribute('tscDM:project') || undefined;\n _originId = rootDescriptionElement.getAttribute('tscDM:originId') || undefined;\n _iPodExplicit = rootDescriptionElement.getAttribute('tscDM:iPodExplicit') || undefined;\n var durationElement = _xmlUtility.getFirstElementByTagNameNSPrefix(doc, 'xmpDM:duration') || undefined;\n if (durationElement) {\n _duration = {\n scale: durationElement.getAttribute('xmpDM:scale'),\n value: Number(durationElement.getAttribute('xmpDM:value'))\n };\n }\n };\n var getElementForTrackType = function getElementForTrackType(elements, trackType) {\n return find(elements, function (element) {\n return _xmlUtility.hasAttributeWithValue(element, 'xmpDM:trackType', trackType);\n });\n };\n var parseCaptionTrack = function parseCaptionTrack(tracksDescriptionElements) {\n var captionTrackElement = getElementForTrackType(tracksDescriptionElements, 'Caption');\n if (captionTrackElement) {\n _captionController.addCaptionTrackFromXmpElement(captionTrackElement);\n }\n };\n var parseHotspotTrack = function parseHotspotTrack(tracksDescriptionElements) {\n var hotspotTrackElement = getElementForTrackType(tracksDescriptionElements, 'Hotspot');\n if (hotspotTrackElement) {\n return HotspotTrack$1.createFromXmpElement(hotspotTrackElement);\n }\n return null;\n };\n var parseTableOfContentsTrack = function parseTableOfContentsTrack(tracksDescriptionElements) {\n var tableOfContentsTrackElement = getElementForTrackType(tracksDescriptionElements, 'TableOfContents');\n if (tableOfContentsTrackElement) {\n return TableOfContentsTrack$1.createFromXmpElement(tableOfContentsTrackElement);\n }\n return null;\n };\n var parseQuizTrack = function parseQuizTrack(tracksDescriptionElements) {\n var quizTrackElement = getElementForTrackType(tracksDescriptionElements, 'Quiz');\n if (quizTrackElement) {\n return QuizTrack$1.createFromXmpElement(quizTrackElement);\n }\n return null;\n };\n var parseSpeechTrack = function parseSpeechTrack(tracksDescriptionElements) {\n var speechTrackElement = getElementForTrackType(tracksDescriptionElements, 'Speech');\n if (speechTrackElement) {\n return SpeechTrack$1.createFromXmpElement(speechTrackElement);\n }\n return null;\n };\n var parseScreenTextTrack = function parseScreenTextTrack(tracksDescriptionElements) {\n var screenTextTrackElement = getElementForTrackType(tracksDescriptionElements, 'ScreenText');\n if (screenTextTrackElement) {\n return ScreenTextTrack$1.createFromXmpElement(screenTextTrackElement);\n }\n return null;\n };\n var parseTracks = function parseTracks(doc) {\n var tracksElement = _xmlUtility.getFirstElementByTagNameNSPrefix(doc, 'xmpDM:Tracks');\n var tracksDescriptionElements = _xmlUtility.getElementsByTagNameNSPrefix(tracksElement, 'rdf:Description');\n parseCaptionTrack(tracksDescriptionElements);\n _hotspotTrack = parseHotspotTrack(tracksDescriptionElements);\n _tableOfContentsTrack = parseTableOfContentsTrack(tracksDescriptionElements);\n _quizTrack = parseQuizTrack(tracksDescriptionElements);\n _speechTrack = parseSpeechTrack(tracksDescriptionElements);\n _screenTextTrack = parseScreenTextTrack(tracksDescriptionElements);\n var controllerElement = _xmlUtility.getFirstElementByTagNameNSPrefix(doc, 'tscDM:controller');\n _controller = Controller$1.createFromXmpElement(controllerElement);\n var contentListElement = _xmlUtility.getFirstElementByTagNameNSPrefix(doc, 'tscDM:contentList');\n _contentList = ContentList$1.createFromXmpElement(contentListElement);\n recordXmpContentFlags();\n };\n var recordXmpContentFlags = function recordXmpContentFlags() {\n _containsToc = _tableOfContentsTrack !== null && _tableOfContentsTrack.items.length > 0;\n _containsCaptions = _captionController.containsCaptions;\n _containsHotspots = _hotspotTrack !== null && _hotspotTrack.hotspots.length > 0;\n _containsQuiz = _quizTrack !== null;\n _containsQuizQuestions = _quizTrack !== null && _quizTrack.questionSets.length > 0;\n _containsScreenText = _screenTextTrack !== null && _screenTextTrack.markers.length > 0;\n _containsSpeechText = _speechTrack !== null && _speechTrack.markers.length > 0;\n _containsTocThumbnails = _containsToc && _tableOfContentsTrack.items[0].image !== undefined || _containsSpeechText && _speechTrack.markers[0].image !== undefined || _containsScreenText && _screenTextTrack.markers[0].image !== undefined || _captionController.captionsContainsTocThumbnails;\n };\n var importCaptionsFromFile = function importCaptionsFromFile(fileName, fileContents, languageIdentifierString) {\n var importedCaptionTrack = captionImporter.importFromFile(_captionController, fileName, fileContents, languageIdentifierString);\n if (importedCaptionTrack) {\n recordXmpContentFlags();\n }\n };\n var parse = function parse() {\n // current 'parse' does NOT deal with different versions of the TSC-XMP schema, as far as we have tested\n // all existing versions of the schema from 2.0.0 - 2.1.0 will parse using this mechanism, but neither parser\n // nor output formatter attempt to take a 2.0.0 and formally migrate it forward to 2.1.0. Nor is the 'version'\n // property of the xml doc ever modified during reading a writing of a particular source. this note is here\n // because will have to deal with versioning someday. (JMD: 2016-05)\n var doc = _xmlUtility.parseXml(xmpXml);\n parseProductionDetails(doc);\n parseTracks(doc);\n };\n if (xmpXml) {\n parse();\n }\n _public.toXmp = toXmp;\n _public.toString = toString;\n _public.importCaptionsFromFile = importCaptionsFromFile;\n _public.toPOJO = function () {\n var pojo = {\n version: _version,\n title: _title,\n documentId: _documentId,\n languages: _languages,\n videoFrameSize: _videoFrameSize,\n source: _source,\n presenterEmail: _presenterEmail,\n date: _date,\n about: _about,\n creator: _creator,\n description: _description,\n keywords: _keywords,\n thumbnail: _thumbnail,\n firstFrame: _firstFrame,\n project: _project,\n originId: _originId,\n iPodExplicit: _iPodExplicit,\n duration: _duration,\n captionTrack: _captionController.toPOJO(),\n hotspotTrack: _hotspotTrack ? _hotspotTrack.toPOJO() : undefined,\n quizTrack: _quizTrack ? _quizTrack.toPOJO() : undefined,\n speechTrack: _speechTrack ? _speechTrack.toPOJO() : undefined,\n screenTextTrack: _screenTextTrack ? _screenTextTrack.toPOJO() : undefined,\n controller: _controller ? _controller.toPOJO() : undefined,\n contentList: _contentList ? _contentList.toPOJO() : undefined\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n return pojo;\n };\n return _public;\n};\n\n/** @module Xmp */\nvar xmp = {\n /**\n * Factory method that returns a new Xmp object.\n * @function create\n * @param {String=} xmpXml - XMP XML string to parse.\n * @static\n * @return {module:Xmp} new Xmp instance\n */\n create: function create(xmpXml) {\n return Xmp$1(xmpXml);\n }\n};\n\n/** Used for built-in method references. */\nvar objectProto$f = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$c = objectProto$f.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty$c.call(object, key);\n}\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\n/** Used for built-in method references. */\nvar arrayProto$2 = Array.prototype;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeJoin = arrayProto$2.join;\n\n/**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\nfunction join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n}\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\nfunction charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n}\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim$1 = /^\\s+|\\s+$/g;\n\n/**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\nfunction trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrim$1, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n return castSlice(strSymbols, start, end).join('');\n}\n\n/**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\nfunction head(array) {\n return array && array.length ? array[0] : undefined;\n}\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function (string) {\n string = toString(string);\n var strSymbols = hasUnicode(string) ? stringToArray(string) : undefined;\n var chr = strSymbols ? strSymbols[0] : string.charAt(0);\n var trailing = strSymbols ? castSlice(strSymbols, 1).join('') : string.slice(1);\n return chr[methodName]() + trailing;\n };\n}\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function (value, index, collection) {\n accumulator = initAccum ? (initAccum = false, value) : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n}\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n var func = isArray$1(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n return func(collection, baseIteratee(iteratee), accumulator, initAccum, baseEach);\n}\n\n/** Used to store function metadata. */\nvar metaMap = WeakMap && new WeakMap();\n\n/**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar baseSetData = !metaMap ? identity : function (func, data) {\n metaMap.set(func, data);\n return func;\n};\n\n/**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCtor(Ctor) {\n return function () {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0:\n return new Ctor();\n case 1:\n return new Ctor(args[0]);\n case 2:\n return new Ctor(args[0], args[1]);\n case 3:\n return new Ctor(args[0], args[1], args[2]);\n case 4:\n return new Ctor(args[0], args[1], args[2], args[3]);\n case 5:\n return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6:\n return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7:\n return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n}\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n function wrapper() {\n var fn = this && this !== root && this instanceof wrapper ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n}\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax$3 = Math.max;\n\n/**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax$3(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n}\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax$4 = Math.max;\n\n/**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax$4(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n}\n\n/**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\nfunction countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n}\n\n/**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\nfunction baseLodash() {\n // No operation performed.\n}\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH$1 = 4294967295;\n\n/**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\nfunction LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH$1;\n this.__views__ = [];\n}\n\n// Ensure `LazyWrapper` is an instance of `baseLodash`.\nLazyWrapper.prototype = baseCreate(baseLodash.prototype);\nLazyWrapper.prototype.constructor = LazyWrapper;\n\n/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop$1$1() {\n // No operation performed.\n}\n\n/**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\nvar getData = !metaMap ? noop$1$1 : function (func) {\n return metaMap.get(func);\n};\n\n/** Used to lookup unminified function names. */\nvar realNames = {};\n\n/** Used for built-in method references. */\nvar objectProto$g = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$d = objectProto$g.hasOwnProperty;\n\n/**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\nfunction getFuncName(func) {\n var result = func.name + '',\n array = realNames[result],\n length = hasOwnProperty$d.call(realNames, result) ? array.length : 0;\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n}\n\n/**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\nfunction LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n}\nLodashWrapper.prototype = baseCreate(baseLodash.prototype);\nLodashWrapper.prototype.constructor = LodashWrapper;\n\n/**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\nfunction wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n}\n\n/** Used for built-in method references. */\nvar objectProto$h = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$e = objectProto$h.hasOwnProperty;\n\n/**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\nfunction lodash(value) {\n if (isObjectLike(value) && !isArray$1(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty$e.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n}\n\n// Ensure wrappers are instances of `baseLodash`.\nlodash.prototype = baseLodash.prototype;\nlodash.prototype.constructor = lodash;\n\n/**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\nfunction isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n}\n\n/**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar setData = shortOut(baseSetData);\n\n/** Used to match wrap detail comments. */\nvar reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n/**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\nfunction getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n}\n\n/** Used to match wrap detail comments. */\nvar reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/;\n\n/**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\nfunction insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n}\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG$1 = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n/** Used to associate wrap methods with their bit flags. */\nvar wrapFlags = [['ary', WRAP_ARY_FLAG], ['bind', WRAP_BIND_FLAG$1], ['bindKey', WRAP_BIND_KEY_FLAG], ['curry', WRAP_CURRY_FLAG], ['curryRight', WRAP_CURRY_RIGHT_FLAG], ['flip', WRAP_FLIP_FLAG], ['partial', WRAP_PARTIAL_FLAG], ['partialRight', WRAP_PARTIAL_RIGHT_FLAG], ['rearg', WRAP_REARG_FLAG]];\n\n/**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\nfunction updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function (pair) {\n var value = '_.' + pair[0];\n if (bitmask & pair[1] && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n}\n\n/**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\nfunction setWrapToString(wrapper, reference, bitmask) {\n var source = reference + '';\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n}\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG$2 = 1,\n WRAP_BIND_KEY_FLAG$1 = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG$1 = 8,\n WRAP_PARTIAL_FLAG$1 = 32,\n WRAP_PARTIAL_RIGHT_FLAG$1 = 64;\n\n/**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG$1,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n bitmask |= isCurry ? WRAP_PARTIAL_FLAG$1 : WRAP_PARTIAL_RIGHT_FLAG$1;\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG$1 : WRAP_PARTIAL_FLAG$1);\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG$2 | WRAP_BIND_KEY_FLAG$1);\n }\n var newData = [func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, newHoldersRight, argPos, ary, arity];\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n}\n\n/**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\nfunction getHolder(func) {\n var object = func;\n return object.placeholder;\n}\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin$1 = Math.min;\n\n/**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\nfunction reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin$1(indexes.length, arrLength),\n oldArray = copyArray(array);\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n}\n\n/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\nfunction replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n}\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG$3 = 1,\n WRAP_BIND_KEY_FLAG$2 = 2,\n WRAP_CURRY_FLAG$2 = 8,\n WRAP_CURRY_RIGHT_FLAG$1 = 16,\n WRAP_ARY_FLAG$1 = 128,\n WRAP_FLIP_FLAG$1 = 512;\n\n/**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG$1,\n isBind = bitmask & WRAP_BIND_FLAG$3,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG$2,\n isCurried = bitmask & (WRAP_CURRY_FLAG$2 | WRAP_CURRY_RIGHT_FLAG$1),\n isFlip = bitmask & WRAP_FLIP_FLAG$1,\n Ctor = isBindKey ? undefined : createCtor(func);\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(func, bitmask, createHybrid, wrapper.placeholder, thisArg, args, newHolders, argPos, ary, arity - length);\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n}\n\n/**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder ? [] : replaceHolders(args, placeholder);\n length -= holders.length;\n if (length < arity) {\n return createRecurry(func, bitmask, createHybrid, wrapper.placeholder, undefined, args, holders, undefined, undefined, arity - length);\n }\n var fn = this && this !== root && this instanceof wrapper ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n}\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG$4 = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG$4,\n Ctor = createCtor(func);\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = this && this !== root && this instanceof wrapper ? Ctor : func;\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n}\n\n/** Used as the internal argument placeholder. */\nvar PLACEHOLDER$1 = '__lodash_placeholder__';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG$5 = 1,\n WRAP_BIND_KEY_FLAG$3 = 2,\n WRAP_CURRY_BOUND_FLAG$1 = 4,\n WRAP_CURRY_FLAG$3 = 8,\n WRAP_ARY_FLAG$2 = 128,\n WRAP_REARG_FLAG$1 = 256;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin$2 = Math.min;\n\n/**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\nfunction mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG$5 | WRAP_BIND_KEY_FLAG$3 | WRAP_ARY_FLAG$2);\n var isCombo = srcBitmask == WRAP_ARY_FLAG$2 && bitmask == WRAP_CURRY_FLAG$3 || srcBitmask == WRAP_ARY_FLAG$2 && bitmask == WRAP_REARG_FLAG$1 && data[7].length <= source[8] || srcBitmask == (WRAP_ARY_FLAG$2 | WRAP_REARG_FLAG$1) && source[7].length <= source[8] && bitmask == WRAP_CURRY_FLAG$3;\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG$5) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG$5 ? 0 : WRAP_CURRY_BOUND_FLAG$1;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER$1) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER$1) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG$2) {\n data[8] = data[8] == null ? source[8] : nativeMin$2(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n return data;\n}\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT$2 = 'Expected a function';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG$6 = 1,\n WRAP_BIND_KEY_FLAG$4 = 2,\n WRAP_CURRY_FLAG$4 = 8,\n WRAP_CURRY_RIGHT_FLAG$2 = 16,\n WRAP_PARTIAL_FLAG$2 = 32,\n WRAP_PARTIAL_RIGHT_FLAG$2 = 64;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax$5 = Math.max;\n\n/**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG$4;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT$2);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG$2 | WRAP_PARTIAL_RIGHT_FLAG$2);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax$5(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG$2) {\n var partialsRight = partials,\n holdersRight = holders;\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n var newData = [func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity];\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined ? isBindKey ? 0 : func.length : nativeMax$5(newData[9] - length, 0);\n if (!arity && bitmask & (WRAP_CURRY_FLAG$4 | WRAP_CURRY_RIGHT_FLAG$2)) {\n bitmask &= ~(WRAP_CURRY_FLAG$4 | WRAP_CURRY_RIGHT_FLAG$2);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG$6) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG$4 || bitmask == WRAP_CURRY_RIGHT_FLAG$2) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG$2 || bitmask == (WRAP_BIND_FLAG$6 | WRAP_PARTIAL_FLAG$2)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n}\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_FLAG$5 = 8;\n\n/**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\nfunction curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG$5, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n}\n\n// Assign default placeholders.\ncurry.placeholder = {};\n\n/**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\nfunction isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n}\nvar DEFAULT_CAPTION_LANGUAGE_IDENTIFIER_STRING = 'en-US';\n\n// Simple function to convert HH:MM:SS,MMM or HH:MM:SS.MMM to SS.MMM\n// Assume valid, returns 0 on error\n/* eslint-disable no-magic-numbers, no-mixed-operators */\nfunction toSeconds(timeIn) {\n var t = timeIn.split(':');\n try {\n var s = t[2].split(',');\n\n // Just in case a . is decimal separator\n if (s.length === 1) {\n s = t[2].split('.');\n }\n return parseFloat(t[0], 10) * 3600 + parseFloat(t[1], 10) * 60 + parseFloat(s[0], 10) + parseFloat(s[1], 10) / 1000;\n } catch (e) {\n return 0;\n }\n}\n/* eslint-enable no-magic-numbers, no-mixed-operators */\n\nfunction nextNonEmptyLine(linesArray, position) {\n var idx = position;\n while (!linesArray[idx] && idx < linesArray.length) {\n idx++;\n }\n return idx;\n}\nfunction lastNonEmptyLine(linesArray) {\n var idx = linesArray.length - 1;\n while (idx >= 0 && !linesArray[idx]) {\n idx--;\n }\n return idx;\n}\nfunction _readCaptionsFromString(input, timeDelimiter, hasIdRow, languageIdentifierString) {\n languageIdentifierString = languageIdentifierString || DEFAULT_CAPTION_LANGUAGE_IDENTIFIER_STRING;\n var captionCollection = CaptionCollection$1.create();\n var i = 0;\n var index = 0;\n var lines;\n var time;\n var text;\n var endIndex;\n var caption;\n var timeSplitRegex = new RegExp('[\\\\t ]*' + timeDelimiter + '[\\\\t ]*');\n var SSATagRegex = /\\{(\\\\[\\w]+\\(?([\\w\\d]+,?)+\\)?)+\\}/gi;\n var lessThanRegex = //g;\n var newlinePlaceholderRegex = /\\\\N/gi;\n\n // Here is where the magic happens\n // Split on line breaks\n lines = input.split(/(?:\\r\\n|\\r|\\n)/gm);\n endIndex = lastNonEmptyLine(lines) + 1;\n for (i = 0; i < endIndex; i++) {\n caption = {};\n text = [];\n i = nextNonEmptyLine(lines, i);\n if (hasIdRow) {\n caption.id = parseInt(lines[i++], 10);\n } else {\n caption.id = i;\n }\n\n // Split on delimiter (often '-->' or ','), trimming spaces as well\n time = lines[i++].split(timeSplitRegex);\n caption.start = toSeconds(time[0]);\n\n // So as to trim positioning information from end\n index = time[1].indexOf(' ');\n if (index !== -1) {\n time[1] = time[1].substring(0, index);\n }\n caption.end = toSeconds(time[1]);\n\n // Build single line of text from multi-line subtitle in file\n while (i < endIndex && lines[i]) {\n text.push(lines[i++]);\n }\n\n // Join into 1 line, SSA-style linebreaks\n // Strip out other SSA-style tags\n caption.text = text.join('\\\\N').replace(SSATagRegex, '');\n\n // Escape HTML entities\n caption.text = caption.text.replace(lessThanRegex, '<').replace(greaterThanRegex, '>');\n\n // Unescape great than and less than when it makes a valid html tag of a supported style (font, b, u, s, i)\n // Modified version of regex from Phil Haack's blog: http://haacked.com/archive/2004/10/25/usingregularexpressionstomatchhtml.aspx\n // Later modified by kev: http://kevin.deldycke.com/2007/03/ultimate-regular-expression-for-html-tag-parsing-with-php/\n //caption.text = caption.text.replace( /<(\\/?(font|b|u|i|s))((\\s+(\\w|\\w[\\w\\-]*\\w)(\\s*=\\s*(?:\\\".*?\\\"|'.*?'|[^'\\\">\\s]+))?)+\\s*|\\s*)(\\/?)>/gi, \"<$1$3$7>\" );\n caption.text = caption.text.replace(newlinePlaceholderRegex, '\\n');\n captionCollection.addCaption(Caption$1.create({\n startTime: caption.start * 1000,\n duration: caption.end * 1000 - caption.start * 1000,\n captionTextList: [CaptionText$1.create({\n text: caption.text,\n languageIdentifierString: languageIdentifierString\n })],\n horizontalAlignment: 'Center',\n verticalAlignment: 'Bottom'\n }));\n }\n var captionTrack = CaptionTrack$1.create({\n captions: captionCollection.captions,\n languageIdentifierString: languageIdentifierString\n });\n return captionTrack;\n}\nfunction padWithZero(inputNumber, width) {\n inputNumber = inputNumber + '';\n return inputNumber.length >= width ? inputNumber : new Array(width - inputNumber.length + 1).join('0') + inputNumber;\n}\nfunction formatMillisecondsToTimeCode(inputMilliseconds, options) {\n var date = new Date(inputMilliseconds);\n var hoursPaddingIsSet = options.hoursPadding || options.hoursPadding === 0;\n var hoursPadding = hoursPaddingIsSet ? options.hoursPadding : 2;\n var hours = padWithZero(date.getUTCHours(), hoursPadding);\n var minutes = padWithZero(date.getUTCMinutes(), 2);\n var seconds = padWithZero(date.getUTCSeconds(), 2);\n var rawMilliseconds = date.getUTCMilliseconds().toFixed(3).split('.')[0]; // eslint-disable-line no-magic-numbers\n var milliseconds = padWithZero(rawMilliseconds, 3); // eslint-disable-line no-magic-numbers\n\n var millisecondDelimiter = options.millisecondDelimiter ? options.millisecondDelimiter : ',';\n return hours + ':' + minutes + ':' + seconds + millisecondDelimiter + milliseconds;\n}\nfunction captionsToString(captionTrack, options) {\n function captionToString(output, caption, index) {\n var isBeginningOfString = index === 0;\n if (!isBeginningOfString) {\n output += '\\n\\n';\n }\n if (options.hasIdRow) {\n var oneBasedIndex = index + 1;\n output += oneBasedIndex;\n output += '\\n';\n }\n output += formatMillisecondsToTimeCode(caption.startTime, options) + options.timeDelimiter + formatMillisecondsToTimeCode(caption.endTime, options);\n output += '\\n';\n output += caption.text;\n return output;\n }\n return reduce(captionTrack.captionCollection.captions, captionToString, options.accumulator);\n}\nvar baseNewlineParser = {\n readCaptionsFromStringWithIdRow: function readCaptionsFromStringWithIdRow(input, timeDelimiter, languageIdentifierString) {\n return _readCaptionsFromString(input, timeDelimiter, true, languageIdentifierString);\n },\n readCaptionsFromString: function readCaptionsFromString(input, timeDelimiter, languageIdentifierString) {\n return _readCaptionsFromString(input, timeDelimiter, false, languageIdentifierString);\n },\n captionsToString: captionsToString,\n DEFAULT_CAPTION_LANGUAGE_IDENTIFIER_STRING: DEFAULT_CAPTION_LANGUAGE_IDENTIFIER_STRING\n};\nvar registerParser$1 = function registerParser$1() {\n captionParsers.register('SAMI', ['.sami', '.smi'], function () {\n var _xmlUtility = new XmlUtility();\n function getElementText(textElement) {\n var nonBreakingSpace = String.fromCharCode(0xA0); //eslint-disable-line no-magic-numbers\n var text = _xmlUtility.getElementText(textElement).replace(nonBreakingSpace, ' ');\n return text;\n }\n function getSyncTagText(tag) {\n var textElements = _xmlUtility.getElementsByTagName(tag, 'p');\n if (textElements.length < 1) {\n return getElementText(tag);\n }\n var elementsText = map(textElements, getElementText);\n return join(elementsText, '\\n');\n }\n function parseSyncTagToCaption(horizontalAlignment, languageIdentifierString, captionCollection, tag) {\n var startTime = +tag.getAttribute('start');\n var captionText = CaptionText$1.create({\n languageIdentifierString: languageIdentifierString,\n text: getSyncTagText(tag)\n });\n var createParams = {\n startTime: startTime,\n duration: 0,\n captionTextList: [captionText],\n horizontalAlignment: capitalize(horizontalAlignment.toLowerCase()),\n verticalAlignment: 'Bottom'\n };\n captionCollection.addCaption(Caption$1.create(createParams));\n return captionCollection;\n }\n function assignCaptionDurationsByFillingCaptionStartTimeGaps(captionCollection) {\n for (var i = 0; i < captionCollection.captions.length; i++) {\n var currentCaption = captionCollection.captions[i];\n var nextCaption = null;\n if (i + 1 < captionCollection.captions.length) {\n nextCaption = captionCollection.captions[i + 1];\n }\n var defaultDuration = 3000;\n var duration = nextCaption ? nextCaption.startTime - currentCaption.endTime : defaultDuration;\n currentCaption.setDuration(duration);\n }\n return captionCollection;\n }\n function removeHtmlComments(input) {\n return input.replace(//g, '');\n }\n function cssColorToRGB(cssColorValue) {\n if (!cssColorValue) {\n return null;\n }\n var result = tinycolor$1(cssColorValue);\n if (!result.isValid()) {\n return null;\n }\n return result.toRgb();\n }\n function parseStyle(text) {\n var fontSizeNoDescriptorRegex = /font-size: *(\\d+);/g;\n text = text.replace(fontSizeNoDescriptorRegex, 'font-size: $1px;');\n var doc = document.implementation.createHTMLDocument('');\n var styleElement = doc.createElement('style');\n styleElement.textContent = text;\n doc.body.appendChild(styleElement);\n return styleElement.sheet.cssRules;\n }\n function getCaptionTrackCreateParams(xmlDoc) {\n var styleElements = xmlDoc.getElementsByTagName('style');\n if (styleElements.length < 1) {\n return {};\n }\n var styles = parseStyle(removeHtmlComments(styleElements[0].textContent));\n var captionStyle = find(styles, function (s) {\n return s.selectorText.toLowerCase() === 'p';\n });\n captionStyle = captionStyle || head(styles);\n return {\n fgColor: cssColorToRGB(captionStyle.style.color),\n bgColor: cssColorToRGB(captionStyle.style.backgroundColor),\n fontFamily: trim(captionStyle.style.fontFamily, '\"\\''),\n fontSize: captionStyle.style.fontSize,\n horizontalAlignment: captionStyle.style.textAlign || 'Center'\n };\n }\n function readCaptionsFromString(input, languageIdentifierString) {\n languageIdentifierString = languageIdentifierString || baseNewlineParser.DEFAULT_CAPTION_LANGUAGE_IDENTIFIER_STRING;\n var captionCollection = CaptionCollection$1.create();\n var xmlDoc = _xmlUtility.parseXml(input, 'text/html');\n if (!xmlDoc) {\n throw new Error('xmlDoc is null');\n }\n var syncElements = xmlDoc.getElementsByTagName('sync');\n var createCaptionTrackParams = getCaptionTrackCreateParams(xmlDoc);\n var parseSyncTagToCaptionWithHorizontalAlignment = curry(parseSyncTagToCaption)(createCaptionTrackParams.horizontalAlignment, languageIdentifierString);\n captionCollection = reduce(syncElements, parseSyncTagToCaptionWithHorizontalAlignment, captionCollection);\n captionCollection = assignCaptionDurationsByFillingCaptionStartTimeGaps(captionCollection);\n createCaptionTrackParams.captions = captionCollection.captions;\n createCaptionTrackParams.languageIdentifierString = languageIdentifierString;\n var captionTrack = CaptionTrack$1.create(createCaptionTrackParams);\n return captionTrack;\n }\n function captionToString(output, caption, nextCaption) {\n var text = caption.text;\n if (text) {\n text += '\\n';\n }\n output += '

' + text + '

';\n if (nextCaption && nextCaption.startTime > caption.endTime) {\n output += '

';\n }\n return output;\n }\n function getTextAlignment(captionTrack) {\n var textAlignments = reduce(captionTrack.captionCollection.captions, function (alignments, caption) {\n var alignment = caption.horizontalAlignment;\n if (!alignment || has(alignments, alignment)) {\n return alignments;\n }\n alignments[alignment] = true;\n return alignments;\n }, {});\n var allAlignments = keys$1(textAlignments);\n return allAlignments.length === 1 ? allAlignments[0].toLowerCase() : 'center';\n }\n function captionsToString(captionTrack) {\n var fontSize = isInteger(captionTrack.fontSize) ? captionTrack.fontSize + 'pt' : captionTrack.fontSize;\n var fontFamily = captionTrack.fontFamily;\n var fgHexColor = captionTrack.fgHexColor;\n var bgHexColor = captionTrack.bgHexColor;\n var textAlign = getTextAlignment(captionTrack);\n\n /* eslint-disable no-tabs */\n var samiCaptionHeader = '' + 'Captions' + '';\n var samiCaptionFooter = '' + '';\n /* eslint-enable no-tabs */\n\n var output = samiCaptionHeader;\n var captionCollection = captionTrack.captionCollection;\n for (var i = 0; i < captionCollection.captions.length; i++) {\n var currentCaption = captionCollection.captions[i];\n var isLastCaption = i === captionCollection.captions.length - 1;\n var nextCaption = isLastCaption ? null : captionCollection.captions[i + 1];\n output = captionToString(output, currentCaption, nextCaption);\n }\n output += samiCaptionFooter;\n return output;\n }\n return {\n deserialize: readCaptionsFromString,\n serialize: captionsToString\n };\n });\n};\nvar samiParser = {\n registerParser: registerParser$1\n};\nvar registerParser$2 = function registerParser$2() {\n captionParsers.register('SBV', ['.sbv'], function () {\n var sbvTimeDelimiter = ',';\n function readCaptionsFromString(input, languageIdentifierString) {\n return baseNewlineParser.readCaptionsFromString(input, sbvTimeDelimiter, languageIdentifierString);\n }\n function captionsToString(captionCollection) {\n return baseNewlineParser.captionsToString(captionCollection, {\n timeDelimiter: sbvTimeDelimiter,\n accumulator: '',\n hoursPadding: 1\n });\n }\n return {\n deserialize: readCaptionsFromString,\n serialize: captionsToString\n };\n });\n};\nvar sbvParser = {\n registerParser: registerParser$2\n};\nvar registerParser$3 = function registerParser$3() {\n captionParsers.register('SRT', ['.srt'], function () {\n var srtEndOfFileMarker = '\\n\\n\\n';\n var srtTimeDelimiter = ' --> ';\n function readCaptionsFromString(input, languageIdentifierString) {\n return baseNewlineParser.readCaptionsFromStringWithIdRow(input, srtTimeDelimiter.trim(), languageIdentifierString);\n }\n function captionsToString(captionCollection) {\n var captionString = baseNewlineParser.captionsToString(captionCollection, {\n timeDelimiter: srtTimeDelimiter,\n accumulator: '\\n\\n',\n hasIdRow: true\n });\n return captionString + srtEndOfFileMarker;\n }\n return {\n deserialize: readCaptionsFromString,\n serialize: captionsToString\n };\n });\n};\nvar srtParser = {\n registerParser: registerParser$3\n};\nvar registerParser$4 = function registerParser$4() {\n captionParsers.register('TTML', ['.ttml', '.dfxp'], function () {\n // Code below is taken from https://github.com/mozilla/popcorn-js/blob/master/parsers/parserTTML/popcorn.parserTTML.js\n\n var rWhitespace = /^[\\s]+|[\\s]+$/gm;\n var rLineBreak = /(?:\\r\\n|\\r|\\n)/gm;\n var rBreakTag = /(
)/gm;\n\n // Parse the children of the given node\n function parseChildren(node, timeOffset, region) {\n var currNode = node.firstChild;\n var currRegion = getNodeRegion(node, region);\n var retVal = [];\n var newOffset;\n while (currNode) {\n if (currNode.nodeType === 1) {\n if (currNode.nodeName === 'p') {\n // p is a textual node, process contents as subtitle\n retVal.push(parseNode(currNode, timeOffset, currRegion));\n } else if (currNode.nodeName === 'div') {\n // div is container for subtitles, recurse\n newOffset = toSeconds(currNode.getAttribute('begin'));\n if (newOffset < 0) {\n newOffset = timeOffset;\n }\n retVal.push.apply(retVal, parseChildren(currNode, newOffset, currRegion));\n }\n }\n currNode = currNode.nextSibling;\n }\n return retVal;\n }\n\n // Get the \"region\" attribute of a node, to know where to put the subtitles\n function getNodeRegion(node, defaultTo) {\n var region = node.getAttribute('region');\n if (region !== null) {\n return region;\n }\n return defaultTo || '';\n }\n\n // Parse a node for text content\n function parseNode(node, timeOffset, region) {\n var sub = {};\n\n // Trim left and right whitespace from text and convert non-explicit line breaks\n sub.text = (node.textContent || node.text).replace(rWhitespace, '').replace(rLineBreak, '
');\n sub.id = node.getAttribute('xml:id') || node.getAttribute('id');\n sub.start = toSeconds(node.getAttribute('begin'), timeOffset);\n sub.end = toSeconds(node.getAttribute('end'), timeOffset);\n sub.target = getNodeRegion(node, region);\n if (sub.end < 0) {\n // No end given, infer duration if possible\n // Otherwise, give end as MAX_VALUE\n sub.end = toSeconds(node.getAttribute('duration'), 0);\n if (sub.end >= 0) {\n sub.end += sub.start;\n } else {\n sub.end = Number.MAX_VALUE;\n }\n }\n return {\n subtitle: sub\n };\n }\n function toTimelineSeconds(timeStr, framerate) {\n // Hours and minutes are optional\n // Seconds must be specified\n // Seconds can be followed by milliseconds OR by the frame information\n var validTimeFormat = /^([0-9]+:){0,2}[0-9]+([.;][0-9]+)?$/;\n var errorMessage = 'Invalid time format';\n var digitPairs;\n var lastIndex;\n var lastPair;\n var firstPair;\n var frameInfo;\n var frameTime;\n if (typeof timeStr === 'number') {\n return timeStr;\n }\n if (typeof timeStr === 'string' && !validTimeFormat.test(timeStr)) {\n throw errorMessage;\n }\n digitPairs = timeStr.split(':');\n lastIndex = digitPairs.length - 1;\n lastPair = digitPairs[lastIndex];\n\n // Fix last element:\n if (lastPair.indexOf(';') > -1) {\n frameInfo = lastPair.split(';');\n frameTime = 0;\n if (framerate && typeof framerate === 'number') {\n frameTime = parseFloat(frameInfo[1], 10) / framerate;\n }\n digitPairs[lastIndex] = parseInt(frameInfo[0], 10) + frameTime;\n }\n firstPair = digitPairs[0];\n\n /* eslint-disable no-magic-numbers, no-mixed-operators */\n return {\n 1: parseFloat(firstPair, 10),\n 2: parseInt(firstPair, 10) * 60 + parseFloat(digitPairs[1], 10),\n 3: parseInt(firstPair, 10) * 3600 + parseInt(digitPairs[1], 10) * 60 + parseFloat(digitPairs[2], 10)\n }[digitPairs.length || 1];\n /* eslint-enable no-magic-numbers, no-mixed-operators */\n }\n\n // Convert time expression to SS.mmm\n // Expression may be absolute to timeline (hh:mm:ss.ms)\n // or relative ( decimal followed by metric ) ex: 3.4s, 5.7m\n // Returns -1 if invalid\n function toSeconds(timeIn, offset) {\n var i;\n if (!timeIn) {\n return -1;\n }\n try {\n return toTimelineSeconds(timeIn);\n } catch (e) {\n i = getMetricIndex(timeIn);\n return parseFloat(timeIn.substring(0, i)) * getMultipler(timeIn.substring(i)) + (offset || 0);\n }\n }\n\n // In a time string such as 3.4ms, get the index of the first character (m) of the time metric (ms)\n function getMetricIndex(timeIn) {\n var i = timeIn.length - 1;\n while (i >= 0 && timeIn[i] <= '9' && timeIn[i] >= '0') {\n i--;\n }\n return i;\n }\n\n // Determine multiplier for metric relative to seconds\n function getMultipler(metric) {\n return {\n h: 3600,\n m: 60,\n s: 1,\n ms: 0.001\n }[metric] || -1;\n }\n function readCaptionsFromString(input, languageIdentifierString) {\n languageIdentifierString = languageIdentifierString || baseNewlineParser.DEFAULT_CAPTION_LANGUAGE_IDENTIFIER_STRING;\n var captionCollection = CaptionCollection$1.create();\n var node;\n var xmlDocument;\n\n // Null checks\n if (!input) {\n return null;\n }\n input = input.replace(/.*<\\/head>/, '');\n input = input.replace(rBreakTag, '\\\\N');\n var _xmlUtility = new XmlUtility();\n xmlDocument = _xmlUtility.parseXml(input);\n if (!xmlDocument) {\n return captionCollection;\n }\n node = xmlDocument.documentElement.firstChild;\n\n // Find body tag\n while (node.nodeName !== 'body') {\n node = node.nextSibling;\n }\n if (node) {\n var captions = parseChildren(node, 0);\n map(captions, function (caption) {\n caption = caption.subtitle;\n var createParams = {\n startTime: caption.start * 1000,\n duration: caption.end * 1000 - caption.start * 1000,\n captionTextList: [CaptionText$1.create({\n text: caption.text.replace('\\\\N', '\\n'),\n languageIdentifierString: languageIdentifierString\n })],\n horizontalAlignment: 'Center',\n verticalAlignment: 'Bottom'\n };\n captionCollection.addCaption(Caption$1.create(createParams));\n });\n }\n var captionTrack = CaptionTrack$1.create({\n captions: captionCollection.captions,\n languageIdentifierString: languageIdentifierString\n });\n return captionTrack;\n }\n function captionToString(output, caption, index) {\n var oneBasedIndex = index + 1;\n output += '

' + caption.text + '

';\n return output;\n }\n function captionsToString(captionTrack) {\n var ttmlHeader = '' + '' + 'Captions' + '';\nvar INCORRECT_SVG = '';\nvar CORRECT_GLYPH_DATA_URL = 'data:image/svg+xml,' + window.encodeURIComponent(CHECK_SVG);\nvar INCORRECT_GLYPH_DATA_URL = 'data:image/svg+xml,' + window.encodeURIComponent(INCORRECT_SVG);\nvar ACTIVE_QUESTION_CLASS = 'active-question-item';\nvar ACTIVE_FEEDBACK_CLASS = 'active-feedback-item';\nvar CORRECT_ANSWER_TEXT = localizationStrings.getPlayerString(playerStringNames.txtCorrectAnswer);\nvar YOUR_ANSWER_TEXT = localizationStrings.getPlayerString(playerStringNames.txtYourAnswer);\n\n/**\n * @memberof TSC\n * @class AnswersView\n * @classdesc Answers View\n */\nvar AnswersView = function AnswersView($container, question, showResults) {\n var _$window = $(window);\n var _$textInput = null;\n var getUserResponse = function getUserResponse() {\n switch (question.type) {\n case questionType.CHOICE:\n return $container.find('input[name=multiple-choice]:checked').val();\n case questionType.FILL_IN:\n return $container.find('input').val();\n case questionType.SHORT:\n return $container.find('textarea').val().replace(/^[ \\t]+|[ \\t]+$/, '');\n }\n };\n var displayResponseFillInResults = function displayResponseFillInResults() {\n if (!question.isGraded) {\n return;\n }\n var $correctImage = $('\\''');\n var $incorrectImage = $('\\''');\n if (question.isResponseCorrect) {\n $container.find('img.feedback-placeholder').replaceWith($correctImage);\n } else {\n $container.find('img.feedback-placeholder').replaceWith($incorrectImage);\n }\n };\n var getCorrectAnswerIndex = function getCorrectAnswerIndex() {\n var numberAnswers = question.answers.length;\n var correctAnswerBitshifted = question.correctAnswer;\n for (var i = 0; i < numberAnswers; i++) {\n /*eslint no-bitwise: \"off\"*/\n if (1 << i === Number(correctAnswerBitshifted)) {\n return i;\n }\n }\n return -1;\n };\n var displayChoiceResults = function displayChoiceResults() {\n var correctAnswerIndex;\n var $placeHolderImgEls;\n var $userResponseInputImageEl;\n var $correctResponseInputImageEl;\n var $correctImage;\n var $incorrectImage;\n var answerIndex = question.userResponse;\n var $labelEls = $container.find('label');\n $labelEls.removeClass(ACTIVE_QUESTION_CLASS);\n $labelEls.addClass(ACTIVE_FEEDBACK_CLASS);\n if (showResults && question.isGraded) {\n correctAnswerIndex = getCorrectAnswerIndex();\n $placeHolderImgEls = $container.find('label img');\n $userResponseInputImageEl = $container.find('label:eq(' + answerIndex + ') img');\n $correctResponseInputImageEl = $container.find('label:eq(' + correctAnswerIndex + ') img');\n $correctImage = $('\\''');\n $incorrectImage = $('\\''');\n $placeHolderImgEls.removeClass('feedback-placeholder');\n if (answerIndex === correctAnswerIndex) {\n $userResponseInputImageEl.replaceWith($correctImage);\n $correctImage.css('opacity', 0);\n $correctImage.animate({\n opacity: 1\n }, 200);\n } else {\n $correctResponseInputImageEl.replaceWith($correctImage);\n $correctImage.css('opacity', 0);\n $correctImage.animate({\n opacity: 1\n }, 200);\n $userResponseInputImageEl.replaceWith($incorrectImage);\n $incorrectImage.css('opacity', 0);\n $incorrectImage.animate({\n opacity: 1\n }, 200);\n }\n }\n $container.find('input').hide();\n if (answerIndex !== undefined) {\n $container.find('label:eq(' + answerIndex + ')').addClass('picked-quiz-item');\n }\n };\n var disableInput = function disableInput() {\n var $inputEls = null;\n switch (question.type) {\n case questionType.CHOICE:\n case questionType.FILL_IN:\n $inputEls = $container.find('input');\n break;\n case questionType.SHORT:\n $inputEls = $container.find('textarea');\n break;\n }\n if ($inputEls) {\n $inputEls.attr('disabled', true);\n }\n };\n var focusFirstInput = function focusFirstInput() {\n $container.find(\".\".concat(cssClasses.focusableAnswerInput)).focus();\n };\n var displayResults = function displayResults() {\n switch (question.type) {\n case questionType.CHOICE:\n displayChoiceResults();\n break;\n case questionType.FILL_IN:\n displayResponseFillInResults();\n break;\n }\n disableInput();\n };\n var getAnswersMarkup = function getAnswersMarkup(autoFocus) {\n if (deviceInfo.isIOS() || deviceInfo.isAndroid()) {\n autoFocus = false;\n }\n switch (question.type) {\n case questionType.CHOICE:\n return templateGenerator.generateChoiceAnswersMarkup(question.text, question.answers, question.userResponse);\n case questionType.FILL_IN:\n return templateGenerator.generateFillInTheBlankAnswerMarkup(question.text, question.userResponse, autoFocus);\n case questionType.SHORT:\n return templateGenerator.generateShortAnswerMarkup(question.text, question.userResponse, autoFocus);\n default:\n log.logException('Answers-view: unsupported question type (' + question.type + ')');\n }\n };\n var destroy = function destroy() {\n if (!showResults && deviceInfo.isIPhoneOrIPod() || deviceInfo.isAndroid()) {\n _$window.off('resize', viewHelper.scrollActiveElementIntoView);\n }\n if (_$textInput && (question.type === questionType.FILL_IN || question.type === questionType.SHORT) && (deviceInfo.isIPhoneOrIPod() || deviceInfo.isAndroid())) {\n _$textInput.off('focus keydown', viewHelper.scrollIntoView);\n }\n };\n var getTextResponseSuffix = function getTextResponseSuffix(userAnsweredQuestion) {\n if (question.isGraded) {\n if (!userAnsweredQuestion) {\n return localizationStrings.getPlayerString(playerStringNames.accessResultsLabelNoResponseGradedSuffix);\n } else if (question.isResponseCorrect) {\n return localizationStrings.getPlayerString(playerStringNames.accessResultsLabelCorrectSuffix);\n }\n return localizationStrings.getPlayerString(playerStringNames.accessResultsLabelIncorrectSuffix);\n } else if (!userAnsweredQuestion) {\n return localizationStrings.getPlayerString(playerStringNames.accessResultsLabelNoResponseSuffix);\n }\n return '';\n };\n var getUsersAnswer = function getUsersAnswer(userAnsweredQuestion) {\n if (question.type === questionType.CHOICE) {\n return userAnsweredQuestion && question.answers[question.userResponse].text;\n }\n return question.userResponse;\n };\n var getCorrectAnswerOrEmptyString = function getCorrectAnswerOrEmptyString() {\n if (question.isGraded && question.type === questionType.CHOICE) {\n return question.answers[getCorrectAnswerIndex()].text;\n }\n return '';\n };\n var getCorrectAnswerText = function getCorrectAnswerText() {\n var userAnsweredQuestion = !(question.userResponse === null || typeof question.userResponse === 'undefined');\n var responseSuffix = getTextResponseSuffix(userAnsweredQuestion);\n var usersAnswer = getUsersAnswer(userAnsweredQuestion);\n var correctAnswer = getCorrectAnswerOrEmptyString();\n var fullAnswerText = '';\n if (correctAnswer) {\n fullAnswerText = CORRECT_ANSWER_TEXT + correctAnswer;\n }\n if (userAnsweredQuestion) {\n fullAnswerText += correctAnswer ? ' - ' : '';\n fullAnswerText += YOUR_ANSWER_TEXT + usersAnswer;\n }\n fullAnswerText += fullAnswerText && responseSuffix ? ' - ' : '';\n fullAnswerText += responseSuffix;\n return fullAnswerText;\n };\n var setupAnswers = function setupAnswers() {\n if (showResults) {\n displayResults();\n } else {\n if (deviceInfo.isIPhoneOrIPod() || deviceInfo.isAndroid()) {\n _$window.on('resize', viewHelper.scrollActiveElementIntoView);\n }\n\n // remove hover css when device is touch screen\n if (question.type === questionType.CHOICE && deviceInfo.isTouchInterface()) {\n $container.find('.multiple-choice').removeClass(ACTIVE_QUESTION_CLASS);\n }\n _$textInput = $container.find('input[type=text], textarea');\n if (_$textInput && (question.type === questionType.FILL_IN || question.type === questionType.SHORT)) {\n if (deviceInfo.isIPhoneOrIPod() || deviceInfo.isAndroid()) {\n _$textInput.on('focus keydown', viewHelper.scrollIntoView);\n }\n }\n }\n };\n var isTextInputOrAreaFocused = function isTextInputOrAreaFocused() {\n return _$textInput && _$textInput.length > 0 && _$textInput.is(':focus');\n };\n var createView = function createView() {\n var answersMarkup = getAnswersMarkup();\n if (answersMarkup) {\n $container.html(answersMarkup);\n }\n $container.find('.multiple-choice > input').focus(function () {\n $(this).parent().addClass('highlight-background');\n }).blur(function () {\n $(this).parent().removeClass('highlight-background');\n });\n };\n createView();\n setupAnswers();\n focusFirstInput();\n return {\n getUserResponse: getUserResponse,\n destroy: destroy,\n getCorrectAnswerText: getCorrectAnswerText,\n isTextInputOrAreaFocused: isTextInputOrAreaFocused\n };\n};\nvar AnswersView$1 = {\n /**\n * Factory method that returns a new QuestionView object.\n * @function create\n * @memberof TSC.AnswersView\n * @static\n * @return new AnswersView instance\n */\n create: AnswersView\n};\n\nvar QUESTION_CORRECT_TEXT_CLASS = '.question-correct-text';\nvar QUESTION_INCORRECT_TEXT_CLASS = '.question-incorrect-text';\n\n/**\n * @memberof TSC\n * @class QuestionView\n * @classdesc Question View\n * @params {Object} $questionTextContainer - jquery wrapper for question text container element\n * @params {Object} $questionGradedStatusContainer - jquery wrapper for question graded status container element\n * @params {Object} $feedbackContainer - jquery wrapper for feedback text container element\n * @params {Object} $answersContainer - jquery wrapper for answers container element\n * @params {TSC.Question} question - Question model for this view.\n * @params {Boolean} showResults - show results for question.\n */\nvar QuestionView = function QuestionView($questionTextContainer, $questionGradedStatusContainer, $feedbackContainer, $answersContainer, question, showResults) {\n var _answersView;\n var _feedbackContextMarkup = templateGenerator.generateQuestionFeedbackContextMarkup(localizationStrings.getPlayerString(playerStringNames.accessQuestionFeedbackContext));\n var createView = function createView() {\n _answersView = AnswersView$1.create($answersContainer, question, showResults);\n $feedbackContainer.addClass('hide-element');\n var correctAnswerText = showResults ? _answersView.getCorrectAnswerText() : '';\n var questionTextMarkup = templateGenerator.generateQuestionTextMarkup(question.text, correctAnswerText);\n $questionTextContainer.html(questionTextMarkup);\n var questionGradedStatusMarkup = templateGenerator.generateQuestionGradedStatusMarkup();\n $questionGradedStatusContainer.html(questionGradedStatusMarkup);\n };\n var showFeedbackTextIfAvailable = function showFeedbackTextIfAvailable() {\n var feedbackMarkup = null;\n question.feedback.forEach(function (feedback) {\n if (question.isResponseCorrect && feedback.reason === 'correct') {\n feedbackMarkup = feedback.markupText;\n } else if (!question.isResponseCorrect && feedback.reason === 'incorrect') {\n feedbackMarkup = feedback.markupText;\n }\n });\n if (feedbackMarkup) {\n $feedbackContainer.html(_feedbackContextMarkup + feedbackMarkup);\n $feedbackContainer.removeClass('hide-element');\n }\n };\n var setupView = function setupView() {\n if (showResults && question.isGraded) {\n showFeedbackTextIfAvailable();\n if (question.isResponseCorrect) {\n $questionGradedStatusContainer.find(QUESTION_CORRECT_TEXT_CLASS).removeClass('hide-element');\n } else {\n $questionGradedStatusContainer.find(QUESTION_INCORRECT_TEXT_CLASS).removeClass('hide-element');\n }\n }\n };\n createView();\n setupView();\n return {\n isTextInputOrAreaFocused: _answersView.isTextInputOrAreaFocused,\n destroy: _answersView.destroy,\n getUserResponse: _answersView.getUserResponse\n };\n};\nvar QuestionView$1 = {\n /**\n * Factory method that returns a new QuestionView object.\n * @function create\n * @memberof TSC.QuestionView\n * @static\n * @return new QuestionView instance\n */\n create: QuestionView\n};\n\nvar SCREEN_READER_ALERT_REMOVAL_TIMEOUT = 1000;\nvar INIT_QUESTION_SET_TIMEOUT = 10;\nvar PEEK_AT_VIDEO_SHORT_CUT_KEYCODE = 72; // h key\nvar CONTAINER_CLASS = '.question-set-container';\nvar QUESTION_SET_CONTENT_CLASS = '.question-set-content';\nvar HIDE_CONTROL_CLASS = '.hide-quiz-button';\nvar SHOW_CONTROL_CLASS = '.show-quiz-button';\nvar PREV_CONTROL_CLASS = '.previous-button';\nvar NEXT_CONTROL_CLASS = '.next-button';\nvar SUBMIT_CONTROL_CLASS = '.submit-button';\nvar CONTINUE_CONTROL_CLASS = '.continue-button';\nvar QUESTION_COUNT_CLASS = '.question-count';\nvar QUESTION_GRADED_STATUS_CLASS = '.question-graded-status';\nvar QUESTION_CLASS = '.question-text';\nvar ANSWERS_CLASS = '.question-answers';\nvar FEEDBACK_CLASS = '.question-feedback';\nvar MINIMIZED_VIEW_CLASS = '.minimized-question-set-container';\n\n/**\n * @memberof TSC\n * @class QuestionSetView\n * @param {Object} $container -- Container to add question set view.\n * @param {TSC.QuestionSet} questionSet -- Question Set model for view.\n * @param {Boolean} displayOverlay -- Display overlay.\n * @param {Boolean} mediaIsImage -- Media is an image.\n * @param {Boolean} showQuestionSetResults -- Show user results for question set.\n * @classdesc View for Question sets.\n */\nvar QuestionSetView = function QuestionSetView($container, questionSet, displayOverlay, mediaIsImage, showQuestionSetResults, quizTime) {\n var _$document = windowWrapper.getDocument(true);\n var _currentQuestionIndex = 0;\n var _$container = $container;\n var _startTimeForQuestion = 0;\n var _endTimeForQuestion = 0;\n var _currentQuestionView = null;\n var _initTimeoutId = null;\n var _alertScreenReaderTimeoutId = null;\n var _$questionSetContainer = null;\n var _$questionSetContent = null;\n var _$questionTextContainer = null;\n var _$answersContainer = null;\n var _$feedbackContainer = null;\n var _$questionCountContainer = null;\n var _$questionGradedStatusContainer = null;\n var _$hideControl = null;\n var _$showControl = null;\n var _$prevControl = null;\n var _$nextControl = null;\n var _$continueControl = null;\n var _$submitControl = null;\n var _$minimizedContainer = null;\n var _minimizedByKeyboardShortcut = false;\n var _superView = BubbleView$1.create(CONTAINER_CLASS);\n var _resolveInitPromise;\n var initPromise = new Promise$1(function (resolve) {\n _resolveInitPromise = resolve;\n });\n var alertScreenReader = function alertScreenReader(message) {\n var screenReaderAlertMarkup = templateGenerator.generateScreenReaderAlertMarkup(message);\n var $screenReaderAlert = $(screenReaderAlertMarkup);\n _$container.append($screenReaderAlert);\n _alertScreenReaderTimeoutId = setTimeout(function () {\n $screenReaderAlert.remove();\n }, SCREEN_READER_ALERT_REMOVAL_TIMEOUT);\n };\n var onHideQuizClick = function onHideQuizClick() {\n minimizeView();\n };\n var onShowQuizHandler = function onShowQuizHandler() {\n maximizeView();\n };\n var onKeyDownHandler = function onKeyDownHandler(e) {\n if (e && e.keyCode === PEEK_AT_VIDEO_SHORT_CUT_KEYCODE && !_currentQuestionView.isTextInputOrAreaFocused() && !_superView.viewIsMinimized) {\n _minimizedByKeyboardShortcut = true;\n _$document.on('keyup', onKeyUpHandler);\n minimizeView();\n }\n };\n var onKeyUpHandler = function onKeyUpHandler() {\n _minimizedByKeyboardShortcut = false;\n _$document.off('keyup', onKeyUpHandler);\n maximizeView();\n };\n var minimizeView = function minimizeView() {\n if (!_superView.viewIsMinimized) {\n $container.trigger(events.Quizzing.MinimizeUI);\n _$questionSetContent.addClass(cssClasses.hideElement);\n if (!_minimizedByKeyboardShortcut) {\n _$minimizedContainer.removeClass(cssClasses.hideElement);\n }\n viewHelper.removeFocusTrap();\n alertScreenReader(localizationStrings.getPlayerString(playerStringNames.accessQuizHidden));\n _superView.minimizeView();\n }\n };\n var maximizeView = function maximizeView() {\n if (_superView.viewIsMinimized) {\n $container.trigger(events.Quizzing.MaximizeUI);\n _$questionSetContent.removeClass(cssClasses.hideElement);\n _$minimizedContainer.addClass(cssClasses.hideElement);\n _superView.maximizeView();\n alertScreenReader(localizationStrings.getPlayerString(playerStringNames.accessQuizShown));\n $container.focus();\n viewHelper.trapFocus(_$questionSetContent);\n }\n };\n var isOnFirstQuestion = function isOnFirstQuestion() {\n return _currentQuestionIndex === 0;\n };\n var isOnLastQuestion = function isOnLastQuestion() {\n return _currentQuestionIndex === questionSet.questions.length - 1;\n };\n var showView = function showView() {\n _$questionSetContainer.removeClass('minimized');\n _superView.showView();\n };\n var hideView = function hideView() {\n _$questionSetContainer.addClass('minimized');\n _superView.hideView();\n };\n var startTrackingQuestionTime = function startTrackingQuestionTime() {\n _startTimeForQuestion = new Date().getTime();\n };\n var recordDurationOnQuestion = function recordDurationOnQuestion() {\n _endTimeForQuestion = new Date().getTime();\n var timeBetween = _endTimeForQuestion - _startTimeForQuestion;\n questionSet.questions[_currentQuestionIndex].attemptDuration += timeBetween;\n };\n var storeUserResponse = function storeUserResponse() {\n var userResponse = _currentQuestionView.getUserResponse();\n if (userResponse !== undefined && userResponse !== '') {\n questionSet.questions[_currentQuestionIndex].userResponse = userResponse;\n }\n };\n var saveQuestionUserInput = function saveQuestionUserInput() {\n if (showQuestionSetResults) {\n return;\n }\n storeUserResponse();\n recordDurationOnQuestion();\n };\n var lockResponses = function lockResponses() {\n if (questionSet.usesRationale) {\n questionSet.questions[_currentQuestionIndex].responseLocked = true;\n } else {\n questionSet.questions.forEach(function (question) {\n question.responseLocked = true;\n });\n }\n };\n var getFeedbackInfoForCurrentQuestion = function getFeedbackInfoForCurrentQuestion() {\n var actionType = rationaleActionType.CONTINUE;\n var feedback;\n if (questionSet.questions[_currentQuestionIndex].isGraded) {\n var feedbackReason = questionSet.questions[_currentQuestionIndex].isResponseCorrect ? 'correct' : 'incorrect';\n feedback = questionSet.questions[_currentQuestionIndex].getFeedbackForReason(feedbackReason);\n if (feedback !== null) {\n if (feedback.location !== undefined) {\n actionType = rationaleActionType.LOCATION;\n } else if (feedback.jumpToTime !== undefined) {\n actionType = rationaleActionType.JUMP_TO_TIME;\n }\n }\n }\n return {\n feedback: feedback,\n actionType: actionType\n };\n };\n var executeContinueAction = function executeContinueAction() {\n if (isOnLastQuestion()) {\n $container.trigger(events.Quizzing.CloseQuestionSetView);\n } else {\n displayNextQuestion();\n }\n };\n var executeRationaleAction = function executeRationaleAction() {\n var feedbackInfo;\n if (questionSet.questions[_currentQuestionIndex].feedbackActionExecuted) {\n feedbackInfo = {\n actionType: rationaleActionType.CONTINUE\n };\n } else {\n feedbackInfo = getFeedbackInfoForCurrentQuestion();\n questionSet.questions[_currentQuestionIndex].feedbackActionExecuted = true;\n }\n switch (feedbackInfo.actionType) {\n case rationaleActionType.CONTINUE:\n executeContinueAction();\n break;\n case rationaleActionType.LOCATION:\n $container.trigger(events.Quizzing.RationaleActionLocation, {\n location: feedbackInfo.feedback.location\n });\n executeContinueAction();\n break;\n case rationaleActionType.JUMP_TO_TIME:\n if (questionSet.startTime !== feedbackInfo.feedback.jumpToTime) {\n $container.trigger(events.Quizzing.RationaleActionJumpToTime, {\n jumpToTime: feedbackInfo.feedback.jumpToTime\n });\n } else {\n executeContinueAction();\n }\n break;\n }\n };\n var displayNextQuestion = function displayNextQuestion() {\n saveQuestionUserInput();\n _currentQuestionIndex++;\n displayQuestion();\n };\n var onPreviousQuestion = function onPreviousQuestion(e) {\n e.preventDefault();\n saveQuestionUserInput();\n _currentQuestionIndex--;\n displayQuestion();\n };\n var onNextQuestion = function onNextQuestion(e) {\n e.preventDefault();\n displayNextQuestion();\n };\n var onContinue = function onContinue(e) {\n e.preventDefault();\n if (questionSet.usesRationale && !showQuestionSetResults) {\n executeRationaleAction();\n } else {\n $container.trigger(events.Quizzing.CloseQuestionSetView);\n }\n };\n var onSubmit = function onSubmit(e) {\n e.preventDefault();\n _$submitControl.attr('disabled', 'disabled');\n saveQuestionUserInput();\n lockResponses();\n $container.trigger(events.Quizzing.SubmitQuestionSet);\n };\n\n //This is a fix for iPhones whipping users back to the top of the page if there is a focused input.\n var onIphoneTouchstart = function onIphoneTouchstart() {\n _$questionSetContainer.find('.fill-in-the-blank-input').blur();\n };\n var getControlsConfig = function getControlsConfig() {\n var currentQuestion = questionSet.questions[_currentQuestionIndex];\n var onFirstQuestion = isOnFirstQuestion();\n var onLastQuestion = isOnLastQuestion();\n var hasOneQuestion = onFirstQuestion && onLastQuestion;\n var controlsConfig = {\n showSubmitNav: false,\n showContinueNav: false,\n showPrevNav: false,\n showNextNav: false,\n prevDisabled: false,\n nextDisabled: false\n };\n if (questionSet.usesRationale && !showQuestionSetResults) {\n if (currentQuestion.responseLocked) {\n if (currentQuestion.feedbackActionExecuted && !onLastQuestion) {\n controlsConfig.showNextNav = true;\n } else {\n controlsConfig.showContinueNav = true;\n }\n } else {\n controlsConfig.showSubmitNav = true;\n }\n controlsConfig.showPrevNav = !hasOneQuestion && !onFirstQuestion;\n } else {\n controlsConfig.showSubmitNav = !showQuestionSetResults && onLastQuestion;\n controlsConfig.showContinueNav = showQuestionSetResults && onLastQuestion && !mediaIsImage;\n controlsConfig.showPrevNav = !hasOneQuestion;\n controlsConfig.showNextNav = !hasOneQuestion && !controlsConfig.showSubmitNav && !controlsConfig.showContinueNav;\n controlsConfig.prevDisabled = _currentQuestionIndex === 0;\n controlsConfig.nextDisabled = onLastQuestion;\n }\n return controlsConfig;\n };\n var updateControls = function updateControls() {\n var controlsConfig = getControlsConfig();\n _$prevControl.css('display', 'none');\n _$nextControl.css('display', 'none');\n _$submitControl.css('display', 'none');\n _$continueControl.css('display', 'none');\n if (controlsConfig.showPrevNav) {\n _$prevControl.css('display', 'inline');\n if (controlsConfig.prevDisabled) {\n _$prevControl.attr('disabled', 'disabled');\n } else {\n _$prevControl.removeAttr('disabled');\n }\n }\n if (controlsConfig.showNextNav) {\n _$nextControl.css('display', 'inline');\n if (controlsConfig.nextDisabled) {\n _$nextControl.attr('disabled', 'disabled');\n } else {\n _$nextControl.removeAttr('disabled');\n }\n }\n if (controlsConfig.showSubmitNav) {\n _$submitControl.removeAttr('disabled');\n _$submitControl.css('display', 'inline');\n }\n if (controlsConfig.showContinueNav) {\n _$continueControl.removeAttr('disabled');\n _$continueControl.css('display', 'inline');\n }\n };\n var displayQuestion = function displayQuestion() {\n var showResults = showQuestionSetResults;\n if (questionSet.usesRationale && questionSet.questions[_currentQuestionIndex].responseLocked) {\n showResults = true;\n }\n if (_currentQuestionView !== null) {\n _currentQuestionView.destroy();\n }\n _currentQuestionView = QuestionView$1.create(_$questionTextContainer, _$questionGradedStatusContainer, _$feedbackContainer, _$answersContainer, questionSet.questions[_currentQuestionIndex], showResults);\n updateQuestionCount();\n updateControls();\n startTrackingQuestionTime();\n viewHelper.trapFocus(_$questionSetContent);\n };\n var updateQuestionCount = function updateQuestionCount() {\n var questionCountMarkup = templateGenerator.generateQuestionSetQuestionCountMarkup(_currentQuestionIndex + 1, questionSet.questions.length);\n _$questionCountContainer.html(questionCountMarkup);\n };\n var showFeedbackForCurrentQuestion = function showFeedbackForCurrentQuestion() {\n displayQuestion();\n updateControls();\n };\n var createView = function createView() {\n var questionSetViewMarkup = templateGenerator.generateQuestionSetMarkup(quizTime);\n if (displayOverlay) {\n questionSetViewMarkup += _superView.getOverlayMarkup();\n }\n _$container.append(questionSetViewMarkup);\n _$questionSetContainer = _$container.find(CONTAINER_CLASS);\n _$questionSetContent = _$container.find(QUESTION_SET_CONTENT_CLASS);\n _$questionTextContainer = _$container.find(QUESTION_CLASS);\n _$answersContainer = _$container.find(ANSWERS_CLASS);\n _$feedbackContainer = _$container.find(FEEDBACK_CLASS);\n _$questionCountContainer = _$container.find(QUESTION_COUNT_CLASS);\n _$questionGradedStatusContainer = _$container.find(QUESTION_GRADED_STATUS_CLASS);\n _$hideControl = _$container.find(HIDE_CONTROL_CLASS);\n _$showControl = _$container.find(SHOW_CONTROL_CLASS);\n _$prevControl = _$container.find(PREV_CONTROL_CLASS);\n _$nextControl = _$container.find(NEXT_CONTROL_CLASS);\n _$continueControl = _$container.find(CONTINUE_CONTROL_CLASS);\n _$submitControl = _$container.find(SUBMIT_CONTROL_CLASS);\n _$minimizedContainer = _$container.find(MINIMIZED_VIEW_CLASS);\n };\n var removeEvents = function removeEvents() {\n _$hideControl.off('click', onHideQuizClick);\n _$showControl.off('click', onShowQuizHandler);\n _$prevControl.off('click', onPreviousQuestion);\n _$nextControl.off('click', onNextQuestion);\n _$submitControl.off('click', onSubmit);\n _$continueControl.off('click', onContinue);\n $container.off('keydown', onKeyDownHandler);\n viewHelper.removeFocusTrap();\n if (deviceInfo.isIPhoneOrIPod()) {\n _$questionSetContainer.off('touchstart', onIphoneTouchstart);\n }\n };\n var setupEvents = function setupEvents() {\n _$hideControl.on('click', onHideQuizClick);\n _$showControl.on('click', onShowQuizHandler);\n _$prevControl.on('click', onPreviousQuestion);\n _$nextControl.on('click', onNextQuestion);\n _$submitControl.on('click', onSubmit);\n _$continueControl.on('click', onContinue);\n $container.on('keydown', onKeyDownHandler);\n if (deviceInfo.isIPhoneOrIPod()) {\n _$questionSetContainer.on('touchstart', onIphoneTouchstart);\n }\n };\n var checkQuestionSetProgress = function checkQuestionSetProgress() {\n if (showQuestionSetResults) {\n return;\n }\n for (var i = 0; i < questionSet.questions.length; i++) {\n if (!questionSet.questions[i].responseLocked) {\n _currentQuestionIndex = i;\n break;\n }\n }\n };\n var removeView = function removeView(completeCallback, destroyOverlay) {\n _initTimeoutId && clearTimeout(_initTimeoutId);\n _alertScreenReaderTimeoutId && clearTimeout(_alertScreenReaderTimeoutId);\n removeEvents();\n _currentQuestionView.destroy();\n _superView.removeView(completeCallback, destroyOverlay);\n };\n createView();\n checkQuestionSetProgress();\n setupEvents();\n\n // need to delay displaying first question for NVDA screen reader to pick up text.\n _initTimeoutId = setTimeout(function () {\n displayQuestion();\n _resolveInitPromise();\n }, INIT_QUESTION_SET_TIMEOUT);\n return Object.defineProperties({\n showView: showView,\n hideView: hideView,\n removeView: removeView,\n showFeedbackForCurrentQuestion: showFeedbackForCurrentQuestion\n }, {\n viewInitializedPromise: {\n get: function get() {\n return initPromise;\n }\n }\n });\n};\nvar QuestionSetView$1 = {\n create: QuestionSetView\n};\n\nvar _containerId$2 = '.start-question-set-confirmation-container';\nvar _superView$2 = BubbleView$1.create(_containerId$2);\nvar _reviewControlId = '.review-button';\nvar _confirmControlId = '.confirm-button';\nvar questionSetConfirmationView = {\n getViewMarkup: function getViewMarkup(reviewText, confirmationText) {\n return templateGenerator.generateQuestionSetConfirmationMarkup(reviewText, confirmationText) + _superView$2.getOverlayMarkup();\n },\n getReviewControlRef: function getReviewControlRef() {\n return _reviewControlId;\n },\n getConfirmControlRef: function getConfirmControlRef() {\n return _confirmControlId;\n },\n hideView: function hideView() {\n _superView$2.hideView();\n },\n showView: function showView() {\n _superView$2.showView(true);\n var $confirmControl = $(_containerId$2).find(_confirmControlId);\n $confirmControl.focus();\n highlightDisabler.disableHighlights($confirmControl);\n },\n removeView: _superView$2.removeView,\n updateViewPosition: _superView$2.updateViewPosition,\n setBottomOffset: _superView$2.setBottomOffset,\n pointAt: _superView$2.pointAt\n};\n\nvar setItem = function setItem(key, value) {\n try {\n window.sessionStorage.setItem(key, value);\n } catch (e) {\n // We want this to fail silently\n }\n};\nvar getItem = function getItem(key) {\n try {\n return window.sessionStorage.getItem(key);\n } catch (e) {\n return null;\n }\n};\nvar sessionStorageWrapper = {\n /**\n * Wraps native session storage setItem with a try/catch.\n * @function setItem\n * @memberof TSC.sessionStorageWrapper\n * @static\n * @param {String} key - the key of the value to set in session storage\n * @param {String} value - the value to set in session storage\n */\n setItem: setItem,\n /**\n * Wraps native session storage getItem.\n * @function getItem\n * @memberof TSC.sessionStorageWrapper\n * @static\n * @param {String} key - the key of the value to retrieve in session storage\n * @returns {String} value from session storage (could be null or undefined)\n */\n getItem: getItem\n};\n\nvar _$window = $(window);\nvar FIRST_NAME_CLASS = 'first_name';\nvar LAST_NAME_CLASS = 'last_name';\nvar rightParenRegex = /\\)/gi;\nvar leftParenRegex = /\\(/gi;\n\n/**\n * @memberof TSC\n * @class QuizSetupView\n * @classdesc Quiz Setup View\n * @param {JQuery} $rootContainer - Smart player container element.\n */\nvar QuizSetupView = function QuizSetupView($rootContainer) {\n var _$rootContainer = $rootContainer;\n var _$quizSetupView = null;\n var _$firstNameInput = null;\n var _$lastNameInput = null;\n var _$emailInput = null;\n var _$beginButton = null;\n var _$skipButton = null;\n var createView = function createView() {\n var quizSetupMarkup = templateGenerator.generateQuizSetupMarkup();\n _$quizSetupView = $($.parseHTML(quizSetupMarkup));\n _$firstNameInput = _$quizSetupView.find('.' + FIRST_NAME_CLASS);\n _$lastNameInput = _$quizSetupView.find('.' + LAST_NAME_CLASS);\n _$emailInput = _$quizSetupView.find('.email_address');\n _$beginButton = _$quizSetupView.find('.tsc_begin_button');\n _$skipButton = _$quizSetupView.find('.skip_control');\n _$rootContainer.trigger(events.Modals.Open);\n };\n var getKeys = function getKeys() {\n var hostname = windowWrapper.getLocation().hostname;\n return {\n first: hostname + '-first',\n last: hostname + '-last',\n email: hostname + '-email'\n };\n };\n var getUserInfo = function getUserInfo() {\n var keys = getKeys();\n var firstName = playerConfiguration.userInfo && playerConfiguration.userInfo.firstName;\n var lastName = playerConfiguration.userInfo && playerConfiguration.userInfo.lastName;\n var email = playerConfiguration.userInfo && playerConfiguration.userInfo.email;\n if (playerConfiguration.rememberUserInfo) {\n firstName = firstName || sessionStorageWrapper.getItem(keys.first);\n lastName = lastName || sessionStorageWrapper.getItem(keys.last);\n email = email || sessionStorageWrapper.getItem(keys.email);\n }\n return {\n firstName: firstName,\n lastName: lastName,\n email: email\n };\n };\n var cacheSelfIdentity = function cacheSelfIdentity(eventData) {\n var keys = getKeys();\n sessionStorageWrapper.setItem(keys.first, eventData.firstName);\n sessionStorageWrapper.setItem(keys.last, eventData.lastName);\n sessionStorageWrapper.setItem(keys.email, eventData.email);\n };\n var setupInitialValues = function setupInitialValues() {\n var userInfo = getUserInfo();\n _$firstNameInput.val(userInfo.firstName);\n _$lastNameInput.val(userInfo.lastName);\n _$emailInput.val(userInfo.email);\n if (userInfo.firstName && userInfo.lastName && userInfo.email) {\n validateInput();\n }\n };\n var addPosterImageToBackground = function addPosterImageToBackground(posterSrc) {\n posterSrc = posterSrc.replace(rightParenRegex, '\\\\\\)');\n posterSrc = posterSrc.replace(leftParenRegex, '\\\\\\(');\n var url = 'url(' + posterSrc + ')';\n _$quizSetupView.css('background-image', url);\n };\n var validateInput = function validateInput() {\n var firstName = _$firstNameInput.val().replace(/ /g, '');\n var lastName = _$lastNameInput.val().replace(/ /g, '');\n var email = _$emailInput.val().replace(/ /g, '');\n if (firstName !== '' && lastName !== '' && email !== '' && textSanitizer.isValidEmail(email)) {\n _$beginButton.removeAttr('disabled');\n viewHelper.trapFocus(_$quizSetupView);\n } else {\n _$beginButton.attr('disabled', 'disabled');\n }\n };\n var destroy = function destroy() {\n if (deviceInfo.isIPhoneOrIPod() || deviceInfo.isAndroid()) {\n _$window.off('resize', viewHelper.scrollActiveElementIntoView);\n _$firstNameInput.off('focus keydown', viewHelper.scrollIntoView);\n _$lastNameInput.off('focus keydown', viewHelper.scrollIntoView);\n _$emailInput.off('focus keydown', viewHelper.scrollIntoView);\n }\n _$quizSetupView.css('background-image', '');\n _$firstNameInput.off('keyup', validateInput);\n _$firstNameInput.off('change', validateInput);\n _$lastNameInput.off('keyup', validateInput);\n _$lastNameInput.off('change', validateInput);\n _$emailInput.off('keyup', validateInput);\n _$emailInput.off('change', validateInput);\n _$beginButton.off('click', beginQuiz);\n _$skipButton.off('click', skipQuiz);\n _$rootContainer.trigger(events.Modals.Closed);\n viewHelper.removeFocusTrap();\n };\n var hideSkipButton = function hideSkipButton() {\n _$skipButton.attr('disabled', 'disabled');\n _$skipButton.hide();\n viewHelper.trapFocus(_$quizSetupView);\n };\n var beginQuiz = function beginQuiz(event) {\n event.preventDefault();\n var eventData = {\n firstName: _$firstNameInput.val().replace(/ /g, ''),\n lastName: _$lastNameInput.val().replace(/ /g, ''),\n email: _$emailInput.val().replace(/ /g, '')\n };\n if (playerConfiguration.rememberUserInfo) {\n cacheSelfIdentity(eventData);\n }\n _$rootContainer.trigger(events.Quizzing.BeginClicked, eventData);\n };\n var skipQuiz = function skipQuiz(event) {\n event.preventDefault();\n _$rootContainer.trigger(events.Quizzing.SkipClicked, {});\n };\n var bindEvents = function bindEvents() {\n if (deviceInfo.isIPhoneOrIPod() || deviceInfo.isAndroid()) {\n _$window.on('resize', viewHelper.scrollActiveElementIntoView);\n _$firstNameInput.on('focus keydown', viewHelper.scrollIntoView);\n _$lastNameInput.on('focus keydown', viewHelper.scrollIntoView);\n _$emailInput.on('focus keydown', viewHelper.scrollIntoView);\n }\n _$firstNameInput.on('keyup', validateInput);\n _$firstNameInput.on('change', validateInput);\n _$lastNameInput.on('keyup', validateInput);\n _$lastNameInput.on('change', validateInput);\n _$emailInput.on('keyup', validateInput);\n _$emailInput.on('change', validateInput);\n _$beginButton.on('click', beginQuiz);\n _$skipButton.on('click', skipQuiz);\n _$rootContainer.append(_$quizSetupView);\n viewHelper.trapFocus(_$quizSetupView);\n if (viewHelper.elementOrChildHasFocus($rootContainer)) {\n _$firstNameInput.focus();\n }\n };\n createView();\n setupInitialValues();\n bindEvents();\n if (playerConfiguration.getPosterImageSrc()) {\n addPosterImageToBackground(playerConfiguration.getPosterImageSrc());\n }\n return Object.defineProperties({\n hideSkipButton: hideSkipButton,\n destroy: destroy\n }, {\n $view: {\n get: function get() {\n return _$quizSetupView;\n }\n }\n });\n};\nvar QuizSetupView$1 = {\n /**\n * Factory method that returns a new QuizSetupView object.\n * @function create\n * @memberof TSC.QuizSetupView\n * @param {JQuery} $rootContainer - Smart player container element.\n * @static\n * @return QuizSetupView instance\n */\n create: QuizSetupView\n};\n\nvar _superView$1 = BubbleView$1.create('.review-confirmation-container');\nvar _containerId$1 = '.controls-container';\nvar _continueControlId = '.continue-video-button';\nvar _reviewAnswersControlId = '.review-answers-button';\nvar reviewAnswersConfirmationView = {\n getViewMarkup: function getViewMarkup(numberCorrectText, percentCorrectText, numberInCorrectText, percentInCorrectText, continueText, reviewText) {\n return templateGenerator.generateQuestionSetReviewConfirmationMarkup(numberCorrectText, percentCorrectText, numberInCorrectText, percentInCorrectText, continueText, reviewText);\n },\n getContinueControlRef: function getContinueControlRef() {\n return _continueControlId;\n },\n getReviewControlRef: function getReviewControlRef() {\n return _reviewAnswersControlId;\n },\n hideView: function hideView() {\n _superView$1.hideView();\n },\n showView: function showView() {\n _superView$1.showView(true);\n var $reviewControl = $(_containerId$1).find(_reviewAnswersControlId);\n $reviewControl.focus();\n highlightDisabler.disableHighlights($reviewControl);\n },\n removeView: _superView$1.removeView,\n updateViewPosition: _superView$1.updateViewPosition,\n setBottomOffset: _superView$1.setBottomOffset,\n pointAt: _superView$1.pointAt\n};\n\nvar DEFAULT_RETRY_LIMIT = 2;\nvar DEFAULT_BACKOFF = 2000;\nvar DEFAULT_MAX_DELAY_BETWEEN_RETRIES = 20000;\nvar BackoffStrategy = function BackoffStrategy(retryLimit, backoffTime, maxDelay) {\n if (typeof retryLimit === 'undefined') {\n retryLimit = DEFAULT_RETRY_LIMIT;\n }\n if (typeof backoffTime === 'undefined') {\n backoffTime = DEFAULT_BACKOFF;\n }\n if (typeof maxDelay === 'undefined') {\n maxDelay = DEFAULT_MAX_DELAY_BETWEEN_RETRIES;\n }\n var create = function create() {\n var tries = 0;\n var backoff = function backoff() {\n tries++;\n if (tries > retryLimit) {\n return Promise$1.reject();\n }\n var delay = Math.min(backoffTime * tries, maxDelay);\n return new Promise$1(function (resolve) {\n window.setTimeout(resolve, delay);\n });\n };\n return {\n backoff: backoff\n };\n };\n return {\n create: create\n };\n};\nvar BackoffStrategyWithUnlimitedRetries = function BackoffStrategyWithUnlimitedRetries(backoffTime, maxDelay) {\n if (typeof backoffTime === 'undefined') {\n backoffTime = DEFAULT_BACKOFF;\n }\n if (typeof maxDelay === 'undefined') {\n maxDelay = DEFAULT_MAX_DELAY_BETWEEN_RETRIES;\n }\n var create = function create() {\n var tries = 0;\n var backoff = function backoff() {\n tries++;\n var delay = Math.min(backoffTime * tries, maxDelay);\n return new Promise$1(function (resolve) {\n window.setTimeout(resolve, delay);\n });\n };\n return {\n backoff: backoff\n };\n };\n return {\n create: create\n };\n};\nvar BackoffStrategyFactory = {\n create: BackoffStrategy,\n createWithUnlimitedRetries: BackoffStrategyWithUnlimitedRetries\n};\n\nvar statusCodes = Object.freeze({\n Unauthorized: 401,\n UnprocessableEntity: 422\n});\n\n$.support.cors = true;\nvar REQUEST_TIMEOUT = 10000;\nvar NO_RETRY_STATUS_CODES = [statusCodes.UnprocessableEntity];\nvar HttpService = function HttpService(retryStrategyFactory, logFailures) {\n retryStrategyFactory = retryStrategyFactory || BackoffStrategyFactory.create();\n if (typeof logFailures === 'undefined') {\n logFailures = true;\n }\n var _eventHandlers = {};\n var _pendingRequestPromises = {};\n var removePendingRequestPromise = function removePendingRequestPromise(requestPromise) {\n if (requestPromise.UUID) {\n delete _pendingRequestPromises[requestPromise.UUID];\n }\n };\n var addRequestToPendingList = function addRequestToPendingList(requestPromise) {\n var requestUUID = uuidGenerator$1.getUUID();\n requestPromise.UUID = requestUUID;\n _pendingRequestPromises[requestUUID] = requestPromise;\n };\n var get = function get(url) {\n var request = {\n url: url,\n type: 'GET',\n contentType: 'application/json',\n crossDomain: true,\n timeout: REQUEST_TIMEOUT\n };\n var requestPromise = $.ajax(request);\n addRequestToPendingList(requestPromise);\n return Promise$1.resolve(requestPromise).then(function (data) {\n removePendingRequestPromise(requestPromise);\n return data;\n })[\"catch\"](function (response) {\n removePendingRequestPromise(requestPromise);\n if (logFailures && response && response.statusText !== 'timeout') {\n var errorString = '';\n try {\n errorString = 'Error: ' + window.JSON.stringify(response, null, 2) + ' Url: ' + url;\n } catch (error) {\n errorString = '(response failed conversion into a JSON string.)';\n }\n log.logException(errorString);\n return Promise$1.reject(errorString);\n }\n });\n };\n var sendFormDataPost = function sendFormDataPost(url, data) {\n return sendRequest(url, $.param(data), 'application/x-www-form-urlencoded; charset=UTF-8', 'POST');\n };\n var canRetryFromStatusCode = function canRetryFromStatusCode(response) {\n if (!response) {\n return true;\n }\n for (var i = 0; i < NO_RETRY_STATUS_CODES.length; i++) {\n if (response.status === NO_RETRY_STATUS_CODES[i]) {\n return false;\n }\n }\n return true;\n };\n var sendRequest = function sendRequest(url, data, contentType, httpVerb) {\n var retryStrategy = retryStrategyFactory.create();\n var request = {\n url: url,\n type: httpVerb,\n data: data,\n contentType: contentType,\n crossDomain: true,\n timeout: REQUEST_TIMEOUT\n };\n var send = function send(retries) {\n return new Promise$1(function (resolve, reject) {\n var requestPromise = $.ajax(request);\n addRequestToPendingList(requestPromise);\n Promise$1.resolve(requestPromise).then(function (responseData) {\n removePendingRequestPromise(requestPromise);\n resolve(responseData);\n })[\"catch\"](function (response) {\n removePendingRequestPromise(requestPromise);\n if (logFailures && response && response.statusText !== 'timeout') {\n var errorString = '';\n try {\n errorString = 'Error: ' + window.JSON.stringify(response, null, 2) + ' Url: ' + url + ' Data: ' + window.JSON.stringify(data, null, 2);\n } catch (error) {\n errorString = '(response failed conversion into a JSON string.)';\n }\n log.logException(errorString);\n }\n if (canRetryFromStatusCode(response)) {\n retryStrategy.backoff().then(function () {\n retries++;\n if (_eventHandlers[events.Network.Retrying]) {\n _eventHandlers[events.Network.Retrying].forEach(function (eventCallback) {\n eventCallback(retries);\n });\n }\n send(retries).then(resolve)[\"catch\"](reject);\n })[\"catch\"](function (retryResponse) {\n log.logException('Call to ' + url + ' failed after ' + retries + ' retries.');\n reject(retryResponse);\n });\n } else {\n log.logException('Call ' + url + ' failed with no retry status of ' + response.status + '.');\n reject(response);\n }\n });\n });\n };\n return send(0);\n };\n var abortPendingRequests = function abortPendingRequests() {\n Object.keys(_pendingRequestPromises).forEach(function (requestPromise) {\n requestPromise && requestPromise.abort && requestPromise.abort();\n });\n _pendingRequestPromises = {};\n };\n var addEventListener = function addEventListener(eventName, eventCallback) {\n if (!_eventHandlers[eventName]) {\n _eventHandlers[eventName] = [];\n }\n _eventHandlers[eventName].push(eventCallback);\n };\n var removeEventListener = function removeEventListener(eventName, eventCallback) {\n if (!_eventHandlers[eventName]) {\n return;\n }\n for (var i = _eventHandlers[eventName].length - 1; i >= 0; i--) {\n if (_eventHandlers[eventName][i] === eventCallback) {\n _eventHandlers[eventName].splice(i, 1);\n break;\n }\n }\n if (_eventHandlers[eventName].length === 0) {\n delete _eventHandlers[eventName];\n }\n };\n return {\n get: get,\n sendFormDataPost: sendFormDataPost,\n abortPendingRequests: abortPendingRequests,\n addEventListener: addEventListener,\n removeEventListener: removeEventListener\n };\n};\nvar HttpService$1 = {\n create: HttpService\n};\n\nvar VERSION = 1;\nvar questionSetToXml = function questionSetToXml(questionSet, quizInstanceId) {\n var xmlStr = '';\n xmlStr += '';\n questionSet.questions.forEach(function (question) {\n xmlStr += '';\n xmlStr += '' + question.duration + '';\n xmlStr += '' + textSanitizer.htmlEncode(question.response) + '';\n if (question.type !== questionType.SHORT && question.correct !== undefined) {\n xmlStr += '' + (question.correct ? 'True' : 'False') + '';\n }\n xmlStr += '' + question.segmentWatched + '';\n xmlStr += '';\n });\n xmlStr += '';\n return xmlStr;\n};\nvar quizDefinitionToXml = function quizDefinitionToXml(quizDefinition) {\n var xmlStr = '';\n xmlStr += '';\n xmlStr += '' + textSanitizer.htmlEncode(quizDefinition.projectName) + '';\n xmlStr += '' + quizDefinition.productionName + '';\n xmlStr += '' + quizDefinition.originId + '';\n xmlStr += '' + quizDefinition.mediaDuration + '';\n xmlStr += '';\n quizDefinition.reportRecipients.forEach(function (recipient) {\n xmlStr += '' + recipient + '';\n });\n xmlStr += '';\n xmlStr += '';\n quizDefinition.questionSets.forEach(function (questionSet) {\n xmlStr += '';\n questionSet.questions.forEach(function (question) {\n xmlStr += '';\n xmlStr += '' + textSanitizer.htmlEncode(question.questionText, true) + '';\n if (question.type === questionType.CHOICE) {\n xmlStr += '';\n question.choices.forEach(function (choice) {\n xmlStr += '' + textSanitizer.htmlEncode(choice, true) + '';\n });\n xmlStr += '';\n xmlStr += '' + question.correctAnswer + '';\n } else if (question.type === questionType.FILL_IN) {\n xmlStr += '';\n question.choices.forEach(function (choice) {\n xmlStr += '' + textSanitizer.htmlEncode(choice, true) + '';\n });\n xmlStr += '';\n }\n xmlStr += '';\n });\n xmlStr += '';\n });\n xmlStr += '';\n xmlStr += '';\n return xmlStr;\n};\nvar quizDataXmlConverter = {\n questionSetToXml: questionSetToXml,\n quizDefinitionToXml: quizDefinitionToXml\n};\n\nvar httpService$1 = HttpService$1.create();\nvar getTechSmithAccessToken = function getTechSmithAccessToken(playerConfiguration) {\n var accessTokenEndpoint = playerConfiguration.getTechSmithAccessTokenEndpoint();\n if (accessTokenEndpoint) {\n return httpService$1.get(accessTokenEndpoint).then(function (data) {\n return data.AccessToken;\n });\n }\n return Promise$1.resolve();\n};\nvar abortPendingRequests$1 = function abortPendingRequests() {\n httpService$1.abortPendingRequests();\n};\nvar tokenService = {\n getTechSmithAccessToken: getTechSmithAccessToken,\n abortPendingRequests: abortPendingRequests$1\n};\n\nvar DEFAULT_PROGRESS_INTERVAL_TIME_MILLISECONDS = 10000;\nvar _definitionEndPoint = 'v/1/quiz/definition';\nvar _instanceEndPoint = 'v/1/quiz/instance?noop=1';\nvar _responseEndPoint = 'v/1/quiz/response?noop=1';\nvar _progressEndPoint = 'v/1/quiz/progress?noop=1';\nvar _baseURL = 'https://quiz.cloud.techsmith.com/';\nvar _quizCreateInstanceUrl = null;\nvar _quizInstanceDataPromiseResolve;\nvar _quizInstanceDataPromiseReject;\nvar _quizInstanceDataPromise = new Promise$1(function (resolve, reject) {\n _quizInstanceDataPromiseResolve = resolve;\n _quizInstanceDataPromiseReject = reject;\n});\nvar httpService = HttpService$1.create();\nvar httpServiceWithUnlimitedRetries = HttpService$1.create(BackoffStrategyFactory.createWithUnlimitedRetries());\nvar httpServiceWithNoLogging = HttpService$1.create(BackoffStrategyFactory.create(), false);\nvar getBaseURL = function getBaseURL() {\n if (playerConfiguration.getQuizServiceBaseUrl()) {\n return playerConfiguration.getQuizServiceBaseUrl();\n }\n return _baseURL;\n};\n\n//should only be used for the purposes of unit tests!\nvar reset = function reset() {\n abortPendingRequests();\n httpServiceWithUnlimitedRetries = HttpService$1.create(BackoffStrategyFactory.createWithUnlimitedRetries());\n httpService = HttpService$1.create();\n httpServiceWithNoLogging = HttpService$1.create(BackoffStrategyFactory.create(), false);\n _quizInstanceDataPromise = new Promise$1(function (resolve, reject) {\n _quizInstanceDataPromiseResolve = resolve;\n _quizInstanceDataPromiseReject = reject;\n });\n};\nvar submitQuizDefinition = function submitQuizDefinition(quizJsonData, hash, clientId) {\n if (!quizJsonData) {\n return Promise$1.resolve();\n }\n if (typeof quizJsonData === 'string') {\n quizJsonData = JSON.parse(quizJsonData);\n }\n var quizDefinitionXml = quizDataXmlConverter.quizDefinitionToXml(quizJsonData);\n var url = getBaseURL() + _definitionEndPoint + '?Quiz-Checksum=' + hash + '&Quiz-ClientId=' + clientId + '&noop=1';\n var data = {\n DefinitionText: quizDefinitionXml\n };\n return httpService.sendFormDataPost(url, data).then(function () {\n return quizDefinitionXml;\n });\n};\nvar getInstanceFormData = function getInstanceFormData(quizModel, firstName, lastName, email, playerConfig) {\n var data = {\n QuizId: quizModel.quizID,\n CheckForQuizDefinition: playerConfig.getFathomId() === undefined\n };\n if (playerConfig.getTechSmithAccessTokenEndpoint()) {\n return tokenService.getTechSmithAccessToken(playerConfig).then(function (token) {\n data.AccessToken = token;\n return data;\n });\n }\n data.FirstName = !firstName ? '' : firstName;\n data.LastName = !lastName ? '' : lastName;\n data.Email = !email ? '' : email;\n return Promise$1.resolve(data);\n};\nvar startQuizInstance = function startQuizInstance(quizModel, firstName, lastName, email, playerConfig) {\n var url = _quizCreateInstanceUrl || getBaseURL() + _instanceEndPoint;\n getInstanceFormData(quizModel, firstName, lastName, email, playerConfig).then(function (data) {\n httpService.sendFormDataPost(url, data).then(function (response) {\n if (response.DefinitionRequired) {\n return submitQuizDefinition(quizModel.quizDefinition, quizModel.quizHash, quizModel.clientId).then(function () {\n return response;\n });\n }\n return response;\n }).then(function (response) {\n _quizInstanceDataPromiseResolve({\n analyticsSampleRate: response.SampleRate,\n reportingRate: response.ReportingRate || DEFAULT_PROGRESS_INTERVAL_TIME_MILLISECONDS,\n quizInstanceId: response.Id\n });\n })[\"catch\"](_quizInstanceDataPromiseReject);\n });\n return _quizInstanceDataPromise;\n};\nvar sendProgress = function sendProgress(sampleRateInMilliseconds, completedSamples) {\n if (completedSamples && completedSamples.length > 0) {\n return _quizInstanceDataPromise.then(function (quizInstanceData) {\n var url = getBaseURL() + _progressEndPoint;\n var data = {\n InstanceId: quizInstanceData.quizInstanceId,\n Interval: sampleRateInMilliseconds,\n ViewedSegments: completedSamples\n };\n return httpServiceWithNoLogging.sendFormDataPost(url, data, 0);\n });\n }\n};\nvar setQuizCreateInstanceUrl$1 = function setQuizCreateInstanceUrl(quizCreateInstanceUrl) {\n _quizCreateInstanceUrl = quizCreateInstanceUrl;\n};\nvar getQuizCreateInstanceUrl$1 = function getQuizCreateInstanceUrl() {\n return _quizCreateInstanceUrl;\n};\nvar submitQuestionSet = function submitQuestionSet(questionSetData) {\n return _quizInstanceDataPromise.then(function (quizInstanceData) {\n if (!quizInstanceData.quizInstanceId) {\n return Promise$1.reject('No quiz instance ID found');\n }\n if (typeof questionSetData === 'string') {\n questionSetData = JSON.parse(questionSetData);\n }\n var questionSetXml = quizDataXmlConverter.questionSetToXml(questionSetData, quizInstanceData.quizInstanceId);\n var url = getBaseURL() + _responseEndPoint;\n var data = {\n ResponseText: questionSetXml\n };\n return httpServiceWithUnlimitedRetries.sendFormDataPost(url, data).then(function (response) {\n return response.results;\n });\n });\n};\nvar getAnalyticsRate = function getAnalyticsRate() {\n return _quizInstanceDataPromise.then(function (response) {\n return {\n analyticsSampleRate: response.analyticsSampleRate,\n reportingRate: response.reportingRate\n };\n });\n};\nvar abortPendingRequests = function abortPendingRequests() {\n httpService.abortPendingRequests();\n httpServiceWithUnlimitedRetries.abortPendingRequests();\n httpServiceWithNoLogging.abortPendingRequests();\n tokenService.abortPendingRequests();\n};\nvar addEventListener$2 = function addEventListener(eventName, eventCallback) {\n httpService.addEventListener(eventName, eventCallback);\n httpServiceWithUnlimitedRetries.addEventListener(eventName, eventCallback);\n httpServiceWithNoLogging.addEventListener(eventName, eventCallback);\n};\nvar removeEventListener$2 = function removeEventListener(eventName, eventCallback) {\n httpService.removeEventListener(eventName, eventCallback);\n httpServiceWithUnlimitedRetries.removeEventListener(eventName, eventCallback);\n httpServiceWithNoLogging.removeEventListener(eventName, eventCallback);\n};\nvar quizService = {\n setQuizCreateInstanceUrl: setQuizCreateInstanceUrl$1,\n getQuizCreateInstanceUrl: getQuizCreateInstanceUrl$1,\n startQuizInstance: startQuizInstance,\n submitQuestionSet: submitQuestionSet,\n sendProgress: sendProgress,\n getAnalyticsRate: getAnalyticsRate,\n reset: reset,\n abortPendingRequests: abortPendingRequests,\n addEventListener: addEventListener$2,\n removeEventListener: removeEventListener$2\n};\n\n/**\n * @memberof TSC\n * @class QuizProgressTracker\n * @classdesc Quiz progress tracker manages quiz progress and processing played segments\n * @param {HTMLVideoElement} videoToTrack - The video element to monitor for progress.\n * @param {int} sampleRateInMilliseconds\n * @param {int} reportingRateInMilliseconds\n *\n */\nvar QuizProgressTracker = function QuizProgressTracker(videoToTrack, sampleRateInMilliseconds, reportingRateInMilliseconds) {\n var _didAttachToEndedEvent = false;\n var _didAttachToPlayEvent = false;\n var _intervalId;\n var _playCallbackFunction;\n var _mergeToleranceInMilliseconds = 500;\n var _videoEndToleranceInMilliseconds = 1000;\n var processPlayedSegments = function processPlayedSegments(played) {\n var numberPlayedSegments = played.length;\n if (numberPlayedSegments < 1) {\n return [];\n }\n var mergedPlayedInMilliseconds = [{\n start: played.start(0) * 1000,\n end: played.end(0) * 1000\n }];\n var mergedPlayedIndex = 0;\n var i;\n for (i = 1; i < numberPlayedSegments; i++) {\n if (mergedPlayedInMilliseconds[mergedPlayedIndex].end >= played.start(i) * 1000 - _mergeToleranceInMilliseconds) {\n mergedPlayedInMilliseconds[mergedPlayedIndex].end = played.end(i) * 1000;\n } else {\n mergedPlayedInMilliseconds.push({\n start: played.start(i) * 1000,\n end: played.end(i) * 1000\n });\n mergedPlayedIndex++;\n }\n }\n return mergedPlayedInMilliseconds;\n };\n var computePercentageViewed = function computePercentageViewed(video) {\n var completedSamples = [];\n var i;\n var j;\n var videoStartMilliseconds;\n var videoEndMilliseconds;\n var isEndOfVideo;\n var firstSample;\n var lastSample;\n var entireVideoWasWatched;\n var mergedPlayedInMilliseconds;\n var videoDurationInMilliseconds = video.duration * 1000;\n mergedPlayedInMilliseconds = processPlayedSegments(video.played);\n for (i = 0; i < mergedPlayedInMilliseconds.length; i++) {\n videoStartMilliseconds = mergedPlayedInMilliseconds[i].start;\n videoEndMilliseconds = mergedPlayedInMilliseconds[i].end;\n isEndOfVideo = videoDurationInMilliseconds - video.currentTime * 1000 < _videoEndToleranceInMilliseconds;\n if (!isEndOfVideo && videoEndMilliseconds - videoStartMilliseconds < sampleRateInMilliseconds) {\n continue;\n }\n firstSample = Math.floor(videoStartMilliseconds / sampleRateInMilliseconds);\n if (videoStartMilliseconds % sampleRateInMilliseconds !== 0) {\n firstSample += 1;\n }\n lastSample = Math.floor(videoEndMilliseconds / sampleRateInMilliseconds);\n if (!isEndOfVideo) {\n lastSample -= 1;\n }\n if (lastSample < firstSample) {\n continue;\n }\n for (j = firstSample; j <= lastSample; j++) {\n completedSamples.push(j);\n }\n }\n quizService.sendProgress(sampleRateInMilliseconds, completedSamples);\n entireVideoWasWatched = completedSamples.length === Math.ceil(videoDurationInMilliseconds / sampleRateInMilliseconds);\n if (entireVideoWasWatched) {\n stopInterval();\n video.removeEventListener('play', _playCallbackFunction, false);\n }\n };\n var attachToEndedEvent = function attachToEndedEvent(video) {\n var endedCallbackFunction = function endedCallbackFunction() {\n sendProgress(video);\n stopInterval();\n };\n video.addEventListener('ended', endedCallbackFunction, false);\n _didAttachToEndedEvent = true;\n };\n var attachToPlayEvent = function attachToPlayEvent(video) {\n _playCallbackFunction = function _playCallbackFunction() {\n if (_intervalId !== -1) {\n return;\n }\n setupProgressInterval(video);\n };\n video.addEventListener('play', _playCallbackFunction, false);\n _didAttachToPlayEvent = true;\n };\n var sendProgress = function sendProgress(video) {\n if (!video || video.duration === 0) {\n return;\n }\n if (!_didAttachToEndedEvent) {\n attachToEndedEvent(video);\n }\n if (!_didAttachToPlayEvent) {\n attachToPlayEvent(video);\n }\n computePercentageViewed(video);\n };\n var stopInterval = function stopInterval() {\n if (_intervalId !== -1) {\n window.clearInterval(_intervalId);\n _intervalId = -1;\n }\n };\n var destroy = function destroy() {\n stopInterval();\n };\n var setupProgressInterval = function setupProgressInterval(video) {\n var intervalFunction = function intervalFunction() {\n sendProgress(video);\n if (video.paused) {\n window.clearInterval(_intervalId);\n _intervalId = -1;\n }\n };\n _intervalId = window.setInterval(intervalFunction, reportingRateInMilliseconds);\n };\n stopInterval();\n setupProgressInterval(videoToTrack);\n return Object.defineProperties({\n destroy: destroy\n }, {});\n};\nvar QuizProgressTracker$1 = {\n /**\n * Factory method that returns a new QuizProgressTracker.\n * @function create\n * @memberof TSC.QuizProgressTracker\n * @static\n * @param {HTMLVideoElement} videoToTrack - The video element to monitor for progress.\n * @param {int} sampleRateInMilliseconds\n * @param {int} reportingRateInMilliseconds\n * @return new QuizProgressTracker instance\n */\n create: QuizProgressTracker\n};\n\nvar questionGrader = Object.freeze({\n FATHOM: 'FATHOM',\n XMP: 'XMP'\n});\n\n/**\n * @memberof TSC\n * @class fathomGrader\n * @classdesc Grader for fathom quiz service\n */\n\nvar processQuestionResults = function processQuestionResults(question, results) {\n var questionApiId = question.id;\n var questionResult = results[questionApiId];\n if (questionResult !== undefined) {\n question.isResponseCorrect = questionResult.isCorrect;\n question.correctAnswer = questionResult.correctAnswer;\n question.isGraded = questionResult.isGraded;\n }\n};\nvar processQuestionSetResults = function processQuestionSetResults(questionSet, results) {\n questionSet.questions.forEach(function (question) {\n processQuestionResults(question, results);\n });\n questionSet.cacheQuestionDetails();\n};\nvar fathomGrader = Object.defineProperties({\n processQuestionSetResults: processQuestionSetResults\n}, {\n doesLocalGrading: {\n value: false\n }\n});\n\n/**\n * @memberof TSC\n * @class xmpGrader\n * @classdesc Xmp Grader question sets\n */\nvar gradeChoiceQuestion = function gradeChoiceQuestion(question, response) {\n var correctAnswer = question.correctAnswer;\n var isCorrect;\n var responseNumber = parseInt(response, 10);\n if (isNaN(responseNumber)) {\n isCorrect = false;\n } else {\n /*eslint no-bitwise: \"off\"*/\n isCorrect = 1 << responseNumber === correctAnswer;\n }\n question.isResponseCorrect = isCorrect;\n question.isGraded = correctAnswer !== undefined && correctAnswer > 0;\n};\nvar gradeFillInTheBlankQuestion = function gradeFillInTheBlankQuestion(question, response) {\n var responseLowerCase = response !== undefined ? response.toLowerCase() : '';\n var possibleAnswers = question.answers;\n var numberPossibleAnswers = possibleAnswers ? possibleAnswers.length : 0;\n question.isGraded = numberPossibleAnswers > 0;\n if (question.isGraded) {\n question.isResponseCorrect = false;\n for (var i = 0; i < numberPossibleAnswers; i++) {\n if (responseLowerCase === possibleAnswers[i].text.toLowerCase()) {\n question.isResponseCorrect = true;\n break;\n }\n }\n }\n};\nvar gradeQuestion = function gradeQuestion(question) {\n if (question.type === questionType.CHOICE) {\n gradeChoiceQuestion(question, question.userResponse);\n } else if (question.type === questionType.FILL_IN) {\n gradeFillInTheBlankQuestion(question, question.userResponse);\n }\n};\nvar gradeQuestionSet = function gradeQuestionSet(questionSet) {\n questionSet.questions.forEach(function (question) {\n if (question.responseLocked) {\n gradeQuestion(question);\n }\n });\n};\nvar xmpGrader = Object.defineProperties({\n gradeQuestionSet: gradeQuestionSet\n}, {\n doesLocalGrading: {\n value: true\n }\n});\n\nvar _containerId = '.question-set-container';\nvar _superView = BubbleView$1.create(_containerId);\nvar _showAnswersId = '.view-answers-button';\nvar _hideAnswersId = '.hide-answers-button';\nvar _gradeableDetails;\nvar _unGradeableDetails;\nvar _readingSelector = '.question-set-results';\nvar questionSetReviewStatusView = {\n setGradeableDetails: function setGradeableDetails(text) {\n _gradeableDetails = text;\n },\n setUngradeableDetails: function setUngradeableDetails(text) {\n _unGradeableDetails = text;\n },\n getViewMarkup: function getViewMarkup() {\n return templateGenerator.generateQuestionSetReviewStatusMarkup(_gradeableDetails, _unGradeableDetails) + _superView.getOverlayMarkup();\n },\n getHideAnswersControlRef: function getHideAnswersControlRef() {\n return _hideAnswersId;\n },\n getShowAnswersControlRef: function getShowAnswersControlRef() {\n return _showAnswersId;\n },\n showView: function showView() {\n var $container = $(_containerId);\n $container.removeClass('minimized');\n _superView.showView();\n var $readableElement = $container.find(_readingSelector);\n $readableElement.focus();\n highlightDisabler.disableHighlights($readableElement);\n },\n hideView: function hideView() {\n $(_containerId).addClass('minimized');\n _superView.hideView();\n },\n removeView: _superView.removeView,\n updateViewPosition: _superView.updateViewPosition,\n setBottomOffset: _superView.setBottomOffset,\n pointAt: _superView.pointAt\n};\n\nvar scormConstants = Object.freeze({\n fn: {\n initialize: 'initialize',\n terminate: 'terminate',\n getValue: 'getValue',\n setValue: 'setValue',\n commit: 'commit'\n },\n dataModelID: {\n cmiExit: 'cmiExit',\n cmiLocation: 'cmiLocation',\n cmiSuspendData: 'cmiSuspendData',\n cmiProgressMeasure: 'cmiProgressMeasure',\n cmiScaledPassingScore: 'cmiScaledPassingScore',\n cmiScoreMin: 'cmiScoreMin',\n cmiScoreMax: 'cmiScoreMax',\n cmiScoreRaw: 'cmiScoreRaw',\n cmiScoreScaled: 'cmiScoreScaled',\n cmiSuccessStatus: 'cmiSuccessStatus',\n cmiCompletionStatus: 'cmiCompletionStatus',\n cmiSessionTime: 'cmiSessionTime',\n adlNavRequest: 'adlNavRequest'\n },\n scorm1Dot2DataModel: {\n cmiExit: 'cmi.core.exit',\n cmiLocation: 'cmi.core.lesson_location',\n cmiSuspendData: 'cmi.suspend_data',\n cmiProgressMeasure: null,\n cmiScaledPassingScore: 'cmi.student_data.mastery_score',\n cmiScoreMin: 'cmi.core.score.min',\n cmiScoreMax: 'cmi.core.score.max',\n cmiScoreRaw: 'cmi.core.score.raw',\n cmiScoreScaled: null,\n cmiSuccessStatus: null,\n cmiCompletionStatus: 'cmi.core.lesson_status',\n cmiSessionTime: 'cmi.core.session_time',\n adlNavRequest: null\n },\n scorm2004DataModel: {\n cmiExit: 'cmi.exit',\n cmiLocation: 'cmi.location',\n cmiSuspendData: 'cmi.suspend_data',\n cmiProgressMeasure: 'cmi.progress_measure',\n cmiScaledPassingScore: 'cmi.scaled_passing_score',\n cmiScoreMin: 'cmi.score.min',\n cmiScoreMax: 'cmi.score.max',\n cmiScoreRaw: 'cmi.score.raw',\n cmiScoreScaled: 'cmi.score.scaled',\n cmiSuccessStatus: 'cmi.success_status',\n cmiCompletionStatus: 'cmi.completion_status',\n cmiSessionTime: 'cmi.session_time',\n adlNavRequest: 'adl.nav.request'\n },\n status: {\n completed: 'completed',\n incomplete: 'incomplete',\n notAttempted: 'not attempted',\n unknown: 'unknown',\n passed: 'passed',\n failed: 'failed',\n browsed: 'browsed'\n },\n exitStates: {\n suspend: 'suspend',\n logout: 'logout',\n complete: ''\n },\n navRequestStates: {\n exitAll: 'exitAll',\n suspendAll: 'suspendAll'\n },\n versions: {\n NOT_DETECTED: -1,\n SCORM_1_2: 0,\n SCORM_2004: 1\n },\n assessment: {\n minScore: 0,\n maxScore: 100,\n scoreNormalizationDivider: 100\n }\n});\n\nvar V1_SUSPENDED_DATA_KEY = 'tscsp1';\nvar V2_SUSPENDED_DATA_KEY = 'tscsp2';\n\n/**\n * @memberof TSC\n * @class ScormDataModel\n * @classdesc Data modal for smart player suspended scorm data\n */\nvar ScormDataModel = function ScormDataModel() {\n var _percentageComplete = 0;\n var _quizPercentageCorrect = 0;\n var _quizCompletionStatus = scormConstants.status.unknown;\n var _quizModelSnapshot = '';\n var _videoAnalyticsSnapshot = '';\n var _videoTimeInSecondsSnapshot = 0;\n var _videoTimeInSeconds = 0;\n var _completionStatus = scormConstants.status.notAttempted;\n var _passingStatus = scormConstants.status.unknown;\n\n /**\n * @methodOf TSC.ScormDataModel\n * @method parseSuspendedDataString\n * @param {String} suspendedDataString - string containing suspended scorm data\n */\n var parseSuspendedDataString = function parseSuspendedDataString(suspendedDataString) {\n if (!suspendedDataString) {\n return;\n }\n try {\n var suspendedData = window.JSON.parse(suspendedDataString);\n if (suspendedData[V1_SUSPENDED_DATA_KEY]) {\n _percentageComplete = parseFloat(suspendedData[V1_SUSPENDED_DATA_KEY].pc);\n _videoAnalyticsSnapshot = suspendedData[V1_SUSPENDED_DATA_KEY].vas;\n _videoTimeInSecondsSnapshot = parseFloat(suspendedData[V1_SUSPENDED_DATA_KEY].cvt);\n } else if (suspendedData[V2_SUSPENDED_DATA_KEY]) {\n _percentageComplete = parseFloat(suspendedData[V2_SUSPENDED_DATA_KEY].pc);\n _videoAnalyticsSnapshot = suspendedData[V2_SUSPENDED_DATA_KEY].vas;\n _videoTimeInSecondsSnapshot = parseFloat(suspendedData[V2_SUSPENDED_DATA_KEY].cvt);\n _quizModelSnapshot = suspendedData[V2_SUSPENDED_DATA_KEY].qs;\n }\n } catch (e) {} // eslint-disable-line\n };\n\n /**\n * @methodOf TSC.ScormDataModel\n * @method getSuspendedDataString\n * Return string of suspended data\n * @returns {String} string containing suspended scorm data\n */\n var getSuspendedDataString = function getSuspendedDataString() {\n var suspendedData = {};\n suspendedData[V2_SUSPENDED_DATA_KEY] = {\n pc: _percentageComplete,\n vas: _videoAnalyticsSnapshot,\n cvt: _videoTimeInSeconds,\n qs: _quizModelSnapshot\n };\n return window.JSON.stringify(suspendedData);\n };\n return Object.defineProperties({\n parseSuspendedDataString: parseSuspendedDataString,\n getSuspendedDataString: getSuspendedDataString\n }, {\n percentageComplete: {\n get: function get() {\n return _percentageComplete;\n },\n set: function set(percentageComplete) {\n _percentageComplete = percentageComplete;\n }\n },\n quizPercentageCorrect: {\n get: function get() {\n return _quizPercentageCorrect;\n },\n set: function set(quizPercentageCorrect) {\n _quizPercentageCorrect = quizPercentageCorrect;\n }\n },\n quizPercentageCorrectAsString: {\n get: function get() {\n return _quizPercentageCorrect.toString();\n }\n },\n quizCompletionStatus: {\n get: function get() {\n return _quizCompletionStatus;\n },\n set: function set(quizCompletionStatus) {\n _quizCompletionStatus = quizCompletionStatus;\n }\n },\n quizModelSnapshot: {\n get: function get() {\n return _quizModelSnapshot;\n },\n set: function set(quizModelSnapshot) {\n _quizModelSnapshot = quizModelSnapshot;\n }\n },\n videoAnalyticsSnapshot: {\n get: function get() {\n return _videoAnalyticsSnapshot;\n },\n set: function set(snapshot) {\n _videoAnalyticsSnapshot = snapshot;\n }\n },\n videoTimeInSecondsSnapshot: {\n get: function get() {\n return _videoTimeInSecondsSnapshot;\n }\n },\n videoTimeInSeconds: {\n get: function get() {\n return _videoTimeInSeconds;\n },\n set: function set(timeInSeconds) {\n _videoTimeInSeconds = timeInSeconds;\n }\n },\n completionStatus: {\n get: function get() {\n return _completionStatus;\n },\n set: function set(completionStatus) {\n _completionStatus = completionStatus;\n }\n },\n passingStatus: {\n get: function get() {\n return _passingStatus;\n },\n set: function set(passingStatus) {\n _passingStatus = passingStatus;\n }\n }\n });\n};\nvar ScormDataModel$1 = {\n create: ScormDataModel\n};\n\nvar DEFAULT_TITLE_TEXT = '';\nvar MAX_PARENTS_TO_SEARCH = 500;\nvar SCORM_MANIFEST_FILE_NAME = 'imsmanifest.xml';\nvar CAMTASIA_SCORM_1_2_MANIFEST_STRING = 'ADL SCORM 1.2';\n\n/**\n * @memberof TSC\n * @class ScormApiWrapper\n * @classdesc Wrapper around Scorm API that handles Scorm 1.2 and 2004\n */\nvar ScormApiWrapper = function ScormApiWrapper() {\n var scormApi = null;\n var noAPIFound = false;\n var apiVersion = scormConstants.versions.NOT_DETECTED;\n var scormManifestDocString = null;\n\n /**\n * Get last error message\n * @function getLastError\n * @return {String} - An error string that contains error number, string and diagnostic information.\n */\n var getLastError = function getLastError() {\n var errorNumber;\n var errorString;\n var diagnostic;\n if (!scormApi) {\n return 'SCORM API not found';\n }\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\n errorNumber = scormApi.GetLastError();\n errorString = scormApi.GetErrorString(errorNumber);\n diagnostic = scormApi.GetDiagnostic(errorNumber);\n } else {\n errorNumber = scormApi.LMSGetLastError();\n errorString = scormApi.LMSGetErrorString(errorNumber);\n diagnostic = scormApi.LMSGetDiagnostic(errorNumber);\n }\n return 'Number: ' + errorNumber + '\\nDescription: ' + errorString + '\\nDiagnostic: ' + diagnostic;\n };\n\n /**\n * This function is used to communicate with the API, if it is found.\n * @memberof TSC.ScormApiWrapper\n * @function apiCall\n * @param {string} scormFunctionName - Name of the api function to call\n * @param {string} [dataModalID] - Name of the data model id defined in scorm constants object.\n * @param [dmeValue] - Value to write to data model\n * @return {string} - Value returned from the api call.\n */\n var apiCall = function apiCall(scormFunctionName, dataModalID, dmeValue) {\n var dataModel;\n var result;\n if (scormApi) {\n switch (scormFunctionName) {\n case scormConstants.fn.initialize:\n var initializedResult;\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\n initializedResult = scormApi.Initialize('');\n } else {\n initializedResult = scormApi.LMSInitialize('');\n }\n if (initializedResult === 'true') {\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\n result = scormApi.GetValue(scormConstants.scorm2004DataModel.cmiCompletionStatus);\n } else {\n result = scormApi.LMSGetValue(scormConstants.scorm1Dot2DataModel.cmiCompletionStatus);\n }\n }\n break;\n case scormConstants.fn.terminate:\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\n result = scormApi.Terminate('');\n } else {\n result = scormApi.LMSFinish('');\n }\n break;\n case scormConstants.fn.getValue:\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\n dataModel = scormConstants.scorm2004DataModel[dataModalID];\n if (dataModel) {\n result = scormApi.GetValue(dataModel);\n }\n } else {\n dataModel = scormConstants.scorm1Dot2DataModel[dataModalID];\n if (dataModel) {\n result = scormApi.LMSGetValue(dataModel);\n }\n }\n break;\n case scormConstants.fn.setValue:\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\n dataModel = scormConstants.scorm2004DataModel[dataModalID];\n if (dataModel) {\n result = scormApi.SetValue(dataModel, dmeValue);\n }\n } else {\n // In 1.2, lesson_status hold both complete/incomplete and pass/fail.\n // So if we've already used it for pass/fail, we don't want to\n // overwrite with 'completed'\n dataModel = scormConstants.scorm1Dot2DataModel[dataModalID];\n var canSetValue = !!dataModel;\n if (dataModalID === scormConstants.dataModelID.cmiCompletionStatus) {\n var lessonStatus = scormApi.LMSGetValue(scormConstants.scorm1Dot2DataModel.cmiCompletionStatus);\n if (dmeValue !== scormConstants.status.passed && dmeValue !== scormConstants.status.failed) {\n canSetValue = lessonStatus !== scormConstants.status.failed && lessonStatus !== scormConstants.status.passed;\n }\n }\n if (canSetValue) {\n result = scormApi.LMSSetValue(dataModel, dmeValue);\n }\n }\n break;\n case scormConstants.fn.commit:\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\n result = scormApi.Commit('');\n } else {\n result = scormApi.LMSCommit('');\n }\n break;\n }\n if (playerConfiguration.logScormApiCalls) {\n console.info('SCORM apiCall - ', scormFunctionName, dataModalID, dmeValue, ' returned ', result); // eslint-disable-line\n }\n return result;\n }\n };\n var loadScormManifest = function loadScormManifest() {\n return $.ajax({\n type: 'GET',\n url: SCORM_MANIFEST_FILE_NAME,\n dataType: 'text'\n });\n };\n var getScormManifestDoc = function getScormManifestDoc() {\n if (scormManifestDocString === null) {\n return new Promise$1(function (resolve, reject) {\n loadScormManifest().done(function (data) {\n scormManifestDocString = data;\n resolve(scormManifestDocString);\n }).fail(function () {\n reject();\n });\n });\n }\n return Promise$1.resolve(scormManifestDocString);\n };\n var getScormVersionFromManifestDoc = function getScormVersionFromManifestDoc() {\n return getScormManifestDoc().then(function (manifestDocAsString) {\n // manifest doc will contain a specific string only with SCORM version 1.2 produced with Camtasia\n if (manifestDocAsString.indexOf(CAMTASIA_SCORM_1_2_MANIFEST_STRING) !== -1) {\n return scormConstants.versions.SCORM_1_2;\n }\n return scormConstants.versions.SCORM_2004;\n });\n };\n var getScormApiOnWindow = function getScormApiOnWindow(windowRef) {\n // scorm 1.2 and 2004 api are defined on window\n if (windowRef.API && windowRef.API_1484_11) {\n return getScormVersionFromManifestDoc().then(function (scormApiVersion) {\n apiVersion = scormApiVersion;\n if (scormApiVersion === scormConstants.versions.SCORM_1_2) {\n return windowRef.API;\n }\n return windowRef.API_1484_11;\n });\n // look for scorm 1.2 api\n } else if (windowRef.API) {\n apiVersion = scormConstants.versions.SCORM_1_2;\n return Promise$1.resolve(windowRef.API);\n // look for scorm 2004 api\n } else if (windowRef.API_1484_11) {\n apiVersion = scormConstants.versions.SCORM_2004;\n return Promise$1.resolve(windowRef.API_1484_11);\n }\n return Promise$1.reject();\n };\n\n /**\n * Searches all the parents of a given window until it finds an object named \"API_1484_11\" or \"API\".\n * If an object of that name is found, a reference to it is returned. Otherwise, this function returns null.\n * @function findAPI\n * @param {window} win - Window object\n * @return {object} - If the API object is found, it's returned, otherwise null is returned\n */\n var findAPI = function findAPI(win) {\n var findAPITries = 0;\n\n // Search each parent window until we find the API, encounter a window with no parent / the\n // same as the current window, or have reached our MAX_PARENTS_TO_SEARCH to search threshold\n while (!win.API && !win.API_1484_11 && win.parent !== win && findAPITries <= MAX_PARENTS_TO_SEARCH) {\n findAPITries++;\n win = win.parent;\n }\n return getScormApiOnWindow(win);\n };\n var lookForApiOnParentWindow = function lookForApiOnParentWindow() {\n try {\n if (window.parent !== window) {\n return findAPI(window.parent);\n }\n return Promise$1.reject();\n } catch (e) {\n return Promise$1.reject(e);\n }\n };\n var lookForApiOnWindowTopOpener = function lookForApiOnWindowTopOpener() {\n if (window.top.opener !== null) {\n return findAPI(window.top.opener);\n }\n return Promise$1.reject();\n };\n\n /**\n * This function looks for an object named API, first in the current window's\n * frame hierarchy and then, if necessary, in the current window's opener window\n * hierarchy (if there is an opener window).\n * @function getAPI\n * @return {Promise} - A Promise that will resolve with API object if found or promise is rejected.\n */\n var getAPI = function getAPI() {\n return lookForApiOnParentWindow()[\"catch\"](lookForApiOnWindowTopOpener);\n };\n\n /**\n * Returns the handle to API object if it was previously set, otherwise it returns null\n * @function getAPIHandle\n * @return {Promise} - A Promise that will resolve with the available SCORM api.\n */\n var getAPIHandle = function getAPIHandle() {\n if (noAPIFound) {\n return Promise$1.reject();\n }\n if (!scormApi) {\n return getAPI();\n }\n return Promise$1.resolve(scormApi);\n };\n var getTitleFromManifestDoc = function getTitleFromManifestDoc() {\n try {\n var manifestXml = $.parseXML(scormManifestDocString);\n var $manifestXml = $(manifestXml);\n var $item = $manifestXml.find('item');\n var $title = $item.find('title');\n return $title.text();\n } catch (e) {\n return DEFAULT_TITLE_TEXT;\n }\n };\n\n /**\n * Get title for SCORM module\n * @function getTitle\n * @return {Promise} - A Promise that will resolve with the title found in the SCORM manifest file or empty string.\n */\n var getTitle = function getTitle() {\n if (!scormManifestDocString) {\n return getScormManifestDoc().then(getTitleFromManifestDoc)[\"catch\"](function () {\n return DEFAULT_TITLE_TEXT;\n });\n }\n return Promise$1.resolve(getTitleFromManifestDoc());\n };\n\n /**\n * Initialize SCORM module\n * @function init\n * @return {Promise} - A Promise that will resolve with the state of initialize.\n */\n var init = function init() {\n return getAPIHandle().then(function (api) {\n scormApi = api;\n if (playerConfiguration.logScormApiCalls) {\n console.info('SCORM initialized with version: ', apiVersion); // eslint-disable-line\n }\n return apiCall(scormConstants.fn.initialize);\n })[\"catch\"](function () {\n noAPIFound = true;\n return 'false';\n });\n };\n return Object.defineProperties({\n init: init,\n apiCall: apiCall,\n getTitle: getTitle,\n getLastError: getLastError\n }, {\n apiVersion: {\n get: function get() {\n return apiVersion;\n }\n }\n });\n};\n\n/**\n * Factory method that returns a new Scorm Api Wrapper object.\n * @function create\n * @memberof TSC.ScormApiWrapper\n * @static\n * @return new ScormApiWrapper instance\n */\nvar ScormApiWrapper$1 = {\n create: ScormApiWrapper\n};\n\nvar ScormNavigationBarView = function ScormNavigationBarView($container) {\n var _$scormNavigationBarContainer = $container.find('.scorm-module-navigation-container');\n var _$scormHeaderElement = null;\n var _$scormCompleteSessionButton = null;\n var _scoObjectiveHasBeenCompleted = false;\n var onCompleteSessionHandler = function onCompleteSessionHandler(e) {\n e.preventDefault();\n $container.trigger(events.SCORM.ExitSession);\n };\n var getButtonLabel = function getButtonLabel() {\n if (_scoObjectiveHasBeenCompleted) {\n return playerConfiguration.completeScormOnRequirementsComplete ? localizationStrings.getPlayerString(playerStringNames.scormExitVideo) : localizationStrings.getPlayerString(playerStringNames.scormCompleteVideo);\n }\n return localizationStrings.getPlayerString(playerStringNames.scormCompleteVideoLater);\n };\n var createView = function createView() {\n var buttonLabel = getButtonLabel();\n var isPrimaryButton = _scoObjectiveHasBeenCompleted;\n var scormNavigationBarMarkup = templateGenerator.generateScormNavigationBarMarkup(buttonLabel, isPrimaryButton);\n _$scormNavigationBarContainer.html(scormNavigationBarMarkup);\n _$scormHeaderElement = _$scormNavigationBarContainer.find('.scorm-module-title');\n _$scormCompleteSessionButton = _$scormNavigationBarContainer.find('.complete-scorm-session-button');\n };\n var disableControls = function disableControls() {\n _$scormCompleteSessionButton && _$scormCompleteSessionButton.attr('tabindex', tabIndex.Disabled);\n };\n var enableControls = function enableControls() {\n _$scormCompleteSessionButton && _$scormCompleteSessionButton.attr('tabindex', tabIndex.DomOrder);\n };\n var setupEvents = function setupEvents() {\n $container.on(events.Modals.Open, disableControls);\n $container.on(events.Modals.Closed, enableControls);\n _$scormCompleteSessionButton.on('click', onCompleteSessionHandler);\n };\n var setTitle = function setTitle(scormTitle) {\n if (_$scormHeaderElement) {\n _$scormHeaderElement.html(scormTitle);\n }\n };\n var destroy = function destroy() {\n if (_$scormCompleteSessionButton) {\n _$scormCompleteSessionButton.off();\n }\n $container.off(events.Modals.Open, disableControls);\n $container.off(events.Modals.Closed, enableControls);\n };\n var init = function init() {\n createView();\n setupEvents();\n };\n var updateView = function updateView(scoObjectiveHasBeenCompleted) {\n _scoObjectiveHasBeenCompleted = scoObjectiveHasBeenCompleted;\n destroy();\n init();\n };\n return Object.defineProperties({\n setTitle: setTitle,\n updateView: updateView\n }, {});\n};\nvar ScormNavigationBarView$1 = {\n create: ScormNavigationBarView\n};\n\n/**\n * Options for the ScormConfirmCompleteModal\n * @typedef {Object} ScormModalOptions\n * @property {boolean} canResumeVideo - Can the SCORM module be resumed\n * @property {boolean} failedToSaveSuspendedData - Indicates whether the player could not save the current state to the suspended data api.\n */\n\n/**\n * @memberof TSC\n * @class ScormConfirmCompleteModalView\n * @classdesc Confirmation modal used with SCORM operations\n * @param {jQuery} $container - jQuery wrapped element to add modal to.\n * @param {ScormModalOptions} options - Options to use when displaying modal.\n */\nvar ScormConfirmCompleteModalView = function ScormConfirmCompleteModalView($container, options) {\n var _$scormConfirmCompleteModalWrapper = $container.find('.scorm-confirm-complete-modal-wrapper');\n var _$confirmButton;\n var _$dismissButton;\n var createView = function createView() {\n var finalConfirmText;\n if (options.failedToSaveSuspendedData) {\n finalConfirmText = localizationStrings.getPlayerString(playerStringNames.scormConfirmCompleteModalFailedToSaveProgressText);\n } else {\n var confirmText = localizationStrings.getPlayerString(playerStringNames.scormConfirmCompleteModalText);\n var confirmWarningText = options.canResumeVideo ? localizationStrings.getPlayerString(playerStringNames.scormConfirmCompleteModalResumeVideoText) : localizationStrings.getPlayerString(playerStringNames.scormConfirmCompleteModalRestartVideoText);\n finalConfirmText = confirmText + ' ' + confirmWarningText;\n }\n var screenReaderAlertText = finalConfirmText;\n var dismissButtonText = localizationStrings.getPlayerString(playerStringNames.scormConfirmCompleteModalDismissButtonText);\n var dismissButtonScreenReaderText = localizationStrings.getPlayerString(playerStringNames.scormConfirmCompleteModalDismissButtonScreenReaderText);\n var confirmButtonText = localizationStrings.getPlayerString(playerStringNames.scormConfirmCompleteModalConfirmButtonText);\n var confirmButtonScreenReaderText = localizationStrings.getPlayerString(playerStringNames.scormConfirmCompleteModalConfirmButtonScreenReaderText);\n var scormConfirmCompleteModalMarkup = templateGenerator.generateScormConfirmCompleteModalMarkup(screenReaderAlertText, finalConfirmText, dismissButtonText, dismissButtonScreenReaderText, confirmButtonText, confirmButtonScreenReaderText, options.failedToSaveSuspendedData);\n _$scormConfirmCompleteModalWrapper.html(scormConfirmCompleteModalMarkup);\n _$dismissButton = _$scormConfirmCompleteModalWrapper.find('.dismiss-complete-button');\n _$confirmButton = _$scormConfirmCompleteModalWrapper.find('.confirm-complete-button');\n };\n var onDismissClickHandler = function onDismissClickHandler(e) {\n e.preventDefault();\n destroy();\n };\n var onCompleteClickHandler = function onCompleteClickHandler(e) {\n e.preventDefault();\n if (options.failedToSaveSuspendedData) {\n $container.trigger(events.SCORM.ExitSessionWithOutProgressConfirmed);\n } else {\n $container.trigger(events.SCORM.ExitSessionConfirmed);\n }\n };\n var setupEvents = function setupEvents() {\n _$confirmButton.on('click', onCompleteClickHandler);\n _$dismissButton.on('click', onDismissClickHandler);\n };\n var destroy = function destroy() {\n $container.trigger(events.Modals.Closed);\n _$confirmButton && _$confirmButton.off();\n _$dismissButton && _$dismissButton.off();\n _$scormConfirmCompleteModalWrapper.html('');\n };\n createView();\n setupEvents();\n $container.trigger(events.Modals.Open);\n return Object.defineProperties({\n destroy: destroy\n }, {});\n};\nvar ScormConfirmCompleteModalView$1 = {\n create: ScormConfirmCompleteModalView\n};\n\nvar ScormSessionEndedView = function ScormSessionEndedView($container) {\n var _$scormSessionEndedWrapper = $container.find('.scorm-session-ended-wrapper');\n var scormSessionEndedMarkup = templateGenerator.generateScormSessionEndedMarkup(localizationStrings.getPlayerString(playerStringNames.scormSessionEndedText));\n _$scormSessionEndedWrapper.html(scormSessionEndedMarkup);\n $container.trigger(events.Modals.Open);\n};\nvar ScormSessionEndedView$1 = {\n create: ScormSessionEndedView\n};\n\nvar DEFAULT_PASSING_SCORE = 80;\nvar DEFAULT_VIDEO_WATCH_PERCENT_FOR_COMPLETE = 1;\nvar SCORM_NAV_CONTAINER_HEIGHT = '44px'; // note this should match the LESS var @scorm-ui-bar-height\n\n/**\n * @memberof TSC\n * @class scormController\n * @static\n * @classdesc Scorm Controller\n */\nvar scormController = function scormController() {\n var _$container = null;\n var _scormNavigationBarView = null;\n var _scormConfirmCompleteModalView = null;\n var _minimumScoreToPass = DEFAULT_PASSING_SCORE;\n var _minimumViewPercentageToCompleteLesson = DEFAULT_VIDEO_WATCH_PERCENT_FOR_COMPLETE;\n var _scormApiWrapper;\n var _isDisposed;\n var _initialized;\n var _scormModel;\n var _quizModel = null;\n var _sessionStartTimeInMilliseconds = 0;\n var _preventWindowClose = true;\n var _ignoreFailedToSuspendError = false;\n var _pendingScoExitValue = null;\n var _scoSessionHasEnded = false;\n var initializeInternalState = function initializeInternalState() {\n _$container = null;\n _scormNavigationBarView = null;\n _scormConfirmCompleteModalView = null;\n _scormApiWrapper = ScormApiWrapper$1.create();\n _isDisposed = false;\n _initialized = false;\n _scormModel = ScormDataModel$1.create();\n _sessionStartTimeInMilliseconds = 0;\n _preventWindowClose = true;\n _ignoreFailedToSuspendError = false;\n _pendingScoExitValue = null;\n _scoSessionHasEnded = false;\n };\n var scoHasQuiz = function scoHasQuiz() {\n return _quizModel !== null;\n };\n var scormSessionHasUnfinishedQuiz = function scormSessionHasUnfinishedQuiz() {\n return scoHasQuiz() && _scormModel.passingStatus === scormConstants.status.unknown;\n };\n var canSuspendScormSession = function canSuspendScormSession() {\n return !scoHasQuiz() || _quizModel.reportMethod === reportType.NONE || _quizModel.reportMethod === reportType.SCORM;\n };\n var submitMinMaxScoreValuesToScormApi = function submitMinMaxScoreValuesToScormApi() {\n if (_scormApiWrapper.apiVersion === scormConstants.versions.SCORM_1_2) {\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiScoreMin, scormConstants.assessment.minScore.toString());\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiScoreMax, scormConstants.assessment.maxScore.toString());\n } else {\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiScoreMin, scormConstants.assessment.minScore);\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiScoreMax, scormConstants.assessment.maxScore);\n }\n _scormApiWrapper.apiCall(scormConstants.fn.commit);\n };\n var submitScoreToScormApi = function submitScoreToScormApi() {\n if (_scormApiWrapper.apiVersion === scormConstants.versions.SCORM_1_2) {\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiScoreRaw, _scormModel.quizPercentageCorrectAsString);\n } else {\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiScoreRaw, _scormModel.quizPercentageCorrect);\n }\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiScoreScaled, _scormModel.quizPercentageCorrect / scormConstants.assessment.scoreNormalizationDivider);\n _scormApiWrapper.apiCall(scormConstants.fn.commit);\n };\n var getSuspendedDataFromAPI = function getSuspendedDataFromAPI() {\n var suspendedData = _scormApiWrapper.apiCall(scormConstants.fn.getValue, scormConstants.dataModelID.cmiSuspendData);\n _scormModel.parseSuspendedDataString(suspendedData);\n };\n var getSuspendData = function getSuspendData() {\n if (_quizModel) {\n _scormModel.quizModelSnapshot = _quizModel.getSnapShot();\n }\n _scormModel.videoAnalyticsSnapshot = videoAnalytics.getVideoSegmentSnapShot();\n return _scormModel.getSuspendedDataString();\n };\n var getSessionTimeValueByApiVersion = function getSessionTimeValueByApiVersion() {\n var sessionTimeInMilliseconds = window.performance.now() - _sessionStartTimeInMilliseconds;\n var sessionTimeInSeconds = Math.round(sessionTimeInMilliseconds / 1000);\n if (_scormApiWrapper.apiVersion === scormConstants.versions.SCORM_1_2) {\n return timeFormatter.formatTimeForCmiTimespan(sessionTimeInSeconds);\n }\n return timeFormatter.formatTimeAsTimeInterval(sessionTimeInSeconds);\n };\n var scoObjectiveHasBeenCompleted = function scoObjectiveHasBeenCompleted() {\n return _scormModel.percentageComplete >= _minimumViewPercentageToCompleteLesson && !scormSessionHasUnfinishedQuiz();\n };\n var shouldSubmitQuizScoreToApi = function shouldSubmitQuizScoreToApi() {\n return _quizModel && _scormModel.completionStatus === scormConstants.status.completed && _scormModel.quizCompletionStatus === scormConstants.status.completed && _quizModel.totalNumberOfGradedQuestionSets > 0;\n };\n var endScormSession = function endScormSession() {\n if (!_scoSessionHasEnded) {\n // need to mark this ended upfront\n _scoSessionHasEnded = true;\n if (_scormModel.percentageComplete >= _minimumViewPercentageToCompleteLesson) {\n _scormModel.completionStatus = scormConstants.status.completed;\n }\n var timeInSecondsAsString = videoAnalytics.getCurrentPlayTime().toString();\n _pendingScoExitValue = scormConstants.exitStates.complete;\n var scoCompletionStatusValue = _scormModel.completionStatus;\n var scoSuccessStatusValue;\n\n // SCORM 1.2 when video has quiz and not answered all questions complete status will be 'incomplete'\n // This is because SCORM 1.2 does not have a separate api value for pass / fail success\n if (_scormApiWrapper.apiVersion === scormConstants.versions.SCORM_1_2 && scormSessionHasUnfinishedQuiz()) {\n scoCompletionStatusValue = scormConstants.status.incomplete;\n }\n\n // Suspend SCO (Enables bookmarking feature) when viewer has not watched all the required video or they have not answered all the quiz questions if they exist\n if (canSuspendScormSession() && (_scormModel.completionStatus !== scormConstants.status.completed || scormSessionHasUnfinishedQuiz())) {\n _pendingScoExitValue = scormConstants.exitStates.suspend;\n }\n\n // If SCO attempt is complete and there is a quiz make sure we write the score out regardless if viewer has finished quiz\n if (_pendingScoExitValue === scormConstants.exitStates.complete) {\n if (scoHasQuiz()) {\n submitScore(_scormModel.quizPercentageCorrect, true);\n } else {\n _scormModel.passingStatus = scormConstants.status.passed;\n }\n }\n\n // SCORM 1.2 completionStatus value can be 'incomplete', 'passed' or 'failed'\n // SCORM 1.2 does not have a key to store an independent success status.\n if (_scormApiWrapper.apiVersion === scormConstants.versions.SCORM_1_2 && scoHasQuiz() && _scormModel.passingStatus !== scormConstants.status.unknown && scoCompletionStatusValue === scormConstants.status.completed) {\n scoCompletionStatusValue = _scormModel.passingStatus;\n scoSuccessStatusValue = '';\n } else {\n scoSuccessStatusValue = _scormModel.passingStatus;\n }\n var suspendedData = _pendingScoExitValue === scormConstants.exitStates.suspend ? getSuspendData() : '';\n var suspendSuccess = _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiSuspendData, suspendedData);\n\n // SCORM spec says boolean is returned, but in testing it is a boolean as a string. So testing for both in case a LMS returns a boolean.\n if (typeof suspendSuccess === 'string' && suspendSuccess.toLowerCase() === 'false' || suspendSuccess === false) {\n _pendingScoExitValue = scormConstants.exitStates.complete;\n if (!_ignoreFailedToSuspendError) {\n _scormConfirmCompleteModalView = ScormConfirmCompleteModalView$1.create(_$container, {\n canResumeVideo: true,\n failedToSaveSuspendedData: true\n });\n _scoSessionHasEnded = false;\n return false;\n }\n }\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiSessionTime, getSessionTimeValueByApiVersion());\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiProgressMeasure, _scormModel.percentageComplete);\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiLocation, timeInSecondsAsString);\n if (shouldSubmitQuizScoreToApi()) {\n submitScoreToScormApi();\n }\n if (_scormModel.passingStatus !== scormConstants.status.completed) {\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiSuccessStatus, scoSuccessStatusValue);\n }\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiCompletionStatus, scoCompletionStatusValue);\n _scormApiWrapper.apiCall(scormConstants.fn.commit);\n }\n return true;\n };\n var terminateScormSession = function terminateScormSession() {\n _initialized = false;\n _isDisposed = true;\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiExit, _pendingScoExitValue);\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.adlNavRequest, scormConstants.navRequestStates.exitAll);\n _scormApiWrapper.apiCall(scormConstants.fn.terminate);\n ScormSessionEndedView$1.create(_$container);\n };\n var createNavigationBarView = function createNavigationBarView() {\n _scormNavigationBarView = ScormNavigationBarView$1.create(_$container);\n _scormNavigationBarView.updateView(scoObjectiveHasBeenCompleted());\n _scormApiWrapper.getTitle().then(function (scormTitle) {\n _scormNavigationBarView.setTitle(scormTitle);\n });\n _$container[0].style.setProperty(cssVariables.reservedSizeScorm, SCORM_NAV_CONTAINER_HEIGHT);\n };\n var onExitSessionHandler = function onExitSessionHandler() {\n if (!scoObjectiveHasBeenCompleted()) {\n _scormConfirmCompleteModalView = ScormConfirmCompleteModalView$1.create(_$container, {\n canResumeVideo: canSuspendScormSession(),\n failedToSaveSuspendedData: false\n });\n } else {\n exitScormSession();\n }\n };\n var onExitSessionConfirmedHandler = function onExitSessionConfirmedHandler() {\n _scormConfirmCompleteModalView && _scormConfirmCompleteModalView.destroy();\n _scormConfirmCompleteModalView = null;\n exitScormSession();\n };\n var onExitSessionWithOutProgressConfirmed = function onExitSessionWithOutProgressConfirmed() {\n _ignoreFailedToSuspendError = true;\n onExitSessionConfirmedHandler();\n };\n var initView = function initView($container) {\n _$container = $container;\n if (_scormApiWrapper.apiVersion === scormConstants.versions.NOT_DETECTED) {\n _$container.trigger(events.SCORM.FailedToFindApi);\n return;\n }\n _$container.addClass(cssClasses.scormModule);\n _$container.on(events.SCORM.ExitSession, onExitSessionHandler);\n _$container.on(events.SCORM.ExitSessionConfirmed, onExitSessionConfirmedHandler);\n _$container.on(events.SCORM.ExitSessionWithOutProgressConfirmed, onExitSessionWithOutProgressConfirmed);\n createNavigationBarView();\n };\n var exitScormSession = function exitScormSession() {\n var endedSuccessStatus = endScormSession();\n if (endedSuccessStatus || _ignoreFailedToSuspendError) {\n terminateScormSession();\n _preventWindowClose = false;\n }\n };\n var preventPopUpWindowClose = function preventPopUpWindowClose() {\n try {\n if (window.top && window.top.opener) {\n window.top.onbeforeunload = function () {\n if (_preventWindowClose) {\n return '';\n }\n };\n }\n } catch (e) {\n // eslint-disable-line\n }\n };\n var initializeCompletionStatus = function initializeCompletionStatus() {\n var completionStatus = _scormApiWrapper.apiCall(scormConstants.fn.getValue, scormConstants.dataModelID.cmiCompletionStatus, true);\n if (completionStatus === scormConstants.status.unknown || completionStatus === scormConstants.status.notAttempted) {\n _scormModel.completionStatus = scormConstants.status.incomplete;\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiCompletionStatus, scormConstants.status.incomplete);\n } else {\n _scormModel.completionStatus = completionStatus;\n }\n };\n\n // as a backup, try and terminate the SCORM session if the user did not do it.\n // most likely this will not work with some browsers with some LMSs\n var tryAndTerminateSessionOnPageUnloadIfNeeded = function tryAndTerminateSessionOnPageUnloadIfNeeded() {\n if (!_isDisposed) {\n exitScormSession();\n }\n };\n var init = function init() {\n initializeInternalState();\n _sessionStartTimeInMilliseconds = window.performance.now();\n return _scormApiWrapper.init().then(function (apiResult) {\n if (apiResult === 'false') {\n console.error(_scormApiWrapper.getLastError());\n return;\n }\n preventPopUpWindowClose();\n getSuspendedDataFromAPI();\n initializeCompletionStatus();\n if (_quizModel !== null) {\n submitMinMaxScoreValuesToScormApi();\n }\n window.addEventListener('unload', tryAndTerminateSessionOnPageUnloadIfNeeded);\n _initialized = true;\n });\n };\n\n /**\n * Submit percentage of video watched to SCORM api\n * @function submitVideoWatchedPercentage\n * @memberof TSC.scormController\n * @param {Number} percentageWatched - Percentage of video watched from 0 - 1\n * @param {Number} timeInSeconds - Current time of video in seconds\n */\n var submitVideoWatchedPercentage = function submitVideoWatchedPercentage(percentageWatched, timeInSeconds) {\n if (!_initialized) {\n return;\n }\n // Note: the percentage reported via value reports how much was actually watched\n // and not the percentage of the timeline that the playhead is at.\n // So, for example, if you started up a video and then immediately seeked to\n // the 75% pt, the values reported here would still start from zero.\n _scormModel.percentageComplete = Math.max(0, Math.min(1, percentageWatched));\n _scormModel.videoTimeInSeconds = timeInSeconds;\n if (_scormModel.percentageComplete >= _minimumViewPercentageToCompleteLesson) {\n _scormModel.completionStatus = scormConstants.status.completed;\n }\n if (scoObjectiveHasBeenCompleted()) {\n if (_scormNavigationBarView) {\n _scormNavigationBarView.updateView(true);\n }\n if (playerConfiguration.completeScormOnRequirementsComplete) {\n endScormSession();\n }\n }\n };\n\n /**\n * Submit a score to the SCORM api\n * @memberof TSC.scormController\n * @function submitScore\n * @param {Number} currentScore - Score to report to Scorm\n * @param {Boolean} allQuestionsAnswered - Are all questions answered\n */\n var submitScore = function submitScore(currentScore, allQuestionsAnswered) {\n if (!_initialized) {\n return;\n }\n var scoreNeededToPass = _minimumScoreToPass;\n if (!isNaN(currentScore)) {\n var scoreNeededMultiplier = null;\n var maxPassingScoreValue = null;\n if (_scormApiWrapper.apiVersion === scormConstants.versions.SCORM_2004) {\n scoreNeededMultiplier = 100;\n maxPassingScoreValue = 1;\n } else if (_scormApiWrapper.apiVersion === scormConstants.versions.SCORM_1_2) {\n scoreNeededMultiplier = 1;\n maxPassingScoreValue = 100;\n }\n\n // lms defined mastery level will take precedence over sco defined mastery level\n var lmsPassingScore = _scormApiWrapper.apiCall(scormConstants.fn.getValue, scormConstants.dataModelID.cmiScaledPassingScore);\n if (lmsPassingScore !== null && lmsPassingScore !== '' && lmsPassingScore >= 0 && lmsPassingScore <= maxPassingScoreValue) {\n scoreNeededToPass = lmsPassingScore * scoreNeededMultiplier;\n }\n _scormModel.quizPercentageCorrect = currentScore;\n _scormModel.quizCompletionStatus = allQuestionsAnswered ? scormConstants.status.completed : scormConstants.status.incomplete;\n if (allQuestionsAnswered) {\n if (_quizModel.totalNumberOfGradedQuestionSets === 0) {\n _scormModel.passingStatus = scormConstants.status.completed;\n } else if (currentScore >= scoreNeededToPass) {\n _scormModel.passingStatus = scormConstants.status.passed;\n } else {\n _scormModel.passingStatus = scormConstants.status.failed;\n }\n } else {\n _scormModel.passingStatus = scormConstants.status.unknown;\n }\n if (scoObjectiveHasBeenCompleted()) {\n if (_scormNavigationBarView) {\n _scormNavigationBarView.updateView(true);\n }\n if (playerConfiguration.completeScormOnRequirementsComplete) {\n endScormSession();\n }\n }\n }\n };\n return Object.defineProperties({\n init: init,\n initView: initView,\n submitVideoWatchedPercentage: submitVideoWatchedPercentage,\n submitScore: submitScore\n }, {\n initialized: {\n get: function get() {\n return _initialized;\n }\n },\n initialPercentageComplete: {\n get: function get() {\n return _scormModel.percentageComplete;\n }\n },\n initialVideoAnalyticsSnapshot: {\n get: function get() {\n return _scormModel.videoAnalyticsSnapshot;\n }\n },\n initialQuizModelSnapshot: {\n get: function get() {\n return _scormModel.quizModelSnapshot;\n }\n },\n initialVideoTimeInSeconds: {\n get: function get() {\n return _scormModel.videoTimeInSecondsSnapshot;\n }\n },\n minScoreToPassLesson: {\n get: function get() {\n return _minimumScoreToPass;\n },\n set: function set(minimumScoreToPass) {\n _minimumScoreToPass = minimumScoreToPass;\n }\n },\n minViewPercentageToCompleteLesson: {\n get: function get() {\n return _minimumViewPercentageToCompleteLesson;\n },\n set: function set(minimumViewPercentageToCompleteLesson) {\n _minimumViewPercentageToCompleteLesson = minimumViewPercentageToCompleteLesson;\n }\n },\n quizModel: {\n get: function get() {\n return _quizModel;\n },\n set: function set(quizModel) {\n _quizModel = quizModel;\n }\n },\n scoObjectiveHasBeenCompleted: {\n get: scoObjectiveHasBeenCompleted\n },\n supportsResumeSession: {\n get: canSuspendScormSession\n }\n });\n};\nvar scormController$1 = scormController();\n\nvar quizServiceErrorIds = Object.freeze({\n badDefinition: 'bad_quiz_definition'\n});\n\nvar CONTROL_BAR_HEIGHT = 48;\nvar BOTTOM_PADDING = 14;\n\n/**\n * @memberof TSC\n * @class QuizController\n * @classdesc Quiz Controller manages questions state and views.\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.Quiz} quizModel\n * @param {TSC.BeforeAfterPlayControlsView} beforeAfterPlayControlsView\n * @param {boolean} enforceLinearAssessment\n *\n */\nvar QuizController = function QuizController($container, mediaView, quizModel, beforeAfterPlayControlsView, enforceLinearAssessment) {\n var hasQuiz = !!quizModel;\n if (!hasQuiz) {\n throw new Error('Attempted to create quiz controller with no quiz model');\n }\n var _quizSetupView = null;\n var _currentView = null;\n var _quizModel = null;\n var _retrySubmissionMessageDisplayBar = null;\n var _quizOutOfDateMessageView = null;\n var _quizBadDefinitionMessageView = null;\n var _progressTracker = null;\n var _numberQuestionSets = 0;\n var _currentQuestionSetIndex = 0;\n var _bottomOffset = 0;\n var _pointAt = null;\n var _quizEnabled = true;\n var _quizReady = false;\n var _mediaIsImage = mediaView.type === mediaViewType.image;\n var _lastStatusMessage = '';\n var _questionGrader;\n var _quizUserDetails;\n var _shouldReportViewedOnPageLoad = mediaView.type === mediaViewType.image;\n var _quizSetupPromise;\n var _resolveQuizSetup;\n var getMediaElement = function getMediaElement() {\n return mediaView.mediaElement;\n };\n var submitScoreToScormController = function submitScoreToScormController() {\n if (_quizModel.useScorm) {\n // Built in Scorm support\n if (scormController$1.initialized) {\n scormController$1.submitScore(_quizModel.getScormScore(), _quizModel.isLastQuestionComplete());\n // Legacy Scorm support\n } else if (typeof window.userSubmitToLMS !== 'undefined') {\n window.userSubmitToLMS(_quizModel.getScormScore());\n }\n }\n };\n var onNetworkRetryEvent = function onNetworkRetryEvent() {\n $container.trigger(events.Quizzing.ShowSubmissionRetryMessage);\n };\n var completeQuestionSetEventDispatch = function completeQuestionSetEventDispatch() {\n $container.trigger(events.Quizzing.Complete);\n hotkeyService.enableHotkeys();\n };\n var questionSetCompleteHandler = function questionSetCompleteHandler() {\n _currentQuestionSetIndex = -1;\n _currentView.removeView(true);\n _currentView = null;\n completeQuestionSetEventDispatch();\n };\n var dispatchStatusEvent = function dispatchStatusEvent(ioMessage) {\n _lastStatusMessage = ioMessage;\n $container.trigger(events.Quizzing.Status, {\n message: ioMessage\n });\n };\n var onContinueHandler = function onContinueHandler() {\n $container.off(events.Quizzing.CloseQuestionSetView, onContinueHandler);\n questionSetCompleteHandler();\n };\n var createQuestionSetFeedbackView = function createQuestionSetFeedbackView(needOverlay) {\n var questionSetView = QuestionSetView$1.create($container, _quizModel.questionSets[_currentQuestionSetIndex], needOverlay, _mediaIsImage, true, mediaView.currentTime);\n $container.on(events.Quizzing.CloseQuestionSetView, onContinueHandler);\n _currentView = questionSetView;\n _currentView.showView();\n };\n var continueVideoHandler = function continueVideoHandler() {\n $(reviewAnswersConfirmationView.getContinueControlRef()).off('click', continueVideoHandler);\n $(reviewAnswersConfirmationView.getReviewControlRef()).off('click', initQuestionSetFeedback);\n reviewAnswersConfirmationView.removeView(true);\n _currentView = null;\n completeQuestionSetEventDispatch();\n };\n var initQuestionSetFeedback = function initQuestionSetFeedback() {\n $(reviewAnswersConfirmationView.getContinueControlRef()).off('click', continueVideoHandler);\n $(reviewAnswersConfirmationView.getReviewControlRef()).off('click', initQuestionSetFeedback);\n reviewAnswersConfirmationView.removeView(false);\n _currentView = null;\n createQuestionSetFeedbackView();\n };\n var createReviewAnswersConfirmationView = function createReviewAnswersConfirmationView() {\n var numberCorrectText = null;\n var percentCorrectText = null;\n var numberIncorrectText = null;\n var percentIncorrectText = null;\n var numberCorrect = 0;\n var numberIncorrect = 0;\n var numberUngradable = 0;\n var possibleCorrect = _quizModel.questionSets[_currentQuestionSetIndex].numberGradedQuestions;\n if (possibleCorrect > 0) {\n numberCorrect = _quizModel.questionSets[_currentQuestionSetIndex].numberCorrectQuestions;\n numberIncorrect = possibleCorrect - numberCorrect;\n numberUngradable = _quizModel.questionSets[_currentQuestionSetIndex].numberUngradedQuestions;\n numberCorrectText = localizationStrings.getPlayerString(playerStringNames.txtCorrect).replace('{{numberCorrect}}', numberCorrect);\n percentCorrectText = Math.round(100 * (numberCorrect / possibleCorrect)) + '%';\n numberIncorrectText = localizationStrings.getPlayerString(playerStringNames.txtIncorrect).replace('{{numberIncorrect}}', numberIncorrect);\n percentIncorrectText = Math.round(100 * (numberIncorrect / possibleCorrect)) + '%';\n }\n if (numberUngradable === 1) {\n questionSetReviewStatusView.setUngradeableDetails(numberUngradable + localizationStrings.getPlayerString(playerStringNames.accessBtnWasNotGraded));\n } else {\n questionSetReviewStatusView.setUngradeableDetails(numberUngradable + localizationStrings.getPlayerString(playerStringNames.accessBtnWereNotGraded));\n }\n var markup = reviewAnswersConfirmationView.getViewMarkup(numberCorrectText, percentCorrectText, numberIncorrectText, percentIncorrectText, localizationStrings.getPlayerString(playerStringNames.txtContinue), localizationStrings.getPlayerString(playerStringNames.txtReviewAnswer));\n\n // add view template\n $container.append(markup);\n _currentView = reviewAnswersConfirmationView;\n $(_currentView.getContinueControlRef()).on('click', continueVideoHandler);\n $(_currentView.getReviewControlRef()).on('click', initQuestionSetFeedback);\n\n // fade in view\n _currentView.showView();\n updateViewBottom();\n if (_pointAt !== null) {\n _currentView.pointAt(_pointAt);\n }\n };\n var createQuestionSetReviewStatusView = function createQuestionSetReviewStatusView() {\n var numberCorrect = _quizModel.questionSets[_currentQuestionSetIndex].numberCorrectQuestions;\n var possibleCorrect = _quizModel.questionSets[_currentQuestionSetIndex].numberGradedQuestions;\n var numberUngradable = _quizModel.questionSets[_currentQuestionSetIndex].numberUngradedQuestions;\n questionSetReviewStatusView.setGradeableDetails(numberCorrect + localizationStrings.getPlayerString(playerStringNames.accessBtnCorrectOutOf) + possibleCorrect + localizationStrings.getPlayerString(playerStringNames.accessBtnGradedQuestions));\n if (numberUngradable === 1) {\n questionSetReviewStatusView.setUngradeableDetails(numberUngradable + localizationStrings.getPlayerString(playerStringNames.accessBtnWasNotGraded));\n } else {\n questionSetReviewStatusView.setUngradeableDetails(numberUngradable + localizationStrings.getPlayerString(playerStringNames.accessBtnWereNotGraded));\n }\n var markup = questionSetReviewStatusView.getViewMarkup();\n $container.append(markup);\n _currentView = questionSetReviewStatusView;\n $(questionSetReviewStatusView.getHideAnswersControlRef()).on('click', hideQuizStatus);\n $(questionSetReviewStatusView.getShowAnswersControlRef()).on('click', initFeedbackFromReviewStatusView);\n questionSetReviewStatusView.showView();\n _currentView.updateViewPosition();\n };\n var initFeedbackFromReviewStatusView = function initFeedbackFromReviewStatusView() {\n $(questionSetReviewStatusView.getHideAnswersControlRef()).off('click', hideQuizStatus);\n $(questionSetReviewStatusView.getShowAnswersControlRef()).off('click', initFeedbackFromReviewStatusView);\n questionSetReviewStatusView.removeView(false);\n _currentView = null;\n createQuestionSetFeedbackView();\n };\n var hideQuizStatus = function hideQuizStatus() {\n $container.trigger(events.Quizzing.HideQuiz);\n _currentView.hideView();\n };\n var onRationaleActionHandler = function onRationaleActionHandler(e, data) {\n if (e.type === events.Quizzing.RationaleActionLocation) {\n urlService.openUrl(data.location, '_blank');\n } else if (e.type === events.Quizzing.RationaleActionJumpToTime) {\n $container.off(events.Quizzing.CloseQuestionSetView, onCloseQuestionSetView);\n $container.off(events.Quizzing.SubmitQuestionSet, onSubmit);\n $container.off(events.Quizzing.RationaleActionLocation, onRationaleActionHandler);\n $container.off(events.Quizzing.RationaleActionJumpToTime, onRationaleActionHandler);\n questionSetCompleteHandler();\n }\n };\n var onCloseQuestionSetView = function onCloseQuestionSetView() {\n $container.off(events.Quizzing.CloseQuestionSetView, onCloseQuestionSetView);\n $container.off(events.Quizzing.SubmitQuestionSet, onSubmit);\n $container.off(events.Quizzing.RationaleActionLocation, onRationaleActionHandler);\n $container.off(events.Quizzing.RationaleActionJumpToTime, onRationaleActionHandler);\n $container.trigger(events.Quizzing.Submitted);\n if (_quizModel.questionSets[_currentQuestionSetIndex].displayFeedback) {\n if (_mediaIsImage) {\n $container.trigger(events.Quizzing.TransitionImageQuizToAnswers);\n _currentView.removeView(true);\n createQuestionSetReviewStatusView();\n } else {\n _currentView.removeView(false);\n createReviewAnswersConfirmationView();\n }\n } else {\n questionSetCompleteHandler();\n }\n };\n var submitResults = function submitResults() {\n dispatchStatusEvent(localizationStrings.getPlayerString(playerStringNames.txtSubmittingAnswers));\n quizService.addEventListener(events.Network.Retrying, onNetworkRetryEvent);\n if (_quizModel.useQuizApi) {\n var data = _quizModel.getApiDataForQuestionSet(_currentQuestionSetIndex);\n return quizService.submitQuestionSet(data).then(function (results) {\n quizService.removeEventListener(events.Network.Retrying, onNetworkRetryEvent);\n $container.trigger(events.Quizzing.HideSubmissionRetryMessage);\n if (!_questionGrader.doesLocalGrading && results === undefined) {\n return Promise$1.reject('Failed to get results for question set submission');\n }\n return results;\n });\n }\n return Promise$1.resolve();\n };\n var gradeResults = function gradeResults(results) {\n if (!_questionGrader.doesLocalGrading && results) {\n _questionGrader.processQuestionSetResults(_quizModel.questionSets[_currentQuestionSetIndex], results);\n } else {\n _questionGrader.gradeQuestionSet(_quizModel.questionSets[_currentQuestionSetIndex]);\n }\n return Promise$1.resolve();\n };\n var onGradingComplete = function onGradingComplete() {\n if (_quizModel.useScorm) {\n submitScoreToScormController();\n }\n if (_quizModel.questionSets[_currentQuestionSetIndex].usesRationale) {\n $container.trigger(events.Quizzing.HideLoadingMessage);\n _currentView.showFeedbackForCurrentQuestion();\n } else {\n onCloseQuestionSetView();\n }\n };\n var onSubmit = function onSubmit() {\n submitResults().then(gradeResults).then(onGradingComplete)[\"catch\"](apiErrorEventHandler);\n };\n var createQuestionSetView = function createQuestionSetView(needOverlay) {\n var questionSetView = QuestionSetView$1.create($container, _quizModel.questionSets[_currentQuestionSetIndex], needOverlay, _mediaIsImage, false, mediaView.currentTime);\n if (_quizModel.questionSets[_currentQuestionSetIndex].usesRationale) {\n $container.on(events.Quizzing.SubmitQuestionSet, onSubmit);\n $container.on(events.Quizzing.CloseQuestionSetView, onCloseQuestionSetView);\n $container.on(events.Quizzing.RationaleActionLocation, onRationaleActionHandler);\n $container.on(events.Quizzing.RationaleActionJumpToTime, onRationaleActionHandler);\n } else {\n $container.on(events.Quizzing.SubmitQuestionSet, onSubmit);\n }\n _currentView = questionSetView;\n _currentView.showView();\n $container.trigger(events.Quizzing.ShowQuestionSetView);\n return questionSetView;\n };\n var reviewHandler = function reviewHandler() {\n _currentView.removeView(true);\n _currentView = null;\n $container.trigger(events.Quizzing.Review);\n hotkeyService.enableHotkeys();\n };\n var onViewRemove = function onViewRemove() {\n if (_currentQuestionSetIndex < _numberQuestionSets) {\n createQuestionSetView(false);\n }\n };\n var confirmHandler = function confirmHandler() {\n _currentView.removeView();\n _currentView = null;\n onViewRemove();\n };\n var createConfirmView = function createConfirmView() {\n var reviewText;\n if (enforceLinearAssessment) {\n reviewText = localizationStrings.getPlayerString(playerStringNames.txtReview);\n } else {\n reviewText = localizationStrings.getPlayerString(playerStringNames.txtContinue);\n }\n var markup = questionSetConfirmationView.getViewMarkup(reviewText, localizationStrings.getPlayerString(playerStringNames.txtAnswerQuestion));\n $container.append(markup);\n _currentView = questionSetConfirmationView;\n updateViewBottom();\n if (_quizModel.hideReplay === true) {\n $(questionSetConfirmationView.getReviewControlRef()).hide();\n }\n $(questionSetConfirmationView.getReviewControlRef()).on('click', reviewHandler);\n $(questionSetConfirmationView.getConfirmControlRef()).on('click', confirmHandler);\n questionSetConfirmationView.showView();\n questionSetConfirmationView.updateViewPosition();\n $container.trigger(events.Quizzing.ShowStartQuizPrompt);\n };\n var destroyQuizSetupView = function destroyQuizSetupView() {\n if (_quizSetupView) {\n $container.off(events.Quizzing.BeginClicked, beginQuizHandler);\n $container.off(events.Quizzing.SkipClicked, skipQuizHandler);\n _quizSetupView.destroy();\n if (_quizSetupView.$view) {\n _quizSetupView.$view.remove();\n }\n _quizSetupView = null;\n }\n };\n var beginQuizHandler = function beginQuizHandler(e, eventData) {\n e.preventDefault();\n destroyQuizSetupView();\n hotkeyService.enableHotkeys();\n if (eventData && eventData.firstName) {\n _quizUserDetails = {\n firstName: eventData.firstName,\n lastName: eventData.lastName,\n email: eventData.email\n };\n }\n _resolveQuizSetup();\n if (_shouldReportViewedOnPageLoad) {\n init();\n } else {\n $container.trigger(events.Quizzing.Begin);\n }\n };\n var skipQuizHandler = function skipQuizHandler(e) {\n e.preventDefault();\n _quizEnabled = false;\n destroyQuizSetupView();\n _resolveQuizSetup();\n if (!_shouldReportViewedOnPageLoad) {\n $container.trigger(events.Quizzing.Skip);\n }\n };\n var createSetupView = function createSetupView() {\n beforeAfterPlayControlsView && beforeAfterPlayControlsView.hideVideoClickToPlayLink();\n\n // disable the TOC hotkey, it interferes\n hotkeyService.disableHotkeys();\n _quizSetupView = QuizSetupView$1.create($container);\n $container.on(events.Quizzing.BeginClicked, beginQuizHandler);\n if (_quizModel.allowSkipQuiz && !playerConfiguration.getDisableContinueWithoutQuestions()) {\n $container.on(events.Quizzing.SkipClicked, skipQuizHandler);\n } else {\n _quizSetupView.hideSkipButton();\n }\n $container.trigger(events.Quizzing.ShowQuizSetup);\n };\n var updateViewBottom = function updateViewBottom() {\n if (_currentView && _currentView.setBottomOffset) {\n _currentView.setBottomOffset(_bottomOffset);\n _currentView.updateViewPosition();\n }\n };\n var startQuizApiInstance = function startQuizApiInstance(firstName, lastName, email) {\n if (_quizModel) {\n $container.trigger(events.Quizzing.ShowQuizBar);\n return quizService.startQuizInstance(_quizModel, firstName, lastName, email, playerConfiguration).then(function (responseData) {\n _quizModel.quizInstanceID = responseData.quizInstanceId;\n $container.trigger(events.Quizzing.CreatedInstance);\n })[\"catch\"](function (data) {\n apiErrorEventHandler();\n return Promise$1.reject(data);\n });\n }\n return Promise$1.resolve();\n };\n var apiErrorEventHandler = function apiErrorEventHandler(response) {\n _quizEnabled = false;\n $container.trigger(events.Quizzing.HideLoadingMessage);\n if (response && response.status === statusCodes.UnprocessableEntity) {\n var errorID = response.responseJSON && response.responseJSON.errorId ? response.responseJSON.errorId : null;\n if (errorID && errorID === quizServiceErrorIds.badDefinition) {\n $container.trigger(events.Quizzing.QuizBadDefinition);\n } else {\n $container.trigger(events.Quizzing.QuizIsOutOfDate);\n }\n } else {\n $container.trigger(events.Quizzing.Error);\n }\n };\n var displaySetupView = function displaySetupView() {\n return _quizModel && _quizModel.quizID && !_mediaIsImage && _quizEnabled && _quizModel.requireUserId && !playerConfiguration.getIsUserIdentified();\n };\n var gatherSetupIfNeeded = function gatherSetupIfNeeded() {\n if (displaySetupView()) {\n createSetupView();\n }\n };\n var getLastStatusMessage = function getLastStatusMessage() {\n return _lastStatusMessage;\n };\n var removeSubmissionRetryMessage = function removeSubmissionRetryMessage() {\n if (_retrySubmissionMessageDisplayBar === null) {\n return;\n }\n _retrySubmissionMessageDisplayBar.remove();\n _retrySubmissionMessageDisplayBar = null;\n };\n var showSubmissionRetryMessage = function showSubmissionRetryMessage() {\n if (_retrySubmissionMessageDisplayBar !== null) {\n return;\n }\n _retrySubmissionMessageDisplayBar = MessageBarView$1.create($container, messageBarType.info, localizationStrings.getPlayerString(playerStringNames.txtQuizErrorMessage));\n };\n var showQuizIsOutOfDateMessage = function showQuizIsOutOfDateMessage() {\n _quizOutOfDateMessageView = MessageBarView$1.create($container, messageBarType.warning, localizationStrings.getPlayerString(playerStringNames.txtQuizOutOfDateMessage), localizationStrings.getPlayerString(playerStringNames.txtQuizOutOfDateRefreshButtonText), function () {\n window.location.reload();\n });\n };\n var showQuizBadDefinitionMessage = function showQuizBadDefinitionMessage() {\n _quizBadDefinitionMessageView = MessageBarView$1.create($container, messageBarType.warning, localizationStrings.getPlayerString(playerStringNames.txtQuizBadDefinitionMessage));\n };\n var displayNextQuestionSet = function displayNextQuestionSet() {\n if (_currentQuestionSetIndex < _numberQuestionSets) {\n return createQuestionSetView(true);\n }\n };\n var hasMultipleQuestionSets = function hasMultipleQuestionSets() {\n return _numberQuestionSets > 1;\n };\n var hasQuizQuestions = function hasQuizQuestions() {\n return _numberQuestionSets > 0;\n };\n var findQuestionSet = function findQuestionSet(time) {\n var activeQuestionSetId = -1;\n var markerTime = -1;\n if (!playerConfiguration.ignoreQuizQuestions) {\n var markers = _quizModel.questionSetMarkerTimes;\n var numberMarkers = markers.length;\n for (var i = 0; i < numberMarkers; i++) {\n if (!markers[i].completed && (enforceLinearAssessment && markers[i].startTime <= time && !markers[i].canSeekPast || markers[i].rangeStart <= time && time <= markers[i].rangeEnd)) {\n activeQuestionSetId = markers[i].questionSetIndex;\n markerTime = markers[i].startTime;\n break;\n }\n }\n }\n return {\n id: activeQuestionSetId,\n markerTime: markerTime\n };\n };\n var findPrevMarkerTimeForMarker = function findPrevMarkerTimeForMarker(questionSetIndex) {\n return _quizModel.getPreviousMarkerTimeForMarker(questionSetIndex);\n };\n var updatePercentWatchedForQuestionSet = function updatePercentWatchedForQuestionSet(questionSetId, percentWatched) {\n _quizModel.questionSets[questionSetId].percentOfVideoSegmentWatched = percentWatched;\n };\n var displayConfirm = function displayConfirm(questionSetIndex) {\n if (!_currentView) {\n _currentQuestionSetIndex = questionSetIndex;\n hotkeyService.disableHotkeys();\n\n // no need to display confirm view if we are in the beginning of the video and force linear is on or if we are in the middle of a rationale quiz\n if (enforceLinearAssessment && _quizModel.questionSets[questionSetIndex].startTime <= _quizModel.minMarkerTimeDiff || _quizModel.questionSets[questionSetIndex].inProgress) {\n createQuestionSetView(true);\n } else {\n createConfirmView();\n }\n }\n };\n var showQuiz = function showQuiz() {\n if (_currentView === null) {\n createQuestionSetView(true);\n } else {\n _currentView.showView();\n }\n };\n var hideQuiz = function hideQuiz() {\n _currentView.hideView();\n };\n var pointViewAt = function pointViewAt(xPos) {\n _pointAt = xPos;\n if (_currentView) {\n if (_currentView.pointAt) {\n _currentView.pointAt(_pointAt);\n }\n updateViewBottom();\n }\n };\n var setViewControlBarOffset = function setViewControlBarOffset(bottom) {\n _bottomOffset = bottom + BOTTOM_PADDING;\n updateViewBottom();\n };\n var setQuestionGrader = function setQuestionGrader(grader) {\n switch (grader) {\n case questionGrader.FATHOM:\n {\n _questionGrader = fathomGrader;\n break;\n }\n case questionGrader.XMP:\n {\n _questionGrader = xmpGrader;\n break;\n }\n default:\n throw new Error('Grader type not recognized');\n }\n };\n var startTrackingProgress = function startTrackingProgress() {\n if (_shouldReportViewedOnPageLoad) {\n return Promise$1.resolve();\n }\n return quizService.getAnalyticsRate().then(function (results) {\n _progressTracker = QuizProgressTracker$1.create(getMediaElement(), results.analyticsSampleRate, results.reportingRate);\n return Promise$1.resolve();\n });\n };\n var forceProgressUpdate = function forceProgressUpdate(sampleRateInMilliseconds, segmentsCompleted) {\n return quizService.sendProgress(sampleRateInMilliseconds, segmentsCompleted);\n };\n var onMediaFirstPlayerHandler = function onMediaFirstPlayerHandler() {\n init();\n };\n var onMediaControlsReady = function onMediaControlsReady() {\n // do not listen to another media controls ready event\n $container.off(events.Player.MediaControlsReady, onMediaControlsReady);\n setViewControlBarOffset(CONTROL_BAR_HEIGHT);\n if (!_shouldReportViewedOnPageLoad && !_mediaIsImage && _quizModel.useQuizApi && _quizModel.requireUserId && !playerConfiguration.getIsUserIdentified() && !playerConfiguration.ignoreQuizQuestions) {\n createSetupView();\n } else {\n _resolveQuizSetup();\n }\n };\n var bindToEvents = function bindToEvents() {\n $container.on(events.Media.FirstPlay, onMediaFirstPlayerHandler);\n $container.on(events.Player.MediaControlsReady, onMediaControlsReady);\n $container.on(events.Quizzing.ShowSubmissionRetryMessage, showSubmissionRetryMessage);\n $container.on(events.Quizzing.HideSubmissionRetryMessage, removeSubmissionRetryMessage);\n $container.on(events.Quizzing.QuizIsOutOfDate, showQuizIsOutOfDateMessage);\n $container.on(events.Quizzing.QuizBadDefinition, showQuizBadDefinitionMessage);\n };\n var destroy = function destroy() {\n destroyQuizSetupView();\n if (_currentView) {\n _currentView.removeView(true);\n _currentView = null;\n }\n quizService.abortPendingRequests();\n if ($container) {\n $container.off(events.Media.FirstPlay, onMediaFirstPlayerHandler);\n $container.off(events.Player.MediaControlsReady, onMediaControlsReady);\n $container.off(events.Quizzing.ShowSubmissionRetryMessage, showSubmissionRetryMessage);\n $container.off(events.Quizzing.HideSubmissionRetryMessage, removeSubmissionRetryMessage);\n $container.off(events.Quizzing.QuizIsOutOfDate, showQuizIsOutOfDateMessage);\n $container.off(events.Quizzing.QuizBadDefinition, showQuizBadDefinitionMessage);\n $container.off(events.Quizzing.SubmitQuestionSet, onSubmit);\n $container.off(events.Quizzing.CloseQuestionSetView, onCloseQuestionSetView);\n $container.off(events.Quizzing.RationaleActionLocation, onRationaleActionHandler);\n $container.off(events.Quizzing.RationaleActionJumpToTime, onRationaleActionHandler);\n }\n _progressTracker && _progressTracker.destroy();\n removeSubmissionRetryMessage();\n _quizOutOfDateMessageView && _quizOutOfDateMessageView.remove();\n _quizBadDefinitionMessageView && _quizBadDefinitionMessageView.remove();\n _quizModel = null;\n _numberQuestionSets = 0;\n _currentQuestionSetIndex = 0;\n _bottomOffset = 0;\n _pointAt = null;\n _quizEnabled = true;\n _quizReady = false;\n _mediaIsImage = false;\n _lastStatusMessage = '';\n _questionGrader = null;\n _quizSetupPromise = null;\n };\n var init = function init() {\n if (_quizModel.useQuizApi) {\n var startInstancePromise;\n if (_quizUserDetails) {\n startInstancePromise = startQuizApiInstance(_quizUserDetails.firstName, _quizUserDetails.lastName, _quizUserDetails.email);\n } else {\n startInstancePromise = startQuizApiInstance();\n }\n startInstancePromise[\"catch\"](function (e) {\n log.logException('Failed to initialize quiz - ' + e);\n });\n } else {\n $container.trigger(events.Quizzing.CreatedInstance);\n }\n _quizReady = true;\n };\n var simpleInit = function simpleInit() {\n if (!displaySetupView()) {\n startQuizApiInstance()[\"catch\"](function (e) {\n log.logException('Failed to initialize quiz - ' + e);\n });\n }\n };\n var populateQuizModel = function populateQuizModel(suspendedQuizData) {\n _quizModel.populateQuiz(suspendedQuizData);\n submitScoreToScormController();\n };\n var setQuizModel = function setQuizModel(newQuizModel) {\n _quizModel = newQuizModel;\n _numberQuestionSets = _quizModel.numberQuestionSets;\n scormController$1.quizModel = _quizModel;\n };\n\n // begin initialization of quiz controller\n _quizSetupPromise = new Promise$1(function (resolveQuizSetup) {\n _resolveQuizSetup = resolveQuizSetup;\n });\n setQuizModel(quizModel);\n bindToEvents();\n if (playerConfiguration.getFathomId()) {\n setQuestionGrader(questionGrader.FATHOM);\n } else {\n setQuestionGrader(questionGrader.XMP);\n }\n if (_shouldReportViewedOnPageLoad) {\n gatherSetupIfNeeded();\n simpleInit();\n forceProgressUpdate(100, [0]);\n }\n var fullControlsAreShownOnPageLoad = playerConfiguration.getPreload() === preloadOptions.metadata && mediaView.type !== mediaViewType.youtube;\n if (fullControlsAreShownOnPageLoad) {\n onMediaControlsReady();\n }\n return Object.defineProperties({\n destroy: destroy,\n hasMultipleQuestionSets: hasMultipleQuestionSets,\n getLastStatusMessage: getLastStatusMessage,\n displayNextQuestionSet: displayNextQuestionSet,\n findQuestionSet: findQuestionSet,\n findPrevMarkerTimeForMarker: findPrevMarkerTimeForMarker,\n updatePercentWatchedForQuestionSet: updatePercentWatchedForQuestionSet,\n displayConfirm: displayConfirm,\n showQuiz: showQuiz,\n hideQuiz: hideQuiz,\n pointViewAt: pointViewAt,\n startTrackingProgress: startTrackingProgress,\n forceProgressUpdate: forceProgressUpdate,\n populateQuizModel: populateQuizModel\n }, {\n quizIsSetupPromise: {\n get: function get() {\n return _quizSetupPromise;\n }\n },\n quizEnabled: {\n get: function get() {\n return _quizEnabled;\n },\n set: function set(value) {\n _quizEnabled = value;\n }\n },\n quizReady: {\n get: function get() {\n return _quizReady;\n }\n },\n hasQuiz: {\n get: function get() {\n return _quizModel && _quizModel.quizID;\n }\n },\n viewIsOpen: {\n get: function get() {\n return _currentView !== null;\n }\n },\n mediaIsImage: {\n set: function set(mediaIsImage) {\n _mediaIsImage = mediaIsImage;\n },\n get: function get() {\n return _mediaIsImage;\n }\n },\n quizModel: {\n get: function get() {\n return _quizModel;\n },\n set: setQuizModel\n },\n hasQuizQuestions: {\n get: hasQuizQuestions\n }\n });\n};\nvar QuizController$1 = {\n /**\n * Factory method that returns a new QuizController.\n * @function create\n * @memberof TSC.QuizController\n * @static\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.Quiz} quizModel\n * @param {TSC.BeforeAfterPlayControlsView} beforeAfterPlayControlsView\n * @param {boolean} enforceLinearAssessment\n * @return new QuizController instance\n */\n create: QuizController\n};\n\nvar SEEK_DELAY_IN_MILLISECONDS = 100;\n\n/**\n * @memberof TSC\n * @class QuizEventController\n * @classdesc Controller for managing quiz events\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.QuizController} quizController\n * @param {TSC.ProgressBarControlView} progressBarControlView\n * @param {boolean} enforceLinearAssessment\n * @param {TSC.IoOverlayView} ioOverlayView - IO Overlay View used to show the user messages\n *\n */\nvar QuizEventController = function QuizEventController($container, mediaView, quizController, progressBarControlView, enforceLinearAssessment, ioOverlayView) {\n if (!quizController) {\n throw new Error('Attempted to create quiz event controller with no quiz controller');\n }\n var _lastQuestionSetId;\n var _lastQuestionSetMarkerTime;\n var _quizzingErrorMessageBarView;\n var _isScrubbing = false;\n var updateQuizPointAtPosition = function updateQuizPointAtPosition() {\n if (!progressBarControlView) {\n return;\n }\n var playerXOffset = $container.offset().left;\n var markerXPosition = progressBarControlView.getXPositionForQuestionSetMarker(_lastQuestionSetId);\n var pointAtXPosition = markerXPosition - playerXOffset;\n quizController.pointViewAt(pointAtXPosition);\n };\n var seekToTime = function seekToTime(seekTime, playAfterSeek) {\n var safeSeekTime = videoApiUtils.getSafeSeekTime(mediaView.mediaElement, seekTime);\n $container.trigger(events.Media.SeekToTime, {\n time: safeSeekTime,\n playAfterSeek: playAfterSeek\n });\n };\n var updateQuizzing = function updateQuizzing(currentTimeInMilliseconds) {\n if (!quizController.quizEnabled || _isScrubbing) {\n return;\n }\n var numberMillisecondsInSecond = 1000;\n var qs = quizController.findQuestionSet(currentTimeInMilliseconds);\n if (qs.id < 0) {\n _lastQuestionSetId = -1;\n return;\n }\n if (_lastQuestionSetId !== qs.id) {\n viewHelper.saveActiveElement();\n // make sure control bar is shown up and auto hide is disabled.\n $container.trigger(events.Controls.Disable);\n $container.trigger(events.Controls.HideToc);\n _lastQuestionSetId = qs.id;\n _lastQuestionSetMarkerTime = qs.markerTime / numberMillisecondsInSecond;\n $container.playerState.pausedForQuiz = true;\n mediaView.mediaElement.pause();\n $container.trigger(events.Quizzing.Paused);\n\n // Try pausing and seeking YouTube until player confirms the video is in the correct position\n // Fixes issues with YouTube video playing in the background\n if (mediaView.type === mediaViewType.youtube) {\n var intervalId = setInterval(function () {\n mediaView.mediaElement.pause();\n seekToTime(_lastQuestionSetMarkerTime, false);\n if (mediaView.mediaElement.currentTime.toFixed(4) === _lastQuestionSetMarkerTime.toFixed(4) && mediaView.mediaElement.paused) {\n clearInterval(intervalId);\n }\n }, SEEK_DELAY_IN_MILLISECONDS);\n } else {\n setTimeout(function () {\n seekToTime(_lastQuestionSetMarkerTime, false);\n }, SEEK_DELAY_IN_MILLISECONDS);\n }\n quizController.displayConfirm(qs.id);\n updateQuizPointAtPosition();\n if (videoAnalytics.isEnabled()) {\n if (!isNaN(qs.markerTime) && videoAnalytics.isPercentWatchedInitialized()) {\n videoAnalytics.markTimeWatched(qs.markerTime);\n } else {\n log.logMessage('Player-view: videoAnalytics percent watched not initialized, or Quiz Marker time is NaN (' + qs.markerTime + ')');\n }\n var percentWatched = videoAnalytics.getPercentageWatchedForVideoSegment(quizController.findPrevMarkerTimeForMarker(qs.id), qs.markerTime);\n quizController.updatePercentWatchedForQuestionSet(_lastQuestionSetId, percentWatched);\n }\n }\n };\n var quizEventHandler = function quizEventHandler(event, data) {\n switch (event.type) {\n case events.Quizzing.ShowStartQuizPrompt:\n case events.Quizzing.ShowQuestionSetView:\n $container.trigger(events.Quizzing.MaximizeUI);\n $container.trigger(events.Quizzing.UIVisible);\n break;\n case events.Quizzing.Complete:\n case events.Quizzing.Review:\n $container.trigger(events.Quizzing.UIHidden);\n $container.trigger(events.Controls.Enable);\n viewHelper.focusPreviousElement();\n progressBarControlView.updateQuizMarkers();\n $container.playerState.pausedForQuiz = false;\n if (event.type === events.Quizzing.Review && enforceLinearAssessment) {\n var prevMarkerTimeInSeconds = quizController.findPrevMarkerTimeForMarker(_lastQuestionSetId) / 1000;\n _lastQuestionSetId = -1;\n seekToTime(prevMarkerTimeInSeconds, true);\n } else {\n mediaView.mediaElement.play();\n }\n break;\n case events.Quizzing.Begin:\n progressBarControlView.updateQuizMarkers();\n $container.trigger(events.Quizzing.QuizSetupComplete);\n break;\n case events.Quizzing.Skip:\n progressBarControlView.setShouldRespectQuizMarkers(false);\n $container.trigger(events.Quizzing.QuizSetupComplete);\n break;\n case events.Quizzing.Error:\n _quizzingErrorMessageBarView = MessageBarView$1.create($container, messageBarType.info, localizationStrings.getPlayerString(playerStringNames.txtVideoQuizNetworkErrorMessage), localizationStrings.getPlayerString(playerStringNames.close));\n break;\n case events.Quizzing.Status:\n ioOverlayView.displayMessage(data.message);\n break;\n case events.Quizzing.HideLoadingMessage:\n case events.Quizzing.Submitted:\n ioOverlayView.hideView();\n break;\n case events.Quizzing.CreatedInstance:\n progressBarControlView && progressBarControlView.updateQuizMarkers();\n if (quizController.hasQuiz && quizController.quizModel.quizInstanceID) {\n quizController.startTrackingProgress();\n var eventLabel = 'QIID_' + quizController.quizModel.quizInstanceID;\n mediaView.playbackQualityMetrics && mediaView.playbackQualityMetrics.setEventLabel(eventLabel);\n }\n $container.trigger(events.Quizzing.UIHidden);\n break;\n case events.Quizzing.RationaleActionJumpToTime:\n var jumpToTimeInSeconds = data.jumpToTime / 1000;\n progressBarControlView.allowSkipQuestionSetMarkersBeforeTime(jumpToTimeInSeconds);\n seekToTime(jumpToTimeInSeconds);\n break;\n }\n };\n var onLoadedMetadata = function onLoadedMetadata() {\n // check to see if quiz exists and it is ready to rumble\n if (!quizController.hasQuiz || quizController.hasQuiz && (!quizController.quizEnabled || quizController.quizReady)) {\n ioOverlayView.hideView();\n } else {\n // update overlay with status of quiz code\n var lastStatusMessage = quizController.getLastStatusMessage();\n if (lastStatusMessage) {\n mediaView.mediaElement.pause();\n ioOverlayView.displayMessage(lastStatusMessage);\n }\n }\n };\n var onVideoTimeUpdate = function onVideoTimeUpdate() {\n updateQuizzing(mediaView.currentTimeInMilliseconds);\n };\n var onSeeked = function onSeeked() {\n updateQuizzing(mediaView.currentTimeInMilliseconds);\n };\n var onVideoControlsVisible = function onVideoControlsVisible() {\n progressBarControlView.updateQuizMarkers();\n };\n var onScrubbingStarted = function onScrubbingStarted() {\n _isScrubbing = true;\n };\n var onScrubbingEnded = function onScrubbingEnded() {\n _isScrubbing = false;\n onVideoTimeUpdate();\n };\n var bindToEvents = function bindToEvents() {\n mediaView.mediaWrapper.on('ratechange', onVideoTimeUpdate, false);\n mediaView.mediaWrapper.on('play', onVideoTimeUpdate, false);\n var eventsToBind = {\n loadedmetadata: onLoadedMetadata,\n timeupdate: onVideoTimeUpdate,\n seeked: onSeeked\n };\n mediaView.mediaWrapper.on(eventsToBind);\n $container.on(events.Controls.VideoControlsVisible, onVideoControlsVisible);\n $container.on(events.Controls.PlayerResize, updateQuizPointAtPosition);\n $container.on(events.Quizzing.Complete, quizEventHandler);\n $container.on(events.Quizzing.Review, quizEventHandler);\n $container.on(events.Quizzing.Begin, quizEventHandler);\n $container.on(events.Quizzing.Skip, quizEventHandler);\n $container.on(events.Quizzing.Error, quizEventHandler);\n $container.on(events.Quizzing.Status, quizEventHandler);\n $container.on(events.Quizzing.SubmittingInstance, quizEventHandler);\n $container.on(events.Quizzing.Submitted, quizEventHandler);\n $container.on(events.Quizzing.CreatedInstance, quizEventHandler);\n $container.on(events.Quizzing.RationaleActionJumpToTime, quizEventHandler);\n $container.on(events.Quizzing.HideLoadingMessage, quizEventHandler);\n $container.on(events.Quizzing.ShowStartQuizPrompt, quizEventHandler);\n $container.on(events.Quizzing.ShowQuestionSetView, quizEventHandler);\n $container.on(events.Scrubbing.Started, onScrubbingStarted);\n $container.on(events.Scrubbing.Ended, onScrubbingEnded);\n };\n var unbindToEvents = function unbindToEvents() {\n mediaView.mediaWrapper.off('ratechange', onVideoTimeUpdate, false);\n mediaView.mediaWrapper.off('play', onVideoTimeUpdate, false);\n var eventsToBind = {\n loadedmetadata: onLoadedMetadata,\n timeupdate: onVideoTimeUpdate,\n seeked: onSeeked\n };\n mediaView.mediaWrapper.off(eventsToBind);\n $container.off(events.Controls.VideoControlsVisible, onVideoControlsVisible);\n $container.off(events.Controls.PlayerResize, updateQuizPointAtPosition);\n $container.off(events.Quizzing.Complete, quizEventHandler);\n $container.off(events.Quizzing.Review, quizEventHandler);\n $container.off(events.Quizzing.Begin, quizEventHandler);\n $container.off(events.Quizzing.Skip, quizEventHandler);\n $container.off(events.Quizzing.Error, quizEventHandler);\n $container.off(events.Quizzing.Status, quizEventHandler);\n $container.off(events.Quizzing.SubmittingInstance, quizEventHandler);\n $container.off(events.Quizzing.Submitted, quizEventHandler);\n $container.off(events.Quizzing.CreatedInstance, quizEventHandler);\n $container.off(events.Quizzing.RationaleActionJumpToTime, quizEventHandler);\n $container.off(events.Quizzing.HideLoadingMessage, quizEventHandler);\n $container.off(events.Quizzing.ShowStartQuizPrompt, quizEventHandler);\n $container.off(events.Quizzing.ShowQuestionSetView, quizEventHandler);\n $container.off(events.Scrubbing.Started, onScrubbingStarted);\n $container.off(events.Scrubbing.Ended, onScrubbingEnded);\n };\n var destroy = function destroy() {\n unbindToEvents();\n _quizzingErrorMessageBarView && _quizzingErrorMessageBarView.remove();\n };\n videoApiUtils.setQuizController(quizController);\n progressBarControlView && progressBarControlView.setShouldRespectQuizMarkers(quizController.quizModel && quizController.quizEnabled && !playerConfiguration.ignoreQuizQuestions);\n quizController.mediaIsImage = mediaView.type === mediaViewType.image;\n bindToEvents();\n return Object.defineProperties({\n destroy: destroy\n }, {});\n};\nvar QuizEventController$1 = {\n /**\n * Factory method that returns a new QuizEventController.\n * @function create\n * @memberof TSC.QuizEventController\n * @static\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.QuizController} quizController\n * @param {TSC.ProgressBarControlView} progressBarControlView\n * @param {boolean} enforceLinearAssessment\n * @param {TSC.IoOverlayView} ioOverlayView - IO Overlay View used to show the user messages\n * @return new QuizEventController instance\n */\n create: QuizEventController\n};\n\nvar EVENT_PERCENT_WATCH_INC = 10;\nvar MAX_PERCENT = 100;\n\n/**\n * @memberof TSC\n * @class MediaAnalyticsController\n * @classdesc Controller for managing media analytics\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.MediaList} mediaList\n * @param {TSC.QuizController} quizController\n * @param {TSC.playerConfiguration} playerConfiguration\n */\nvar MediaAnalyticsController = function MediaAnalyticsController($container, mediaView, mediaList, quizController, playerConfiguration) {\n var _eventPlayTracking = true;\n var _eventLastPercentReported = 0;\n var doesSCORMModuleNeedToResumeLastTime = function doesSCORMModuleNeedToResumeLastTime() {\n return mediaView.supportsSCORM && playerConfiguration.isScormLesson && scormController$1.supportsResumeSession && scormController$1.initialVideoTimeInSeconds > 0;\n };\n var initVideoAnalytics = function initVideoAnalytics() {\n videoAnalytics.initPercentWatched(mediaView.mediaElement.duration * 1000);\n if (doesSCORMModuleNeedToResumeLastTime()) {\n resumeSCORMSession(scormController$1.initialVideoTimeInSeconds, scormController$1.initialVideoAnalyticsSnapshot);\n $container.trigger(events.Media.SeekToTime, {\n time: scormController$1.initialVideoTimeInSeconds,\n playAfterSeek: true\n });\n }\n };\n var updateAnalytics = function updateAnalytics(currentTimeInMilliseconds) {\n if (!mediaView.mediaElement.duration) {\n return;\n }\n if (!videoAnalytics.isEnabled()) {\n return;\n }\n if (!videoAnalytics.isPercentWatchedInitialized()) {\n initVideoAnalytics();\n }\n if (!isNaN(currentTimeInMilliseconds)) {\n videoAnalytics.markTimeWatched(currentTimeInMilliseconds);\n } else {\n log.logMessage('Player-view: currentTime is NaN (' + currentTimeInMilliseconds + ')');\n }\n var percentWatched = Math.round(videoAnalytics.getPercentageWatched() * 100);\n if (scormController$1.initialized) {\n scormController$1.submitVideoWatchedPercentage(0.01 * percentWatched, videoAnalytics.getCurrentPlayTime());\n }\n if (playerConfiguration.getTrackEvents()) {\n if (percentWatched >= _eventLastPercentReported + EVENT_PERCENT_WATCH_INC) {\n while (_eventLastPercentReported + EVENT_PERCENT_WATCH_INC <= percentWatched) {\n _eventLastPercentReported += EVENT_PERCENT_WATCH_INC;\n if (_eventLastPercentReported > MAX_PERCENT) {\n _eventLastPercentReported = MAX_PERCENT;\n }\n analyticsService.sendEvent(events.Analytics.VideoPercentViewed, 'Viewed: ' + _eventLastPercentReported + ' Percent');\n analyticsService.sendGA4Event(events.GA4.VideoPercentViewed, {\n percent_viewed: _eventLastPercentReported\n }); // eslint-disable-line\n }\n }\n }\n };\n var handleTimeUpdate = function handleTimeUpdate(currentTimeInMilliseconds) {\n if (videoAnalytics.isEnabled()) {\n updateAnalytics(currentTimeInMilliseconds);\n }\n };\n var onVideoTimeUpdate = function onVideoTimeUpdate() {\n handleTimeUpdate(mediaView.currentTimeInMilliseconds);\n };\n var onSeeked = function onSeeked() {\n handleTimeUpdate(mediaView.currentTimeInMilliseconds);\n };\n var onCanPlayVideo = function onCanPlayVideo() {\n if (videoAnalytics.isEnabled()) {\n videoAnalytics.setVideoLoadEndTime(new Date().getTime());\n if (playerConfiguration.getTrackEvents()) {\n var eventAction = playerConfiguration.getAltEventCategoryAsFilename() ? analyticsService.getCategory() : mediaList.currentMedia.uri;\n if (playerConfiguration.getAltLoadTimeAsSeconds()) {\n analyticsService.sendEvent(events.Analytics.VideoLoadingTimeInSeconds, eventAction, videoAnalytics.getVideoLoadTime() / 1000);\n analyticsService.sendGA4Event(events.GA4.VideoLoadingTimeInSeconds, {\n loading_duration: videoAnalytics.getVideoLoadTime() / 1000\n }); // eslint-disable-line\n } else {\n analyticsService.sendEvent(events.Analytics.VideoLoadingTime, eventAction, videoAnalytics.getVideoLoadTime());\n analyticsService.sendGA4Event(events.GA4.VideoLoadingTime, {\n loading_duration: videoAnalytics.getVideoLoadTime()\n }); // eslint-disable-line\n }\n }\n }\n mediaView.mediaWrapper.off('canplay', onCanPlayVideo);\n };\n var resetPlayStartAnalytics = function resetPlayStartAnalytics() {\n if (videoAnalytics.isEnabled()) {\n videoAnalytics.setVideoLoadStartTime(new Date().getTime());\n }\n if (playerConfiguration.getTrackEvents() && _eventPlayTracking) {\n _eventPlayTracking = false;\n var videoStartedEventAction = playerConfiguration.getAltEventCategoryAsFilename() ? analyticsService.getCategory() : mediaList.currentMedia.uri;\n analyticsService.sendEvent(events.Analytics.VideoStarted, videoStartedEventAction);\n analyticsService.sendEvent(events.Analytics.VideoPercentViewed, 'Viewed: 0 Percent');\n analyticsService.sendGA4Event(events.GA4.VideoStarted, null);\n analyticsService.sendGA4Event(events.GA4.VideoPercentViewed, {\n percent_viewed: 0\n }); // eslint-disable-line\n }\n };\n var onMediaEnd = function onMediaEnd(e, eventData) {\n if (eventData.isPlaybackEnded && playerConfiguration.getTrackEvents()) {\n analyticsService.sendEvent(events.Analytics.VideoFinishedAction, playerConfiguration.getEndActionParam());\n analyticsService.sendGA4Event(events.GA4.VideoFinishedAction, {\n finished_action: playerConfiguration.getEndActionParam()\n }); // eslint-disable-line\n }\n };\n var onVideoReplayHandler = function onVideoReplayHandler() {\n if (playerConfiguration.getTrackEvents()) {\n var eventAction = playerConfiguration.getAltEventCategoryAsFilename() ? analyticsService.getCategory() : mediaList.currentMedia.uri;\n analyticsService.sendEvent(events.Analytics.VideoReplay, eventAction);\n analyticsService.sendGA4Event(events.GA4.VideoReplay, null);\n }\n };\n var onMediaWrapperMediaEnd = function onMediaWrapperMediaEnd() {\n if (playerConfiguration.getTrackEvents()) {\n var eventAction = playerConfiguration.getAltEventCategoryAsFilename() ? analyticsService.getCategory() : mediaList.currentMedia.uri;\n analyticsService.sendEvent(events.Analytics.VideoFinished, eventAction);\n analyticsService.sendGA4Event(events.GA4.VideoFinished, null);\n }\n };\n var onOpenExternalLink = function onOpenExternalLink() {\n var eventAction = playerConfiguration.getAltEventCategoryAsFilename() ? analyticsService.getCategory() : mediaList.currentMedia.uri;\n analyticsService.sendEvent(events.Analytics.OpenExternalLinkView, eventAction);\n analyticsService.sendGA4Event(events.GA4.OpenExternalLinkView, null);\n };\n var onClickExternalLink = function onClickExternalLink() {\n var eventAction = playerConfiguration.getAltEventCategoryAsFilename() ? analyticsService.getCategory() : mediaList.currentMedia.uri;\n analyticsService.sendEvent(events.Analytics.OpenExternalLinkClick, eventAction);\n analyticsService.sendGA4Event(events.GA4.OpenExternalLinkClick, null);\n };\n var resumeSCORMSession = function resumeSCORMSession(initialVideoTimeInSeconds, initialVideoAnalyticsSnapshot) {\n videoAnalytics.populateVideoSegmentsWatch(initialVideoAnalyticsSnapshot);\n videoAnalytics.markTimeWatched(initialVideoTimeInSeconds * 1000);\n };\n var onStartedPlayback = function onStartedPlayback() {\n var quizRequiresAnalytics = quizController && quizController.hasQuiz && quizController.quizEnabled;\n var playerConfigurationRequiresAnalytics = playerConfiguration.getTrackEvents() || playerConfiguration.isScormLesson || playerConfiguration.getReportScormComplete() || quizRequiresAnalytics;\n var shouldTrackVideoAnalytics = !mediaList.isPlaylist && playerConfigurationRequiresAnalytics;\n if (shouldTrackVideoAnalytics) {\n videoAnalytics.setEnabled(true);\n }\n };\n var onPlayerInitialized = function onPlayerInitialized() {\n performanceWrapper.createMeasure(events.Timing.PlayerLoaded, events.Timing.PlayerLoaded);\n performanceWrapper.createMeasure(events.Timing.PlayerInitialized, events.Timing.PlayerInitialized);\n analyticsService.sendEvent(events.Analytics.ContentLoaded, mediaList.currentMedia.uri);\n analyticsService.sendGA4Event(events.GA4.PlayerInitialized, null);\n };\n var bindToEvents = function bindToEvents() {\n $container.on(events.Controls.StartedPlayback, onStartedPlayback);\n $container.on(events.Controls.PlayerInitialized, onPlayerInitialized);\n $container.on(events.Media.End, onMediaEnd);\n $container.on(events.Media.Replay, onVideoReplayHandler);\n $container.on(events.ExternalLinkView.Open, onOpenExternalLink);\n $container.on(events.ExternalLinkView.Clicked, onClickExternalLink);\n mediaView.mediaWrapper.on('ratechange', onVideoTimeUpdate, false);\n mediaView.mediaWrapper.on('play', onVideoTimeUpdate, false);\n var eventsToBind = {\n timeupdate: onVideoTimeUpdate,\n canplay: onCanPlayVideo,\n seeked: onSeeked,\n ended: onMediaWrapperMediaEnd\n };\n mediaView.mediaWrapper.on(eventsToBind);\n mediaView.mediaElement.addEventListener(events.Media.Play, resetPlayStartAnalytics);\n };\n var unbindToEvents = function unbindToEvents() {\n $container.off(events.Controls.StartedPlayback, onStartedPlayback);\n $container.off(events.Controls.PlayerInitialized, onPlayerInitialized);\n $container.off(events.Media.End, onMediaEnd);\n $container.on(events.Media.Replay, onVideoReplayHandler);\n $container.on(events.ExternalLinkView.Open, onOpenExternalLink);\n $container.on(events.ExternalLinkView.Clicked, onClickExternalLink);\n mediaView.mediaWrapper.off('ratechange', onVideoTimeUpdate, false);\n mediaView.mediaWrapper.off('play', onVideoTimeUpdate, false);\n var eventsToBind = {\n timeupdate: onVideoTimeUpdate,\n canplay: onCanPlayVideo,\n seeked: onSeeked,\n ended: onMediaWrapperMediaEnd\n };\n mediaView.mediaWrapper.off(eventsToBind);\n mediaView.mediaElement.removeEventListener(events.Media.Play, resetPlayStartAnalytics);\n };\n var destroy = function destroy() {\n unbindToEvents();\n };\n bindToEvents();\n if (mediaView.mediaWrapper.metadataReady) {\n mediaView.mediaWrapper.metadataReady.then(function () {\n return mediaView.mediaWrapper.canPlayReady.then(function () {\n onCanPlayVideo();\n });\n });\n }\n return Object.defineProperties({\n destroy: destroy\n }, {});\n};\nvar MediaAnalyticsController$1 = {\n /**\n * Factory method that returns a new MediaAnalyticsController.\n * @function create\n * @memberof TSC.MediaAnalyticsController\n * @static\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.MediaList} mediaList\n * @param {TSC.QuizController} quizController\n * @param {TSC.playerConfiguration} playerConfiguration\n * @return new MediaAnalyticsController instance\n */\n create: MediaAnalyticsController\n};\n\nvar enterKeyCode = 13;\nvar spacebarKeyCode = 32;\n\n/**\n * @memberof TSC\n * @class PluginEventsController\n * @classdesc Controller for managing XMP features\n * @param {jQuery} $container - Smart Player main container jquery element\n *\n */\nvar PluginEventsController = function PluginEventsController($container) {\n var _$mediaPluginContainer = $container.find('.media-plugin-container');\n _$mediaPluginContainer.hide();\n var onMediaPluginContainerKeyHandler = function onMediaPluginContainerKeyHandler(e) {\n if (e.type === 'keydown' && (e.keyCode === enterKeyCode || e.keyCode === spacebarKeyCode)) {\n $container.trigger(events.Plugin.MediaAreaPluginKeyDown);\n } else if (e.type === 'keyup' && (e.keyCode === enterKeyCode || e.keyCode === spacebarKeyCode)) {\n $container.trigger(events.Plugin.MediaAreaPluginKeyUp);\n }\n };\n var onMediaPluginContainerMouseHandler = function onMediaPluginContainerMouseHandler(e) {\n if (e.type === 'mousedown') {\n $container.trigger(events.Plugin.MediaAreaPluginMouseDown);\n } else if (e.type === 'mouseup') {\n $container.trigger(events.Plugin.MediaAreaPluginMouseUp);\n }\n };\n var initMediaPlugins = function initMediaPlugins() {\n var pluginController = playerConfiguration.getPluginController();\n if (!pluginController) {\n return;\n }\n _$mediaPluginContainer.show();\n pluginController.initializePluginsForViewElement(supportedPluginViewElements.MEDIA, _$mediaPluginContainer);\n };\n var onPluginAdded = function onPluginAdded(eventName, data) {\n if (data.viewElementType === supportedPluginViewElements.MEDIA) {\n initMediaPlugins();\n }\n };\n var bindToEvents = function bindToEvents() {\n $container.on(events.Plugin.Added, onPluginAdded);\n _$mediaPluginContainer.on('mousedown', onMediaPluginContainerMouseHandler);\n _$mediaPluginContainer.on('mouseup', onMediaPluginContainerMouseHandler);\n _$mediaPluginContainer.on('keydown', onMediaPluginContainerKeyHandler);\n _$mediaPluginContainer.on('keyup', onMediaPluginContainerKeyHandler);\n };\n var unbindToEvents = function unbindToEvents() {\n $container.off(events.Plugin.Added, onPluginAdded);\n _$mediaPluginContainer.off('mousedown', onMediaPluginContainerMouseHandler);\n _$mediaPluginContainer.off('mouseup', onMediaPluginContainerMouseHandler);\n _$mediaPluginContainer.off('keydown', onMediaPluginContainerKeyHandler);\n _$mediaPluginContainer.off('keyup', onMediaPluginContainerKeyHandler);\n };\n var destroy = function destroy() {\n unbindToEvents();\n };\n bindToEvents();\n initMediaPlugins();\n return Object.defineProperties({\n destroy: destroy\n }, {});\n};\nvar PluginEventsController$1 = {\n /**\n * Factory method that returns a new PluginEventsController.\n * @function create\n * @memberof TSC.PluginEventsController\n * @static\n * @param {jQuery} $container - Smart Player main container jquery element\n * @return new PluginEventsController instance\n */\n create: PluginEventsController\n};\n\n/**\n * @memberof TSC\n * @class MediaSessionController\n * @classdesc Media Session controller will interface media with system controls\n * @param {jQuery} $rootSmartPlayerElement\n * @param {HTMLVideoElement} mediaElement\n * @param {string} mediaTitle\n * @param {string} mediaPosterImageSrc\n */\nvar MediaSessionController = function MediaSessionController($rootSmartPlayerElement, mediaElement, mediaTitle, mediaPosterImageSrc) {\n var _windowRef = windowWrapper.getWindow();\n var _navigatorRef = windowWrapper.getNavigator();\n // This prevents unnecessary errors when Media Session API is not available.\n var _mediaSessionRef = _navigatorRef.mediaSession || {};\n _mediaSessionRef.setActionHandler = _navigatorRef.mediaSession.setActionHandler || function () {}; // eslint-disable-line\n _windowRef.MediaMetadata = _windowRef.MediaMetadata || function () {}; // eslint-disable-line\n\n var _metaDataSet = false;\n var setMetaData = function setMetaData() {\n _mediaSessionRef.metadata = new _windowRef.MediaMetadata({\n title: mediaTitle,\n artwork: [{\n src: mediaPosterImageSrc\n }]\n });\n _metaDataSet = true;\n updateMediaSessionState();\n };\n var updateMediaSessionState = function updateMediaSessionState() {\n if (!_metaDataSet) {\n return;\n }\n _mediaSessionRef.playbackState = mediaElement.paused ? 'paused' : 'playing';\n _mediaSessionRef.setPositionState({\n duration: mediaElement.duration,\n playbackRate: mediaElement.playbackRate,\n position: mediaElement.currentTime\n });\n };\n var onPlayAction = function onPlayAction() {\n if ($rootSmartPlayerElement.playerState.pausedForQuiz) {\n return;\n }\n mediaElement.play();\n };\n var onPauseAction = function onPauseAction() {\n if ($rootSmartPlayerElement.playerState.pausedForQuiz) {\n return;\n }\n mediaElement.pause();\n };\n var onSeekToAction = function onSeekToAction(details) {\n if ($rootSmartPlayerElement.playerState.pausedForQuiz) {\n return;\n }\n $rootSmartPlayerElement.trigger(events.Media.SeekToTime, {\n time: details.seekTime\n });\n };\n var bindEvents = function bindEvents() {\n mediaElement.addEventListener('loadedmetadata', setMetaData);\n mediaElement.addEventListener('playing', updateMediaSessionState);\n mediaElement.addEventListener('pause', updateMediaSessionState);\n mediaElement.addEventListener('durationchange', updateMediaSessionState);\n mediaElement.addEventListener('ratechange', updateMediaSessionState);\n mediaElement.addEventListener('timeupdate', updateMediaSessionState);\n _mediaSessionRef.setActionHandler('play', onPlayAction);\n _mediaSessionRef.setActionHandler('pause', onPauseAction);\n _mediaSessionRef.setActionHandler('seekto', onSeekToAction);\n };\n var destroy = function destroy() {\n mediaElement.removeEventListener('loadedmetadata', setMetaData);\n mediaElement.removeEventListener('playing', updateMediaSessionState);\n mediaElement.removeEventListener('pause', updateMediaSessionState);\n mediaElement.removeEventListener('durationchange', updateMediaSessionState);\n mediaElement.removeEventListener('ratechange', updateMediaSessionState);\n mediaElement.removeEventListener('timeupdate', updateMediaSessionState);\n };\n bindEvents();\n return Object.defineProperties({\n destroy: destroy\n }, {});\n};\nvar isSupported = function isSupported() {\n return !!windowWrapper.getNavigator().mediaSession;\n};\nvar MediaSessionController$1 = {\n /**\n * Factory method that returns a new MediaSessionController object\n * @function create\n * @memberof TSC.MediaSessionController\n * @param {jQuery} $rootSmartPlayerElement\n * @param {HTMLVideoElement} mediaElement\n * @param {string} mediaTitle\n * @param {string} mediaPosterImageSrc\n * @static\n * @return MediaSessionController instance\n */\n create: MediaSessionController,\n /**\n * Is the Media Session api supported\n * @function isSupported\n * @memberof TSC.MediaSessionController\n * @static\n * @return {boolean} Is the api supported\n */\n isSupported: isSupported\n};\n\n/**\n * @memberof TSC\n * @class MediaExtensionsController\n * @classdesc Controller for managing XMP features\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.XmpModel} xmpModel\n * @param {TSC.Quiz} quizModel\n * @param {TSC.MediaList} mediaList\n * @param {TSC.CaptionService} captionService\n * @param {TSC.playerConfiguration} playerConfiguration\n * @param {TSC.ResponsiveController} responsiveController\n * @param {TSC.TabController} tabController\n * @param {TSC.ProgressBarControlView} progressBarControlView\n * @param {TSC.BeforeAfterPlayControlsView} beforeAfterPlayControlsView\n * @param {TSC.IoOverlayView} ioOverlayView\n *\n */\nvar MediaExtensionsController = function MediaExtensionsController($container, mediaView, xmpModel, quizModel, mediaList, captionService, playerConfiguration, responsiveController, tabController, progressBarControlView, beforeAfterPlayControlsView, ioOverlayView) {\n var _hotspotController;\n var _captionController;\n var _tableOfContentsController;\n var _audioDescriptionController;\n var _endActionsController;\n var _quizController;\n var _quizEventController;\n var _mediaAnalyticsController;\n var _pluginEventsController;\n var _mediaSessionController;\n var modifyPlayerConfigurationBasedOnDevice = function modifyPlayerConfigurationBasedOnDevice() {\n // ignore auto play if this is an iOS device that plays video inline or there is a quiz present\n // may want to move this out of the view at some point.\n var hasAnEnabledQuiz = _quizController && _quizController.hasQuiz && _quizController.quizEnabled;\n if ((deviceInfo.isIOS() || deviceInfo.isAndroid() || hasAnEnabledQuiz) && !playerConfiguration.getMobileWebViewCanAutoPlay()) {\n playerConfiguration.setAutoPlayMedia(false);\n }\n };\n var setupImageControllers = function setupImageControllers() {\n if (quizModel) {\n _quizController = QuizController$1.create($container, mediaView, quizModel, beforeAfterPlayControlsView, playerConfiguration.enforceLinearAssessment);\n _quizEventController = QuizEventController$1.create($container, mediaView, _quizController, progressBarControlView, playerConfiguration.enforceLinearAssessment, ioOverlayView);\n }\n _mediaAnalyticsController = MediaAnalyticsController$1.create($container, mediaView, mediaList, _quizController, playerConfiguration);\n };\n var getMediaTitle = function getMediaTitle() {\n if (playerConfiguration.mediaTitle) {\n return playerConfiguration.mediaTitle;\n } else if (playerConfiguration.tocTitle) {\n return playerConfiguration.tocTitle;\n } else if (xmpModel && xmpModel.title) {\n return xmpModel.title;\n }\n return localizationStrings.getPlayerString(playerStringNames.defaultMediaTitle);\n };\n var getMediaPosterSrc = function getMediaPosterSrc() {\n return playerConfiguration.getPosterImageSrc() || '';\n };\n var setupVideoControllers = function setupVideoControllers() {\n _endActionsController = EndActionsController$1.create($container, mediaView, progressBarControlView, beforeAfterPlayControlsView);\n if (playerConfiguration.audioDescriptionMediaSrc) {\n _audioDescriptionController = AudioDescriptionController$1.create($container, mediaView, playerConfiguration.audioDescriptionMediaSrc);\n }\n if (quizModel) {\n _quizController = QuizController$1.create($container, mediaView, quizModel, beforeAfterPlayControlsView, playerConfiguration.enforceLinearAssessment);\n _quizEventController = QuizEventController$1.create($container, mediaView, _quizController, progressBarControlView, playerConfiguration.enforceLinearAssessment, ioOverlayView);\n }\n _mediaAnalyticsController = MediaAnalyticsController$1.create($container, mediaView, mediaList, _quizController, playerConfiguration);\n if (MediaSessionController$1.isSupported()) {\n _mediaSessionController = MediaSessionController$1.create($container, mediaView.mediaElement, getMediaTitle(), getMediaPosterSrc());\n }\n if (mediaView.supportsSCORM && playerConfiguration.isScormLesson) {\n if (_quizController && _quizController.quizModel !== null && (_quizController.quizModel.reportMethod === reportType.SCORM || _quizController.quizModel.reportMethod === reportType.APIANDSCORM)) {\n scormController$1.submitScore(0, false);\n }\n\n // restore quizzing model state and seek video if not using TechSmith Quiz Service (it can not resume a quiz)\n if (_quizController && _quizController.quizModel && _quizController.quizModel.reportMethod === reportType.SCORM && scormController$1.initialQuizModelSnapshot) {\n _quizController.populateQuizModel(scormController$1.initialQuizModelSnapshot);\n progressBarControlView.updateQuizMarkers();\n }\n scormController$1.initView($container);\n }\n var hasCaptionItems = xmpModel && xmpModel.hasCaptionItems || captionService.captionTrack;\n if (hasCaptionItems) {\n _captionController = CaptionController$1.create($container, mediaView, xmpModel, mediaList, captionService);\n }\n var hasHotspotItems = xmpModel && xmpModel.hasHotspotItems;\n if (hasHotspotItems) {\n _hotspotController = HotspotController$1.create($container, mediaView, xmpModel, mediaList, tabController);\n }\n var hasTableOfContents = xmpModel && xmpModel.hasSearchableItems;\n if (hasTableOfContents) {\n _tableOfContentsController = TableOfContentsController$1.create($container, mediaView, xmpModel, mediaList, progressBarControlView, playerConfiguration);\n }\n };\n var setupControllers = function setupControllers() {\n _pluginEventsController = PluginEventsController$1.create($container);\n if (mediaView.type === mediaViewType.image) {\n setupImageControllers();\n } else {\n setupVideoControllers();\n }\n };\n var preventEvent = function preventEvent(e) {\n e.stopImmediatePropagation();\n e.preventDefault();\n return false;\n };\n var disableHighlightOnMouseDown = function disableHighlightOnMouseDown() {\n highlightDisabler.disableHighlights($(this));\n };\n var activateHighlightDisabler = function activateHighlightDisabler() {\n $container.on('mousedown', '*', disableHighlightOnMouseDown);\n };\n var applyCustomBackgroundColor = function applyCustomBackgroundColor() {\n $container.css('background-color', playerConfiguration.getBackgroundColor());\n };\n var disableContextMenuIfNeeded = function disableContextMenuIfNeeded() {\n if (playerConfiguration.getDisableContextMenuForVideo()) {\n $container.on('contextmenu', preventEvent);\n }\n };\n var configurePlayer = function configurePlayer() {\n modifyPlayerConfigurationBasedOnDevice();\n activateHighlightDisabler();\n applyCustomBackgroundColor();\n disableContextMenuIfNeeded();\n responsiveController.monitorContainerSize();\n if (!_quizController) {\n $container.trigger(events.Player.MediaExtensionsReady);\n } else {\n _quizController.quizIsSetupPromise.then(function () {\n $container.trigger(events.Player.MediaExtensionsReady);\n });\n }\n };\n var destroy = function destroy() {\n _hotspotController && _hotspotController.destroy();\n _captionController && _captionController.destroy();\n _tableOfContentsController && _tableOfContentsController.destroy();\n _audioDescriptionController && _audioDescriptionController.destroy();\n _endActionsController && _endActionsController.destroy();\n _quizController && _quizController.destroy();\n _quizEventController && _quizEventController.destroy();\n _mediaAnalyticsController && _mediaAnalyticsController.destroy();\n _pluginEventsController && _pluginEventsController.destroy();\n _mediaSessionController && _mediaSessionController.destroy();\n $container.off('mousedown', '*', disableHighlightOnMouseDown);\n $container.off('contextmenu', preventEvent);\n responsiveController.clearContainerMonitors();\n };\n setupControllers();\n configurePlayer();\n return Object.defineProperties({\n destroy: destroy\n }, {\n /**\n * @public\n * @readonly\n * @memberof TSC.MediaExtensionsController\n * @property {TSC.CaptionController} captionController - the caption controller\n */\n captionController: {\n get: function get() {\n return _captionController;\n }\n }\n });\n};\nvar MediaExtensionsController$1 = {\n /**\n * Factory method that returns a new MediaExtensionsController.\n * @function create\n * @memberof TSC.MediaExtensionsController\n * @static\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.XmpModel} xmpModel\n * @param {TSC.Quiz} quizModel\n * @param {TSC.MediaList} mediaList\n * @param {TSC.CaptionService} captionService\n * @param {TSC.playerConfiguration} playerConfiguration\n * @param {TSC.TabController} tabController\n * @param {TSC.ResponsiveController} responsiveController\n * @param {TSC.ProgressBarControlView} progressBarControlView\n * @param {TSC.BeforeAfterPlayControlsView} beforeAfterPlayControlsView\n * @param {TSC.IoOverlayView} ioOverlayView\n * @return new MediaExtensionsController instance\n */\n create: MediaExtensionsController\n};\n\n/**\n * @memberof TSC\n * @class TabController\n * @classdesc Controller for tabs\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {jQuery} $defaultFirstTabEnabledElement - The default first tab that should be enabled\n * @param {jQuery} $defaultLastTabEnabledElement - The default last tab that should be enabled\n *\n */\nvar TabController = function TabController($container, $defaultFirstTabEnabledElement, $defaultLastTabEnabledElement) {\n var _defaultFirstTabEnabledElement = $defaultFirstTabEnabledElement;\n var _defaultLastTabEnabledElement = $defaultLastTabEnabledElement;\n var _firstTabEnabledElement = null;\n var _lastTabEnabledElement = null;\n var _playerInFullScreenMode = false;\n var onFullScreenChange = function onFullScreenChange(event, eventData) {\n _playerInFullScreenMode = eventData.inFullScreen;\n };\n var unbindEventsToTabEnabledElement = function unbindEventsToTabEnabledElement(element) {\n if (element) {\n element.off('keydown');\n }\n };\n var setFirstTabEnabledElement = function setFirstTabEnabledElement(firstTabEnabledElement) {\n if (_firstTabEnabledElement) {\n unbindEventsToTabEnabledElement(_firstTabEnabledElement);\n }\n if (firstTabEnabledElement === null) {\n _firstTabEnabledElement = _defaultFirstTabEnabledElement;\n } else {\n _firstTabEnabledElement = firstTabEnabledElement;\n }\n _firstTabEnabledElement.on('keydown', function (e) {\n if (_playerInFullScreenMode && keys.isKeyOfType(e.key, keys.keyTypes.tab) && e.shiftKey === true) {\n e.preventDefault();\n _lastTabEnabledElement.focus();\n }\n });\n };\n var setLastTabEnabledElement = function setLastTabEnabledElement(lastTabEnabledElement) {\n if (_lastTabEnabledElement) {\n unbindEventsToTabEnabledElement(_lastTabEnabledElement);\n }\n if (lastTabEnabledElement === null) {\n _lastTabEnabledElement = _defaultLastTabEnabledElement;\n } else {\n _lastTabEnabledElement = lastTabEnabledElement;\n }\n _lastTabEnabledElement.on('keydown', function (e) {\n if (_playerInFullScreenMode && keys.isKeyOfType(e.key, keys.keyTypes.tab) && e.shiftKey === false) {\n e.preventDefault();\n _firstTabEnabledElement.focus();\n }\n });\n };\n var initController = function initController() {\n if (!_defaultFirstTabEnabledElement || !_defaultLastTabEnabledElement) {\n throw new Error('Tab controller is missing a default tab enabled element');\n }\n setFirstTabEnabledElement(_defaultFirstTabEnabledElement);\n setLastTabEnabledElement(_defaultLastTabEnabledElement);\n $container.on(events.Controls.FullScreenChange, onFullScreenChange);\n };\n var destroy = function destroy() {\n unbindEventsToTabEnabledElement(_firstTabEnabledElement);\n unbindEventsToTabEnabledElement(_lastTabEnabledElement);\n $container.off(events.Controls.FullScreenChange, onFullScreenChange);\n };\n initController();\n return Object.defineProperties({\n destroy: destroy\n }, {\n firstTabEnabledElement: {\n get: function get() {\n return _firstTabEnabledElement;\n },\n set: setFirstTabEnabledElement\n },\n lastTabEnabledElement: {\n get: function get() {\n return _lastTabEnabledElement;\n },\n set: setLastTabEnabledElement\n }\n });\n};\nvar TabController$1 = {\n create: TabController\n};\n\n/**\n * @memberof TSC\n * @class ExternalEventsController\n * @classdesc Controller for managing external events\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.MediaList} mediaList\n * @param {Object} playerViewEventCallbacks\n *\n */\nvar ExternalEventsController = function ExternalEventsController($container, mediaView, mediaList, playerViewEventCallbacks) {\n var onLoadedMetadata = function onLoadedMetadata() {\n playerViewEventCallbacks[events.External.MediaReady].forEach(function (callback) {\n callback();\n });\n };\n var onFullScreenChange = function onFullScreenChange() {\n playerViewEventCallbacks[events.External.PlayerFullScreenModeChanged].forEach(function (callback) {\n callback();\n });\n };\n var onTheaterModeChanged = function onTheaterModeChanged(e, eventData) {\n var newDisplayMode = eventData && eventData.displayMode;\n playerViewEventCallbacks[events.External.DisplayModeChanged].forEach(function (callback) {\n callback(newDisplayMode);\n });\n };\n var onCanPlayVideo = function onCanPlayVideo() {\n playerViewEventCallbacks[events.External.VideoStart].forEach(function (callback) {\n callback();\n });\n mediaView.mediaWrapper.off('canplay', onCanPlayVideo);\n };\n var onMediaEnd = function onMediaEnd(e, eventData) {\n if (eventData.isPlaybackEnded) {\n playerViewEventCallbacks[events.External.VideoEnd].forEach(function (callback) {\n callback();\n });\n }\n };\n var onVideoReplayHandler = function onVideoReplayHandler() {\n playerViewEventCallbacks[events.External.VideoReplay].forEach(function (callback) {\n callback();\n });\n };\n var onVideoError = function onVideoError() {\n playerViewEventCallbacks[events.External.MediaError].forEach(function (callback) {\n callback();\n });\n };\n var onPlayingEvent = function onPlayingEvent() {\n mediaView.mediaWrapper.off('playing', onPlayingEvent);\n\n // send a playing/streaming confirmation if applicable\n playerViewEventCallbacks[events.External.VideoPlay].forEach(function (callback) {\n callback();\n });\n };\n var onStartedPlaybackHandler = function onStartedPlaybackHandler() {\n playerViewEventCallbacks[events.External.VideoStartInitiated].forEach(function (callback) {\n callback();\n });\n };\n var triggerQuizVisible = function triggerQuizVisible() {\n playerViewEventCallbacks[events.External.QuizVisible].forEach(function (callback) {\n callback();\n });\n };\n var triggerQuizHidden = function triggerQuizHidden() {\n playerViewEventCallbacks[events.External.QuizHidden].forEach(function (callback) {\n callback();\n });\n };\n var triggerQuizPromptVisible = function triggerQuizPromptVisible() {\n playerViewEventCallbacks[events.External.ShowStartQuizPrompt].forEach(function (callback) {\n callback();\n });\n };\n var triggerQuizPromptHidden = function triggerQuizPromptHidden() {\n playerViewEventCallbacks[events.External.HideStartQuizPrompt].forEach(function (callback) {\n callback();\n });\n };\n var processCaptionChanged = function processCaptionChanged(e, eventData) {\n if (eventData) {\n playerViewEventCallbacks[events.External.CaptionChange].forEach(function (callback) {\n callback(eventData.plainText);\n });\n }\n };\n var processCaptionToggled = function processCaptionToggled(e, eventData) {\n if (eventData) {\n var externalCaptionEvent = eventData.captionsEnabled ? events.External.CaptionsVisible : events.External.CaptionsHidden;\n playerViewEventCallbacks[externalCaptionEvent].forEach(function (callback) {\n callback();\n });\n }\n };\n var onCaptionsReadyHandler = function onCaptionsReadyHandler() {\n playerViewEventCallbacks[events.External.CaptionsReady].forEach(function (callback) {\n callback();\n });\n };\n var triggerPlayerSettingsOpen = function triggerPlayerSettingsOpen() {\n playerViewEventCallbacks[events.External.PlayerSettingsOpen].forEach(function (callback) {\n callback();\n });\n };\n var triggerPlayerSettingsClose = function triggerPlayerSettingsClose() {\n playerViewEventCallbacks[events.External.PlayerSettingsClose].forEach(function (callback) {\n callback();\n });\n };\n var triggerVideoControlsHidden = function triggerVideoControlsHidden() {\n playerViewEventCallbacks[events.External.PlayerControlsHidden].forEach(function (callback) {\n callback();\n });\n };\n var triggerVideoControlsVisible = function triggerVideoControlsVisible() {\n playerViewEventCallbacks[events.External.PlayerControlsVisible].forEach(function (callback) {\n callback();\n });\n };\n var triggerExternalPlayerResize = function triggerExternalPlayerResize() {\n playerViewEventCallbacks[events.External.PlayerResize].forEach(function (callback) {\n callback();\n });\n };\n var triggerHeroControlHidden = function triggerHeroControlHidden() {\n playerViewEventCallbacks[events.External.HeroControlHidden].forEach(function (callback) {\n callback();\n });\n };\n var triggerImagePointerOver = function triggerImagePointerOver() {\n playerViewEventCallbacks[events.External.ImagePointerOver].forEach(function (callback) {\n callback();\n });\n };\n var triggerImagePointerLeave = function triggerImagePointerLeave() {\n playerViewEventCallbacks[events.External.ImagePointerLeave].forEach(function (callback) {\n callback();\n });\n };\n var bindToEvents = function bindToEvents() {\n $container.on(events.Controls.StartedPlayback, onStartedPlaybackHandler);\n $container.on(events.Controls.FullScreenChange, onFullScreenChange);\n $container.on(events.Controls.TheaterModeChanged, onTheaterModeChanged);\n $container.on(events.Media.End, onMediaEnd);\n $container.on(events.Media.Replay, onVideoReplayHandler);\n $container.on(events.Media.Error, onVideoError);\n $container.on(events.Quizzing.ShowStartQuizPrompt, triggerQuizVisible);\n $container.on(events.Quizzing.Review, triggerQuizHidden);\n $container.on(events.Quizzing.ShowQuestionSetView, triggerQuizVisible);\n $container.on(events.Quizzing.Complete, triggerQuizHidden);\n $container.on(events.Quizzing.ShowQuizSetup, triggerQuizPromptVisible);\n $container.on(events.Quizzing.BeginClicked, triggerQuizPromptHidden);\n $container.on(events.Quizzing.SkipClicked, triggerQuizPromptHidden);\n $container.on(events.Captions.Changed, processCaptionChanged);\n $container.on(events.Captions.Toggled, processCaptionToggled);\n $container.on(events.Captions.StateLoaded, onCaptionsReadyHandler);\n $container.on(events.Controls.PlayerSettingsOpen, triggerPlayerSettingsOpen);\n $container.on(events.Controls.PlayerSettingsClose, triggerPlayerSettingsClose);\n $container.on(events.Controls.VideoControlsHidden, triggerVideoControlsHidden);\n $container.on(events.Controls.VideoControlsVisible, triggerVideoControlsVisible);\n $container.on(events.Controls.PlayerResize, triggerExternalPlayerResize);\n $container.on(events.Controls.HeroPlayControlClicked, triggerHeroControlHidden);\n $container.on(events.Images.PointerOver, triggerImagePointerOver);\n $container.on(events.Images.PointerLeave, triggerImagePointerLeave);\n var eventsToBind = {\n loadedmetadata: onLoadedMetadata,\n canplay: onCanPlayVideo,\n playing: onPlayingEvent\n };\n mediaView.mediaWrapper.on(eventsToBind);\n };\n var unbindToEvents = function unbindToEvents() {\n $container.off(events.Controls.StartedPlayback, onStartedPlaybackHandler);\n $container.off(events.Controls.FullScreenChange, onFullScreenChange);\n $container.off(events.Controls.TheaterModeChanged, onTheaterModeChanged);\n $container.off(events.Media.End, onMediaEnd);\n $container.off(events.Media.Replay, onVideoReplayHandler);\n $container.off(events.Media.Error, onVideoError);\n $container.off(events.Quizzing.ShowStartQuizPrompt, triggerQuizVisible);\n $container.off(events.Quizzing.Review, triggerQuizHidden);\n $container.off(events.Quizzing.ShowQuestionSetView, triggerQuizVisible);\n $container.off(events.Quizzing.Complete, triggerQuizHidden);\n $container.off(events.Quizzing.ShowQuizSetup, triggerQuizPromptVisible);\n $container.off(events.Quizzing.BeginClicked, triggerQuizPromptHidden);\n $container.off(events.Quizzing.SkipClicked, triggerQuizPromptHidden);\n $container.off(events.Captions.Changed, processCaptionChanged);\n $container.off(events.Captions.Toggled, processCaptionToggled);\n $container.off(events.Captions.StateLoaded, onCaptionsReadyHandler);\n $container.off(events.Controls.PlayerSettingsOpen, triggerPlayerSettingsOpen);\n $container.off(events.Controls.PlayerSettingsClose, triggerPlayerSettingsClose);\n $container.off(events.Controls.VideoControlsHidden, triggerVideoControlsHidden);\n $container.off(events.Controls.VideoControlsVisible, triggerVideoControlsVisible);\n $container.off(events.Controls.PlayerResize, triggerExternalPlayerResize);\n $container.off(events.Controls.HeroPlayControlClicked, triggerHeroControlHidden);\n $container.off(events.Images.PointerOver, triggerImagePointerOver);\n $container.off(events.Images.PointerLeave, triggerImagePointerLeave);\n var eventsToBind = {\n loadedmetadata: onLoadedMetadata,\n canplay: onCanPlayVideo,\n playing: onPlayingEvent\n };\n mediaView.mediaWrapper.off(eventsToBind);\n };\n var destroy = function destroy() {\n unbindToEvents();\n };\n bindToEvents();\n return Object.defineProperties({\n destroy: destroy\n }, {});\n};\nvar ExternalEventsController$1 = {\n /**\n * Factory method that returns a new ExternalEventsController.\n * @function create\n * @memberof TSC.ExternalEventsController\n * @static\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.MediaList} mediaList\n * @param {Object} playerViewEventCallbacks\n * @return new ExternalEventsController instance\n */\n create: ExternalEventsController\n};\n\n/**\n * @memberof TSC\n * @class PlayerState\n * @classdesc State object used for player instance player state.\n */\nvar PlayerState = function PlayerState() {\n var _oneOrMoreHotspotsWithTimeActionArePaused = false;\n var _videoHasQuizQuestions = false;\n var _pausedForQuiz = false;\n var _displayMode = DisplayModes.Normal;\n return Object.defineProperties({}, {\n oneOrMoreHotspotsWithTimeActionArePaused: {\n get: function get() {\n return _oneOrMoreHotspotsWithTimeActionArePaused;\n },\n set: function set(oneOrMoreHotspotsWithTimeActionArePaused) {\n _oneOrMoreHotspotsWithTimeActionArePaused = oneOrMoreHotspotsWithTimeActionArePaused;\n }\n },\n mediaHasQuizQuestions: {\n get: function get() {\n return _videoHasQuizQuestions;\n },\n set: function set(videoHasQuizQuestions) {\n _videoHasQuizQuestions = videoHasQuizQuestions;\n }\n },\n pausedForQuiz: {\n get: function get() {\n return _pausedForQuiz;\n },\n set: function set(pausedForQuiz) {\n _pausedForQuiz = pausedForQuiz;\n }\n },\n displayMode: {\n get: function get() {\n return _displayMode;\n },\n set: function set(displayMode) {\n _displayMode = displayMode;\n }\n }\n });\n};\nvar PlayerState$1 = {\n /**\n * Factory method that returns a new PlayerState object\n * @function create\n * @memberof TSC.PlayerState\n * @static\n * @return new PlayerState instance\n */\n create: PlayerState\n};\n\n/**\n * @memberof TSC.IoOverlayView\n * @class IoOverlayView\n * @classdesc IoOverlay View\n */\nvar IoOverlayView = function IoOverlayView($container) {\n var _viewOpen = false;\n var markup = templateGenerator.generateIoOverlayMarkup();\n $container.append(markup);\n var _$ioContainer = $container.find('.tsc-io-container');\n var _$ioMessage = _$ioContainer.find('span');\n var _$ioImg = _$ioContainer.find('img');\n var setViewMessage = function setViewMessage(message) {\n _$ioMessage.html(message);\n };\n var hideLoadingGraphic = function hideLoadingGraphic() {\n _$ioImg.hide();\n };\n var showLoadingGraphic = function showLoadingGraphic() {\n _$ioImg.show();\n };\n var showView = function showView() {\n _$ioContainer.stop().css('opacity', 0).show().animate({\n opacity: 1\n }, 300);\n _viewOpen = true;\n };\n var hideView = function hideView(completeCallback) {\n if (_viewOpen) {\n _viewOpen = false;\n _$ioContainer.stop().animate({\n opacity: 0\n }, 200, function () {\n if (completeCallback) {\n completeCallback.call();\n }\n _$ioContainer.hide();\n });\n }\n };\n var displayMessage = function displayMessage(message, shouldHideLoadingGraphic) {\n setViewMessage(message);\n if (shouldHideLoadingGraphic) {\n hideLoadingGraphic();\n } else {\n showLoadingGraphic();\n }\n if (!_viewOpen) {\n showView();\n }\n };\n var destroy = function destroy() {\n $container.off(events.Controls.HideIOOverlay, hideView);\n };\n var bindEvents = function bindEvents() {\n $container.on(events.Controls.HideIOOverlay, hideView);\n };\n bindEvents();\n return Object.defineProperties({\n hideView: hideView,\n displayMessage: displayMessage,\n destroy: destroy\n }, {});\n};\nvar IoOverlayView$1 = {\n /**\n * Factory method that returns a new IoOverlayView object.\n * @function create\n * @memberof TSC.IoOverlayView\n * @static\n * @param {Object} $container - jQuery element that is the smartplayer top-level container\n * @return new IoOverlayView instance\n */\n create: IoOverlayView\n};\n\nvar VIDEO_TIME_COMPARE_PRECISION = 2;\n\n/**\n * @memberof TSC\n * @class SmartPlayerView\n * @classdesc Smart Player view\n * @param {String} playerInstanceUUID\n * @param {JQuery} $rootContainer\n * @param {TSC.MediaList} mediaList\n * @param {TSC.XmpModel} xmpModel\n * @param {TSC.Quiz} quizModel\n * @param {TSC.CaptionService} captionService\n * @param {TSC.playerConfiguration} playerConfiguration\n * @param {TSC.ResponsiveController} responsiveController\n * @param {Boolean} xmpInErrorState\n */\nvar SmartPlayerView = function SmartPlayerView(playerInstanceUUID, $rootContainer, mediaList, xmpModel, quizModel, captionService, playerConfiguration, responsiveController, xmpInErrorState) {\n // eslint-disable-line\n var _mediaElementUniqueID = [$rootContainer.attr('id').replace(/^[#]/, ''), playerInstanceUUID].join('-');\n var _mediaViewReady;\n var _viewHasBeenInitialized;\n var _mediaExtensionsController;\n var _tabController;\n var _externalEventsController;\n var _scormErrorMessageBarView;\n var _$playerPluginContainer;\n var _viewInitializedPromise = new Promise$1(function (resolve, reject) {\n _viewHasBeenInitialized = resolve; // eslint-disable-line\n });\n var _playerViewEventCallbacks = {};\n var _queuedMediaBinds = {};\n var _mediaView = null;\n var _ioOverlayView = null;\n var _videoControlsController = null;\n var _videoControlsDisplayModeController = null;\n var _controlsReady = false;\n var _mediaExtensionsReady = false;\n var _mediaHasBeenLoaded = false;\n var _playerState = PlayerState$1.create();\n _playerState.mediaHasQuizQuestions = quizModel && quizModel.questionSets.length > 0;\n $rootContainer.playerState = _playerState;\n var _$mediaViewPortContainer = null;\n var _$mediaContainer = null;\n var _$playerLayoutControlsContainer = null;\n var displayXmpErrorMessage = function displayXmpErrorMessage() {\n if (deviceInfo.isLocal()) {\n MessageBarView$1.create($rootContainer, messageBarType.info, localizationStrings.getPlayerString(playerStringNames.xmpSecurity), localizationStrings.getPlayerString(playerStringNames.close));\n } else {\n MessageBarView$1.create($rootContainer, messageBarType.info, localizationStrings.getPlayerString(playerStringNames.xmpError));\n }\n };\n var onFirstPlayHandler = function onFirstPlayHandler() {\n $rootContainer.trigger(events.Media.FirstPlay);\n };\n var triggerRumDataEvent = function triggerRumDataEvent(timingMeasureList, eventCategorySuffix) {\n var eventData = {\n categorySuffix: eventCategorySuffix,\n rum: performanceWrapper.getRumEventData(timingMeasureList)\n };\n _playerViewEventCallbacks[events.External.PlayerRumData].forEach(function (callback) {\n callback(eventData);\n });\n };\n var externalEventIsSupported = function externalEventIsSupported(eventName) {\n return Object.keys(events.External).some(function (eventKey) {\n return events.External[eventKey] === eventName;\n });\n };\n var setupExternalEventCallbackHarness = function setupExternalEventCallbackHarness() {\n Object.keys(events.External).forEach(function (eventKey) {\n var eventName = events.External[eventKey];\n _playerViewEventCallbacks[eventName] = [];\n });\n };\n var getCaptionsVisible = function getCaptionsVisible() {\n return _mediaExtensionsController.captionController ? _mediaExtensionsController.captionController.getCaptionsVisible() : false;\n };\n var setCaptionsVisible = function setCaptionsVisible(value) {\n if (_mediaExtensionsController.captionController) {\n _mediaExtensionsController.captionController.setCaptionsVisible(value);\n }\n };\n var addEventListener = function addEventListener(type, listener) {\n if (externalEventIsSupported(type)) {\n _playerViewEventCallbacks[type].push(listener);\n }\n };\n var removeEventListener = function removeEventListener(type, listener) {\n if (externalEventIsSupported(type)) {\n // just in case the same listener pointer is bound more than once?\n while (_playerViewEventCallbacks[type].indexOf(listener) !== -1) {\n _playerViewEventCallbacks[type].splice(_playerViewEventCallbacks[type].indexOf(listener), 1);\n }\n }\n };\n var addMediaEventListener = function addMediaEventListener(event, handler) {\n if (_mediaView && _mediaView.mediaWrapper) {\n _mediaView.mediaWrapper.on(event, handler);\n } else {\n if (_typeof$1(_queuedMediaBinds[event]) !== 'object') {\n _queuedMediaBinds[event] = [];\n }\n _queuedMediaBinds[event].push(handler);\n }\n };\n var removeMediaEventListener = function removeMediaEventListener(event, handler) {\n if (_mediaView.mediaWrapper) {\n _mediaView.mediaWrapper.off(event, handler);\n } else {\n if (_typeof$1(_queuedMediaBinds[event]) !== 'object') {\n return;\n }\n // if the same handler is bound multiple times?\n while (_queuedMediaBinds[event].indexOf(handler) !== -1) {\n _queuedMediaBinds[event].splice(_queuedMediaBinds[event].indexOf(handler), 1);\n }\n }\n };\n var processQueuedMediaBinds = function processQueuedMediaBinds() {\n Object.keys(_queuedMediaBinds).forEach(function (event) {\n if (_typeof$1(_queuedMediaBinds[event]) === 'object') {\n _queuedMediaBinds[event].forEach(function (callback) {\n _mediaView.mediaWrapper.on(event, callback);\n });\n }\n });\n _queuedMediaBinds = {};\n };\n var triggerVideoStartEventCallbacks = function triggerVideoStartEventCallbacks() {\n // dispatch callback for media started event (note: after _mediaWrapper and _mediaElement are set)\n _playerViewEventCallbacks[events.External.VideoStart].forEach(function (callback) {\n callback();\n });\n };\n var createPlayerLayout = function createPlayerLayout() {\n $rootContainer.html(templateGenerator.generatePlayerLayoutMarkup());\n _$mediaViewPortContainer = $rootContainer.find('.media-wrapper').first();\n _$playerLayoutControlsContainer = $rootContainer.find('.video-controls-container').first();\n _$playerPluginContainer = $rootContainer.find('.player-plugin-container').first();\n };\n var createMediaView = function createMediaView() {\n return MediaViewFactory$1.createView($rootContainer, _$mediaViewPortContainer, _mediaElementUniqueID, mediaList, onFirstPlayHandler, triggerRumDataEvent);\n };\n var onMediaError = function onMediaError(e, data) {\n _ioOverlayView.hideView();\n _ioOverlayView.displayMessage(data.errorString, true);\n };\n var showVideoLoadingMessage = function showVideoLoadingMessage() {\n if (_mediaView.type !== mediaViewType.youtube && _mediaView.type !== mediaViewType.image) {\n _ioOverlayView.displayMessage(localizationStrings.getPlayerString(playerStringNames.videoLoading));\n }\n };\n var onHideLoadingMessage = function onHideLoadingMessage() {\n _ioOverlayView.hideView();\n };\n var loadMediaWhenComponentsAreReady = function loadMediaWhenComponentsAreReady() {\n if (_controlsReady && _mediaExtensionsReady && !_mediaHasBeenLoaded) {\n showVideoLoadingMessage();\n loadMedia();\n }\n };\n var onControlsVisible = function onControlsVisible() {\n if (_$playerLayoutControlsContainer.length > 0 && captionService.position === CAPTION_POSITION.under) {\n $rootContainer[0].style.setProperty(cssVariables.reservedSizeControls, \"\".concat(Math.round(_$playerLayoutControlsContainer.height()), \"px\"));\n }\n };\n var onControlsReady = function onControlsReady() {\n _controlsReady = true;\n loadMediaWhenComponentsAreReady();\n };\n var onMediaExtensionsReady = function onMediaExtensionsReady() {\n _mediaExtensionsReady = true;\n loadMediaWhenComponentsAreReady();\n };\n var onFailedToFindSCORMApi = function onFailedToFindSCORMApi() {\n _ioOverlayView.hideView();\n _scormErrorMessageBarView = MessageBarView$1.create($rootContainer, messageBarType.info, localizationStrings.getPlayerString(playerStringNames.scormApiNotFoundMessage), localizationStrings.getPlayerString(playerStringNames.close));\n };\n var onShowQuizSetup = function onShowQuizSetup() {\n $rootContainer.find('.video-wrapper').removeClass(cssClasses.hide);\n };\n var startViewPortObserver = function startViewPortObserver() {\n _mediaView.mediaWrapper.off(events.ExternalVideo.VideoLoadedMetadata, startViewPortObserver);\n // at this point, these should have been initialized\n _$mediaContainer = $rootContainer.find('.media-container');\n responsiveController.monitorMediaViewPortSize(_$mediaViewPortContainer, _$mediaContainer, _mediaView.mediaWidth, _mediaView.mediaHeight);\n };\n var onImagePointerOver = function onImagePointerOver() {\n $rootContainer.trigger(events.Images.PointerOver);\n };\n var onImagePointerLeave = function onImagePointerLeave() {\n $rootContainer.trigger(events.Images.PointerLeave);\n };\n var onMediaViewInitialized = function onMediaViewInitialized(mediaView) {\n _mediaView = mediaView;\n _ioOverlayView = IoOverlayView$1.create($rootContainer);\n $rootContainer.on(events.Media.Error, onMediaError);\n $rootContainer.on(events.Player.MediaControlsReady, onControlsReady);\n $rootContainer.on(events.Controls.VideoControlsVisible, onControlsVisible);\n $rootContainer.on(events.Player.MediaExtensionsReady, onMediaExtensionsReady);\n $rootContainer.on(events.Controls.HideLoadingMessage, onHideLoadingMessage);\n $rootContainer.on(events.SCORM.FailedToFindApi, onFailedToFindSCORMApi);\n $rootContainer.on(events.Quizzing.ShowQuizSetup, onShowQuizSetup);\n $rootContainer.on(events.Plugin.Added, initPlugins);\n _mediaView.mediaWrapper.on(events.ExternalVideo.VideoLoadedMetadata, startViewPortObserver);\n if (_mediaView.playerControlType === playerControlsType.video || _mediaView.playerControlType === playerControlsType.videoPlaylist) {\n _videoControlsController = VideoControlsController$1.create($rootContainer, _mediaView, xmpModel, quizModel, playerConfiguration);\n _videoControlsDisplayModeController = VideoControlsDisplayModeController$1.create($rootContainer, _videoControlsController, playerConfiguration);\n _tabController = TabController$1.create($rootContainer, _videoControlsController.progressBarControlView.controlElement, _videoControlsController.fullscreenControlView.controlElement);\n } else {\n // if not creating videoControls just yank the dom structure, perhaps this should be its own template\n $rootContainer.find('.video-controls-container').remove();\n if (_mediaView.type === mediaViewType.image && !deviceInfo.isTouchInterface()) {\n $rootContainer.on('pointerover', onImagePointerOver);\n $rootContainer.on('pointerleave', onImagePointerLeave);\n }\n }\n var progressBarControlView = _videoControlsController ? _videoControlsController.progressBarControlView : null;\n var beforeAfterPlayControlsView = _videoControlsController ? _videoControlsController.beforeAfterPlayControlsView : null;\n _externalEventsController = ExternalEventsController$1.create($rootContainer, mediaView, mediaList, _playerViewEventCallbacks);\n processQueuedMediaBinds();\n _mediaExtensionsController = MediaExtensionsController$1.create($rootContainer, mediaView, xmpModel, quizModel, mediaList, captionService, playerConfiguration, responsiveController, _tabController, progressBarControlView, beforeAfterPlayControlsView, _ioOverlayView);\n if (!_videoControlsController || !_videoControlsController.userNeedToClickHeroPlayControl) {\n $rootContainer.trigger(events.Player.MediaControlsReady);\n }\n $rootContainer.trigger(events.Controls.PlayerInitialized);\n triggerRumDataEvent([events.Timing.PlayerLoaded, events.Timing.PlayerInitialized], AnalyticsRumVideoCategorySuffix);\n _viewHasBeenInitialized();\n };\n var destroy = function destroy() {\n $rootContainer.off(events.Media.Error, onMediaError);\n $rootContainer.off(events.Player.MediaControlsReady, onControlsReady);\n $rootContainer.off(events.Controls.VideoControlsVisible, onControlsVisible);\n $rootContainer.off(events.Player.MediaExtensionsReady, onMediaExtensionsReady);\n $rootContainer.off(events.Controls.HideLoadingMessage, onHideLoadingMessage);\n $rootContainer.off(events.SCORM.FailedToFindApi, onFailedToFindSCORMApi);\n $rootContainer.off(events.Quizzing.ShowQuizSetup, onShowQuizSetup);\n $rootContainer.off(events.Plugin.Added, initPlugins);\n $rootContainer.off('pointerover', onImagePointerOver);\n $rootContainer.off('pointerleave', onImagePointerLeave);\n _mediaView.mediaWrapper.off(events.ExternalVideo.VideoLoadedMetadata, startViewPortObserver);\n _videoControlsController && _videoControlsController.destroy();\n _videoControlsDisplayModeController && _videoControlsDisplayModeController.destroy();\n _mediaView && _mediaView.destroy();\n _ioOverlayView && _ioOverlayView.destroy();\n _mediaExtensionsController && _mediaExtensionsController.destroy();\n _tabController && _tabController.destroy();\n _externalEventsController && _externalEventsController.destroy();\n _scormErrorMessageBarView && _scormErrorMessageBarView.remove();\n };\n var playVideo = function playVideo() {\n if (_mediaView && _mediaView.mediaElement && _mediaView.type !== mediaViewType.image) {\n if (_mediaView.mediaElement.ended) {\n $rootContainer.trigger(events.Media.Replay);\n } else {\n _mediaView.mediaElement.play();\n }\n }\n return Promise$1.reject('Media Element not yet initialized');\n };\n var pauseVideo = function pauseVideo() {\n if (_mediaView && _mediaView.mediaElement && _mediaView.type !== mediaViewType.image) {\n _mediaView.mediaElement.pause();\n }\n };\n var isInFullScreenMode = function isInFullScreenMode() {\n if (_videoControlsController && _videoControlsController.fullscreenControlView) {\n return _videoControlsController.fullscreenControlView.isFullScreen;\n }\n return false;\n };\n var getIsScrubbing = function getIsScrubbing() {\n if (_videoControlsController && _videoControlsController.progressBarControlView) {\n return _videoControlsController.progressBarControlView.scrubbing;\n }\n return false;\n };\n var setIsScrubbing = function setIsScrubbing(isScrubbingVideo) {\n if (_videoControlsController && _videoControlsController.progressBarControlView) {\n _videoControlsController.progressBarControlView.scrubbing = isScrubbingVideo;\n }\n };\n var getSafeSeekTime = function getSafeSeekTime(time) {\n if (!_mediaView && _mediaView.type === mediaViewType.image && !_mediaView.mediaElement) {\n return 0;\n }\n return videoApiUtils.getSafeSeekTime(_mediaView.mediaElement, time);\n };\n var loadMedia = function loadMedia() {\n if (_mediaHasBeenLoaded) {\n return;\n }\n _mediaHasBeenLoaded = true;\n $rootContainer.find('.video-wrapper').removeClass(cssClasses.hide);\n _mediaView.loadMedia();\n if (playerConfiguration.getAutoPlayMedia() || playerConfiguration.getForceAutoPlayMedia()) {\n $rootContainer.trigger(events.Media.TryToAutoPlay);\n }\n };\n var setExternalCurrentTime = function setExternalCurrentTime(timeInSeconds) {\n var safeSeekTime = videoApiUtils.getSafeSeekTime(_mediaView.mediaElement, timeInSeconds);\n if (_videoControlsController && _mediaView.mediaElement.currentTime.toFixed(VIDEO_TIME_COMPARE_PRECISION) !== safeSeekTime.toFixed(VIDEO_TIME_COMPARE_PRECISION)) {\n _videoControlsController.beforeAfterPlayControlsView.hideVideoClickToReplayLink();\n }\n if (_mediaView.mediaElement.ended) {\n $rootContainer.trigger(events.Media.Replay, {\n time: safeSeekTime,\n playAfterSeek: false\n });\n } else {\n $rootContainer.trigger(events.Media.SeekToTime, {\n time: safeSeekTime\n });\n }\n };\n var initPlugins = function initPlugins(event, data) {\n var pluginController = playerConfiguration.getPluginController();\n if (pluginController && data.viewElementType === supportedPluginViewElements.PLAYER) {\n pluginController.initializePluginsForViewElement(supportedPluginViewElements.PLAYER, _$playerPluginContainer);\n }\n };\n setupExternalEventCallbackHarness();\n createPlayerLayout();\n if (xmpInErrorState) {\n displayXmpErrorMessage();\n }\n _mediaViewReady = createMediaView();\n _mediaViewReady.then(onMediaViewInitialized)[\"catch\"](function (error) {\n log.logException(error);\n });\n return Object.defineProperties({\n loadMedia: loadMedia,\n destroy: destroy,\n play: playVideo,\n pause: pauseVideo,\n // custom view stuff\n isInFullScreenMode: isInFullScreenMode,\n addEventListener: addEventListener,\n removeEventListener: removeEventListener,\n addMediaEventListener: addMediaEventListener,\n removeMediaEventListener: removeMediaEventListener,\n // controls state internal to smart-player-view\n getCaptionsVisible: getCaptionsVisible,\n setCaptionsVisible: setCaptionsVisible,\n getScrubbing: getIsScrubbing,\n setScrubbing: setIsScrubbing,\n // events\n triggerVideoStartEventCallbacks: triggerVideoStartEventCallbacks,\n // util methods\n getSafeSeekTime: getSafeSeekTime\n }, {\n initializedPromise: {\n get: function get() {\n return _viewInitializedPromise;\n }\n },\n currentSrc: {\n get: function get() {\n return _mediaView ? _mediaView.currentSrc : '';\n }\n },\n currentTime: {\n get: function get() {\n return _mediaView ? _mediaView.currentTime : 0;\n },\n set: setExternalCurrentTime\n },\n duration: {\n get: function get() {\n return _mediaView ? _mediaView.duration : 0;\n }\n },\n paused: {\n get: function get() {\n return _mediaView ? _mediaView.paused : false;\n }\n },\n ended: {\n get: function get() {\n return _mediaView ? _mediaView.ended : false;\n }\n },\n seeking: {\n get: function get() {\n return _mediaView ? _mediaView.seeking : false;\n }\n },\n buffered: {\n get: function get() {\n return _mediaView ? _mediaView.buffered : [];\n }\n },\n played: {\n get: function get() {\n return _mediaView ? _mediaView.played : [];\n }\n },\n seekable: {\n get: function get() {\n return _mediaView ? _mediaView.seekable : [];\n }\n },\n volume: {\n get: function get() {\n return _mediaView ? _mediaView.volume : 1;\n },\n set: function set(volumeValue) {\n $rootContainer.trigger(events.Media.SetVolume, {\n volumeValue: volumeValue\n });\n }\n },\n muted: {\n get: function get() {\n return _mediaView ? _mediaView.muted : false;\n },\n set: function set(isMuted) {\n $rootContainer.trigger(events.Media.SetMutedState, {\n isMuted: isMuted\n });\n }\n },\n playbackRate: {\n get: function get() {\n return _mediaView ? _mediaView.playbackRate : 1;\n },\n set: function set(playbackRate) {\n $rootContainer.trigger(events.Media.SetPlaybackRate, {\n playbackRate: playbackRate\n });\n }\n },\n progressBarDisplayWidth: {\n get: function get() {\n return _videoControlsController ? _videoControlsController.progressBarControlView.displayWidth : 0;\n }\n },\n currentDisplayMode: {\n get: function get() {\n return _playerState.displayMode;\n }\n }\n });\n};\nvar SmartPlayerView$1 = {\n /**\n * Factory method that returns a new SmartPlayerView object\n * @function create\n * @memberof TSC.SmartPlayerView\n * @param {String} playerInstanceUUID\n * @param {jQuery} $rootContainer\n * @param {TSC.MediaList} mediaList\n * @param {TSC.XmpModel} xmpModel\n * @param {TSC.Quiz} quizModel\n * @param {TSC.CaptionService} captionService\n * @param {Object} playerConfiguration\n * @static\n * @return new SmartPlayerView instance\n */\n create: SmartPlayerView\n};\n\nvar smartPlayerPreRollEventConstants = Object.freeze({\n PRE_ROLL_STARTED: 'preRollStarted',\n PRE_ROLL_FINISHED: 'preRollFinished',\n PRE_ROLL_FINISHED_ACTIONS: {\n REMOVE_NOW: 'removeNow'\n }\n});\n\nvar preRollView = {\n render: function render(preRollSrc) {\n return templateGenerator.generatePreRollMarkup(preRollSrc);\n }\n};\n\nvar _onPreRollStartedCallback;\nvar $preRollView;\nvar $window = $(window);\nvar preRollMessage = function preRollMessage(e) {\n e = e.originalEvent;\n // filter out non smart player events\n if (!e.data || typeof e.data.indexOf !== 'function' || e.data.indexOf('smartPlayerEventName') === -1) {\n return;\n }\n var message = window.JSON.parse(e.data);\n switch (message.smartPlayerEventName) {\n case smartPlayerPreRollEventConstants.PRE_ROLL_STARTED:\n {\n if (_onPreRollStartedCallback) {\n _onPreRollStartedCallback();\n }\n break;\n }\n case smartPlayerPreRollEventConstants.PRE_ROLL_FINISHED:\n {\n switch (message.data.action) {\n case smartPlayerPreRollEventConstants.PRE_ROLL_FINISHED_ACTIONS.REMOVE_NOW:\n {\n destroyView();\n break;\n }\n }\n break;\n }\n }\n};\nvar onIFrameContentLoaded = function onIFrameContentLoaded() {\n $preRollView.removeClass('preRollHidden');\n};\nvar destroyView = function destroyView() {\n if ($preRollView) {\n $window.off('message', preRollMessage);\n $preRollView.off('load', onIFrameContentLoaded);\n $preRollView.remove();\n $preRollView = undefined;\n _onPreRollStartedCallback = undefined;\n }\n};\nvar preRollController = {\n createView: function createView(preRollSrc, onPreRollStartedCallback) {\n $preRollView = $(preRollView.render(preRollSrc)).appendTo('body');\n $preRollView.on('load', onIFrameContentLoaded);\n _onPreRollStartedCallback = onPreRollStartedCallback;\n $window.on('message', preRollMessage);\n },\n viewExists: function viewExists() {\n return $preRollView !== undefined;\n },\n destroyView: destroyView\n};\n\nvar _$spElement = null;\nvar setTheme$1 = function setTheme(themeName) {\n playerConfiguration.setTheme(themeName);\n applyTheme();\n};\nvar registerCallback = function registerCallback() {\n externalMessageController.addCallback('SET_THEME', setTheme$1);\n};\nvar setSmartPlayerContainerElement = function setSmartPlayerContainerElement($element) {\n _$spElement = $element;\n applyTheme();\n};\nvar getClassNameForTheme = function getClassNameForTheme(theme) {\n return 'smartplayer-' + theme + '-theme';\n};\nvar applyTheme = function applyTheme() {\n if (_$spElement) {\n var themeClassNameAsString = Object.keys(themeNames).reduce(function (accumulator, currentValue) {\n return accumulator + getClassNameForTheme(themeNames[currentValue]) + ' ';\n }, '');\n var currentThemeClassName = getClassNameForTheme(playerConfiguration.getTheme());\n _$spElement.removeClass(themeClassNameAsString);\n _$spElement.addClass(currentThemeClassName);\n }\n};\nregisterCallback();\nvar themeController = {\n setTheme: setTheme$1,\n setSmartPlayerContainerElement: setSmartPlayerContainerElement\n};\n\nvar externalVideoEventIsSupported = function externalVideoEventIsSupported(eventName) {\n return Object.keys(events.ExternalVideo).some(function (eventKey) {\n return events.ExternalVideo[eventKey] === eventName;\n });\n};\n\n// major, minor, build\nvar PLAYER_VERSION = 'x.x.x';\nvar INIT_DEFAULT_WIDTH = 1920;\nvar INIT_DEFAULT_HEIGHT = 1080;\nvar _$rootSmartPlayerElement = null;\nvar _responsiveController = null;\nvar _currentPlayerType = null;\nvar _mediaList = null;\nvar _xmp = null;\nvar _quizModel = null;\nvar _captionService = null;\nvar _smartPlayerView = NullSmartPlayerView$1.create();\nvar _viewCreated = false;\nvar _viewInitialized = false;\nvar _queuedEvents = {};\nvar _queuedExternalConfiguration = {};\nvar _playerInstanceUUID = null;\nvar _xmpInErrorState = false;\nvar mediaListError = function mediaListError() {\n MessageBarView$1.create(_$rootSmartPlayerElement, messageBarType.warning, localizationStrings.getPlayerString(playerStringNames.mediaNotFound));\n};\nvar onPreRollStart = function onPreRollStart() {\n continueInit();\n};\nvar initPlayer = function initPlayer(currentInstanceUUID) {\n _captionService = CaptionService$1.create();\n deviceInfo.lookAtDevice();\n queryParamsStripper.strip();\n themeController.setSmartPlayerContainerElement(_$rootSmartPlayerElement);\n if (playerConfiguration.getPreRollSrc()) {\n preRollController.createView(playerConfiguration.getPreRollSrc(), onPreRollStart);\n } else {\n continueInit(currentInstanceUUID);\n }\n};\nvar continueInit = function continueInit(currentInstanceUUID) {\n var mediaSources = playerConfiguration.getMediaSources();\n _mediaList = MediaList$1.create(mediaSources);\n _mediaList.ready.then(function () {\n if (_playerInstanceUUID === currentInstanceUUID) {\n mediaListReady(currentInstanceUUID);\n }\n }, mediaListError);\n};\nvar playbackInitiatedHandler = function playbackInitiatedHandler() {\n _smartPlayerView.removeEventListener(events.External.VideoStartInitiated, playbackInitiatedHandler);\n if (preRollController && preRollController.viewExists()) {\n preRollController.destroyView();\n }\n};\nvar mediaListReady = function mediaListReady(currentInstanceUUID) {\n _currentPlayerType = mediaPlayerController.getPlayerType(_mediaList);\n _responsiveController = ResponsiveController$1.create(_$rootSmartPlayerElement);\n switch (_currentPlayerType) {\n case playerType.YOUTUBE:\n {\n youTube.addApi();\n analyticsService.setCategory(AnalyticsYouTubeEventCategory);\n // we dont have any info on youtube media, so just default to 1080p, it tends to look right\n _responsiveController.initializeIntrinsicSizing(INIT_DEFAULT_WIDTH, INIT_DEFAULT_HEIGHT);\n processMediaAssets(currentInstanceUUID);\n break;\n }\n case playerType.HTML5_VIDEO:\n {\n analyticsService.setCategory(AnalyticsVideoEventCategory);\n if (playerConfiguration.getPosterImageSrc()) {\n // assumption that quick load of posterUrl will have sizing (or at least aspect ratio to match video)\n initIntrinsicSizingFromImageUrl(playerConfiguration.getPosterImageSrc());\n } else {\n _responsiveController.initializeIntrinsicSizing(INIT_DEFAULT_WIDTH, INIT_DEFAULT_HEIGHT);\n }\n processMediaAssets(currentInstanceUUID);\n break;\n }\n case playerType.IMAGE:\n {\n analyticsService.setCategory(AnalyticsImageEventCategory);\n initIntrinsicSizingFromImageUrl(_mediaList.currentMedia.uri);\n processMediaAssets(currentInstanceUUID);\n break;\n }\n case playerType.NOT_SUPPORTED:\n {\n if (_mediaList.currentMediaType === mediaType.WEBM) {\n MessageBarView$1.create(_$rootSmartPlayerElement, messageBarType.warning, localizationStrings.getPlayerString(playerStringNames.noWebMSupport));\n } else {\n MessageBarView$1.create(_$rootSmartPlayerElement, messageBarType.warning, localizationStrings.getPlayerString(playerStringNames.videoNotSupported));\n }\n break;\n }\n }\n};\nvar setQuizModel = function setQuizModel(xmpModel) {\n if (xmpModel && xmpModel.hasQuiz) {\n _quizModel = Quiz$1.create(xmpModel);\n }\n};\nvar initIntrinsicSizingFromImageUrl = function initIntrinsicSizingFromImageUrl(imgUrl) {\n var img = new Image();\n img.onload = function () {\n _responsiveController.initializeIntrinsicSizing(img.naturalWidth, img.naturalHeight);\n };\n img.onerror = function () {\n _responsiveController.initializeIntrinsicSizing(INIT_DEFAULT_WIDTH, INIT_DEFAULT_HEIGHT);\n };\n img.src = imgUrl;\n};\nvar processQuizzing = function processQuizzing() {\n return new Promise$1(function (resolve) {\n if (playerConfiguration.fathomId) {\n fathomService.addEventListener(events.Fathom.GetComplete, function (xmpModel) {\n resolve(xmpModel);\n });\n fathomService.addEventListener(events.Fathom.Error, function () {\n _xmpInErrorState = true;\n resolve();\n });\n fathomService.getFathom(playerConfiguration.fathomId);\n } else {\n resolve(_xmp);\n }\n });\n};\nvar processCaptionSrc = function processCaptionSrc() {\n if (playerConfiguration.captionSrcList.length > 0) {\n if (_xmp === null) {\n _xmp = Xmp.create();\n }\n return _xmp.importCaptionsFromFile(playerConfiguration.captionSrcList);\n }\n return Promise$1.resolve();\n};\nvar processXMP = function processXMP() {\n return new Promise$1(function (resolve) {\n if (playerConfiguration.xmpSrc) {\n _xmp = Xmp.create();\n if (window.TSC && typeof window.TSC.embedded_config_xml === 'string') {\n _xmp.parse(window.TSC.embedded_config_xml);\n } else {\n _xmp.load(playerConfiguration.xmpSrc, false);\n }\n _xmp.ready.then(resolve)[\"catch\"](function () {\n _xmpInErrorState = true;\n _xmp.abortPendingRequests();\n _xmp = null;\n resolve();\n });\n } else {\n if (playerConfiguration.getTocModelFromDescription()) {\n _xmp = Xmp.create();\n }\n resolve();\n }\n });\n};\nvar processMediaAssets = function processMediaAssets(currentInstanceUUID) {\n if (playerConfiguration.getGoogleAnalyticsID()) {\n analyticsService.initGoogleAnalytics();\n }\n processXMP().then(function () {\n if (_playerInstanceUUID === currentInstanceUUID) {\n if (_xmp) {\n playerConfiguration.configureFromXmp(_xmp);\n localizationStrings.configureFromXmp(_xmp);\n }\n processCaptionSrc().then(function () {\n if (_playerInstanceUUID === currentInstanceUUID) {\n processQuizzing().then(function (xmpModel) {\n if (_playerInstanceUUID === currentInstanceUUID) {\n if (xmpModel) {\n setQuizModel(xmpModel);\n }\n setupPlayer(currentInstanceUUID);\n }\n });\n }\n });\n }\n });\n};\nvar captionChangeHandler = function captionChangeHandler(text) {\n if (iFrameBridge.isInIframe()) {\n iFrameBridge.postMessage('CAPTION-CHANGED', '*', text);\n }\n};\nvar setupBasicCss = function setupBasicCss() {\n _$rootSmartPlayerElement.addClass(cssClasses.smartPlayerNamespace);\n _$rootSmartPlayerElement.addClass(cssClasses.playerControlsVisible);\n if (playerConfiguration.getUseLargerProgressBar()) {\n _$rootSmartPlayerElement.addClass(cssClasses.largerProgressBar);\n }\n\n // mainly for backwards compat for pre-version 3.38.0 traverse parent-chain and set height/pad/etc if default\n if (playerConfiguration.getFullViewPort()) {\n _$rootSmartPlayerElement.parents().each(function (index, parentNode) {\n var $parentNode = $(parentNode);\n $parentNode.height('100%');\n if ($parentNode.prop('tagName').toLowerCase() === 'body') {\n $parentNode.css({\n margin: 0,\n padding: 0,\n border: 0,\n overflow: 'hidden'\n });\n }\n });\n }\n};\nvar addQueuedEventsToSmartPlayerView = function addQueuedEventsToSmartPlayerView() {\n Object.keys(_queuedEvents).forEach(function (eventName) {\n _queuedEvents[eventName].forEach(function (eventCallback) {\n addEventListener$1(eventName, eventCallback);\n });\n });\n};\nvar setQueuedConfigurationValuesToSmartPlayerView = function setQueuedConfigurationValuesToSmartPlayerView() {\n if (_queuedExternalConfiguration.volume !== undefined) {\n _smartPlayerView.volume = _queuedExternalConfiguration.volume;\n }\n if (_queuedExternalConfiguration.muted !== undefined) {\n _smartPlayerView.muted = _queuedExternalConfiguration.muted;\n }\n if (_queuedExternalConfiguration.playbackRate !== undefined) {\n _smartPlayerView.playbackRate = _queuedExternalConfiguration.playbackRate;\n }\n};\nvar initPlayerView = function initPlayerView(currentInstanceUUID, displayLocalWarning) {\n _smartPlayerView = SmartPlayerView$1.create(currentInstanceUUID, _$rootSmartPlayerElement, _mediaList, _xmp, _quizModel, _captionService, playerConfiguration, _responsiveController, _xmpInErrorState);\n _viewCreated = true;\n addQueuedEventsToSmartPlayerView();\n _smartPlayerView.initializedPromise.then(function () {\n if (_playerInstanceUUID === currentInstanceUUID) {\n _viewInitialized = true;\n setQueuedConfigurationValuesToSmartPlayerView();\n _smartPlayerView.addEventListener(events.External.VideoStartInitiated, playbackInitiatedHandler);\n _smartPlayerView.addEventListener(events.External.CaptionChange, captionChangeHandler);\n if (playerConfiguration.getAutoPlayMedia() || playerConfiguration.getForceAutoPlayMedia()) {\n _smartPlayerView.loadMedia();\n }\n if (displayLocalWarning) {\n MessageBarView$1.create(_$rootSmartPlayerElement, messageBarType.info, localizationStrings.getPlayerString(playerStringNames.xmpSecurity), localizationStrings.getPlayerString(playerStringNames.close));\n }\n }\n });\n};\nvar setupPlayer = function setupPlayer(currentInstanceUUID) {\n var displayLocalWarning = false;\n if (_currentPlayerType === playerType.IMAGE) {\n _$rootSmartPlayerElement.addClass('image-view');\n } else {\n _$rootSmartPlayerElement.addClass('video-view');\n }\n if (_xmp) {\n if (_xmp.hasCaptionItems) {\n if (iFrameBridge.isInIframe()) {\n iFrameBridge.postMessage('HAS-CAPTIONS', '*');\n }\n }\n }\n if (_quizModel && _quizModel.hasQuiz) {\n if (deviceInfo.isLocal() && _quizModel.reportMethod !== reportType.NONE) {\n displayLocalWarning = true;\n _quizModel.reportMethod = reportType.NONE;\n } else if (_quizModel.useScorm && _quizModel.totalNumberOfGradedQuestionSets === 0) {\n playerConfiguration.isScormLesson = true;\n }\n }\n if (playerConfiguration.isScormLesson) {\n scormController$1.init().then(function () {\n initPlayerView(currentInstanceUUID, displayLocalWarning);\n });\n } else {\n initPlayerView(currentInstanceUUID, displayLocalWarning);\n }\n};\nvar triggerEvent = function triggerEvent(eventName, data) {\n if (_$rootSmartPlayerElement) {\n _$rootSmartPlayerElement.trigger(eventName, data);\n }\n};\nvar init = function init(rootElementID) {\n _playerInstanceUUID = uuidGenerator$1.getUUID();\n performanceWrapper.createMarker(events.Timing.PlayerInitialized);\n _$rootSmartPlayerElement = $(rootElementID);\n setupBasicCss();\n initPlayer(_playerInstanceUUID);\n};\nvar getSmartPlayerRootElement = function getSmartPlayerRootElement() {\n return _$rootSmartPlayerElement;\n};\nvar destroy$1 = function destroy() {\n _playerInstanceUUID = null;\n _currentPlayerType = null;\n _mediaList = null;\n _xmp && _xmp.abortPendingRequests();\n _xmp = null;\n _quizModel = null;\n _viewCreated = false;\n _viewInitialized = false;\n _captionService = null;\n _queuedEvents = {};\n _queuedExternalConfiguration = {};\n _xmpInErrorState = false;\n fathomService.abortPendingRequests();\n localizationStrings.reset();\n if (_$rootSmartPlayerElement) {\n _smartPlayerView.removeEventListener(events.External.VideoStartInitiated, playbackInitiatedHandler);\n _smartPlayerView.removeEventListener(events.External.CaptionChange, captionChangeHandler);\n _smartPlayerView.destroy();\n _smartPlayerView = NullSmartPlayerView$1.create();\n _$rootSmartPlayerElement.removeClass(cssClasses.smartPlayerNamespace + ' ' + cssClasses.largerProgressBar + ' video-view image-view');\n _$rootSmartPlayerElement = null;\n }\n};\nvar getVersion = function getVersion() {\n return PLAYER_VERSION;\n};\nvar playMedia = function playMedia() {\n _smartPlayerView.play();\n};\nvar pauseMedia = function pauseMedia() {\n _smartPlayerView.pause();\n};\nvar queueEventHandler = function queueEventHandler(eventName, callback) {\n if (!_queuedEvents[eventName]) {\n _queuedEvents[eventName] = [];\n }\n _queuedEvents[eventName].push(callback);\n};\nvar dequeueEventHandler = function dequeueEventHandler(eventName, callback) {\n var eventEntry = _queuedEvents[eventName];\n if (eventEntry) {\n for (var i = 0; i < eventEntry.length; i++) {\n if (eventEntry[i] === callback) {\n eventEntry.splice(i, 1);\n break;\n }\n }\n if (eventEntry.length === 0) {\n _queuedEvents[eventName] = undefined;\n }\n }\n};\nvar addEventListener$1 = function addEventListener(eventName, callback) {\n if (!_viewCreated) {\n queueEventHandler(eventName, callback);\n } else if (externalVideoEventIsSupported(eventName)) {\n _smartPlayerView.addMediaEventListener(eventName, callback);\n } else {\n _smartPlayerView.addEventListener(eventName, callback);\n }\n};\nvar removeEventListener$1 = function removeEventListener(eventName, callback) {\n if (!_viewInitialized) {\n dequeueEventHandler(eventName, callback);\n } else if (externalVideoEventIsSupported(eventName)) {\n _smartPlayerView.removeMediaEventListener(eventName, callback);\n } else {\n _smartPlayerView.removeEventListener(eventName, callback);\n }\n};\nvar getCurrentSrc = function getCurrentSrc() {\n return _viewInitialized ? _smartPlayerView.currentSrc : playerConfiguration.getMediaSrc();\n};\nvar getCurrentTime = function getCurrentTime() {\n return _smartPlayerView.currentTime;\n};\nvar setCurrentTime = function setCurrentTime(timeInSeconds) {\n _smartPlayerView.currentTime = timeInSeconds;\n};\nvar getDuration = function getDuration() {\n return _smartPlayerView.duration;\n};\nvar getEnded = function getEnded() {\n return _smartPlayerView.ended;\n};\nvar getPaused = function getPaused() {\n return _smartPlayerView.paused;\n};\nvar getPlaybackRate = function getPlaybackRate() {\n return _smartPlayerView.playbackRate;\n};\nvar setPlaybackRate = function setPlaybackRate(playbackRate) {\n if (_viewInitialized) {\n _smartPlayerView.playbackRate = playbackRate;\n } else {\n _queuedExternalConfiguration.playbackRate = playbackRate;\n }\n};\nvar getBuffered = function getBuffered() {\n return _smartPlayerView.buffered;\n};\nvar getPlayed = function getPlayed() {\n return _smartPlayerView.played;\n};\nvar getSeekable = function getSeekable() {\n return _smartPlayerView.seekable;\n};\nvar getSeeking = function getSeeking() {\n return _smartPlayerView.seeking;\n};\nvar getVolume = function getVolume() {\n return _smartPlayerView.volume;\n};\nvar setVolume = function setVolume(volumeValue) {\n if (_viewInitialized) {\n _smartPlayerView.volume = volumeValue;\n } else {\n _queuedExternalConfiguration.volume = volumeValue;\n }\n};\nvar getMuted = function getMuted() {\n return _viewInitialized ? _smartPlayerView.muted : _queuedExternalConfiguration.muted;\n};\nvar setMuted$1 = function setMuted(isMuted) {\n if (_viewInitialized) {\n _smartPlayerView.muted = isMuted;\n } else {\n _queuedExternalConfiguration.muted = isMuted;\n }\n};\nvar isInFullScreenMode = function isInFullScreenMode() {\n return _smartPlayerView.isInFullScreenMode();\n};\nvar getScrubbing = function getScrubbing() {\n return _smartPlayerView.getScrubbing();\n};\nvar setScrubbing = function setScrubbing(isScrubbing) {\n _smartPlayerView.setScrubbing(isScrubbing);\n};\nvar getSafeSeekTime = function getSafeSeekTime(time) {\n return _smartPlayerView.getSafeSeekTime(time);\n};\nvar getCaptionsVisible = function getCaptionsVisible() {\n return _smartPlayerView.getCaptionsVisible();\n};\nvar setCaptionsVisible = function setCaptionsVisible(isVisible) {\n _smartPlayerView.setCaptionsVisible(isVisible);\n};\nvar getIsYouTube = function getIsYouTube() {\n return _mediaList ? mediaPlayerController.getPlayerType(_mediaList) === playerType.YOUTUBE : false;\n};\nvar getCaptionCollection = function getCaptionCollection() {\n return _captionService && _captionService.captionTrack && _captionService.captionTrack.captionCollection ? _captionService.captionTrack.captionCollection : null;\n};\nvar getCaptionTrack = function getCaptionTrack() {\n return _captionService.captionTrack;\n};\nvar setCaptionTrack = function setCaptionTrack(value) {\n _captionService.captionTrack = value;\n};\nvar getTocChapters = function getTocChapters() {\n if (!_xmp || !_xmp.hasTocItems) {\n return [];\n }\n return _xmp.tocItemArray;\n};\nvar getProgressBarDisplayWidth = function getProgressBarDisplayWidth() {\n return _smartPlayerView ? _smartPlayerView.progressBarDisplayWidth : 0;\n};\nvar getCurrentDisplayMode = function getCurrentDisplayMode() {\n return _smartPlayerView && _smartPlayerView.currentDisplayMode;\n};\nvar mediaPlayer = Object.defineProperties({\n init: init,\n destroy: destroy$1,\n getSmartPlayerRootElement: getSmartPlayerRootElement,\n getVersion: getVersion,\n jsSeekTime: setCurrentTime,\n jsPlay: playMedia,\n play: playMedia,\n pause: pauseMedia,\n getCurrentSrc: getCurrentSrc,\n getCurrentTime: getCurrentTime,\n setCurrentTime: setCurrentTime,\n getDuration: getDuration,\n getEnded: getEnded,\n getPaused: getPaused,\n getPlaybackRate: getPlaybackRate,\n setPlaybackRate: setPlaybackRate,\n getBuffered: getBuffered,\n getPlayed: getPlayed,\n getSeekable: getSeekable,\n getSeeking: getSeeking,\n getVolume: getVolume,\n setVolume: setVolume,\n getMuted: getMuted,\n setMuted: setMuted$1,\n isInFullScreenMode: isInFullScreenMode,\n getScrubbing: getScrubbing,\n setScrubbing: setScrubbing,\n getSafeSeekTime: getSafeSeekTime,\n addEventListener: addEventListener$1,\n removeEventListener: removeEventListener$1,\n triggerEvent: triggerEvent,\n getCaptionsVisible: getCaptionsVisible,\n setCaptionsVisible: setCaptionsVisible,\n getIsYouTube: getIsYouTube,\n getCaptionCollection: getCaptionCollection,\n getCaptionTrack: getCaptionTrack,\n setCaptionTrack: setCaptionTrack,\n getTocChapters: getTocChapters,\n getProgressBarDisplayWidth: getProgressBarDisplayWidth,\n getCurrentDisplayMode: getCurrentDisplayMode\n}, {});\n\n/**\n * @memberof TSC\n * @class Plugin\n * @classdesc Plugin Object\n * @param {String} pluginName - name of plugin\n * @param {String} viewElementType - view element type to install plugin into\n */\nvar Plugin = function Plugin(pluginName, viewElementType) {\n var _initialized = false;\n var _initializedPromiseResolve;\n var _initializedPromise = new Promise$1(function (resolve) {\n _initializedPromiseResolve = resolve;\n });\n var _pluginName = pluginName;\n var _viewElementType = viewElementType;\n\n /**\n * @function init\n * @memberOf TSC.Plugin\n * Initialize plugin with dom element container that will resolve initialized promise.\n * @param {HTMLElement} pluginContainerElement - dom element that will be the container for plugin UI\n */\n var init = function init(pluginContainerElement) {\n if (_initialized) {\n return;\n }\n _initialized = true;\n _initializedPromiseResolve({\n pluginContainerElement: pluginContainerElement\n });\n };\n return Object.defineProperties({\n init: init\n }, {\n initialized: {\n get: function get() {\n return _initialized;\n }\n },\n initializedPromise: {\n get: function get() {\n return _initializedPromise;\n }\n },\n pluginName: {\n get: function get() {\n return _pluginName;\n }\n },\n viewElementType: {\n get: function get() {\n return _viewElementType;\n }\n }\n });\n};\nvar Plugin$1 = {\n /**\n * Factory method that returns a new Plugin object.\n * @function create\n * @memberof TSC.Plugin\n * @static\n * @return new Plugin instance\n */\n create: Plugin\n};\n\nvar REMOVE_SPACES_REGEX = /\\s+/g;\n\n/**\n * @memberof TSC\n * @class PluginController\n * @classdesc Plugin Controller to wire up external plugins\n */\nvar PluginController = function PluginController() {\n var _plugins = {};\n\n /**\n * @function isViewElementTypeSupported\n * Check to see if a viewElementType is supported.\n * @param {String} viewElementType - view element type for plugin\n * @return {Boolean} return if passed in viewElementType is supported.\n */\n var isViewElementTypeSupported = function isViewElementTypeSupported(viewElementType) {\n return Object.keys(supportedPluginViewElements).some(function (key) {\n return supportedPluginViewElements[key] === viewElementType;\n });\n };\n\n /**\n * @function getPluginsForViewElementType\n * Get a list of plugin objects for the passed in view element type.\n * @param {String} viewElementType - view element type for plugin\n * @return {Array} return an array of supported plugins for the passed in view element type\n */\n var getPluginsForViewElementType = function getPluginsForViewElementType(viewElementType) {\n return Object.keys(_plugins).filter(function (key) {\n return _plugins[key].viewElementType === viewElementType;\n }).map(function (key) {\n return _plugins[key];\n });\n };\n\n /**\n * @function getPluginContainerElement\n * Get a new div element setup for a plugin to append elements to.\n * @param {String} pluginName - name of plugin\n * @return {Element} return a new div element setup for old plugin dom\n */\n var getPluginContainerElement = function getPluginContainerElement(pluginName) {\n var pluginNameNoSpaces = pluginName.replace(REMOVE_SPACES_REGEX, '');\n var pluginNamedContainerClassName = cssClasses.pluginNamedContainerPrefix + pluginNameNoSpaces;\n var pluginContainerElement = document.createElement('div');\n pluginContainerElement.classList.add(cssClasses.generatedPluginContainer);\n pluginContainerElement.classList.add(pluginNamedContainerClassName);\n return pluginContainerElement;\n };\n\n /**\n * @function registerPlugin\n * @methodOf TSC.PluginController\n * @param {String} pluginName - name of plugin\n * @param {String} viewElementType - view element type to install plugin into\n * @return {Promise} return a promise that resolves when the specified view element has initialized the plugin\n */\n var registerPlugin = function registerPlugin(pluginName, viewElementType) {\n if (_plugins[pluginName]) {\n var pluginSameNameMessage = 'Plugin with name [' + pluginName + '] is already registered with the player.';\n log.logMessage(pluginSameNameMessage);\n return Promise$1.reject(pluginSameNameMessage);\n }\n if (!isViewElementTypeSupported(viewElementType)) {\n var pluginUnsupportedViewElementMessage = 'Plugin with name [' + pluginName + '] is registering with an unsupported view element [' + viewElementType + '].';\n log.logMessage(pluginUnsupportedViewElementMessage);\n return Promise$1.reject(pluginUnsupportedViewElementMessage);\n }\n var plugin = Plugin$1.create(pluginName, viewElementType);\n _plugins[pluginName] = plugin;\n return plugin.initializedPromise;\n };\n\n /**\n * @function initializePluginsForViewElement\n * @methodOf TSC.PluginController\n * Initialize all registered plugins for the passed in view element type\n * @param {String} viewElementType - view element type\n * @param {jQuery} $viewElementPluginContainer - jQuery element to add plugin dom elements into.\n */\n var initializePluginsForViewElement = function initializePluginsForViewElement(viewElementType, $viewElementPluginContainer) {\n if (!isViewElementTypeSupported(viewElementType)) {\n log.logMessage('Tried to initialize plugin with unsupported view element type [' + viewElementType + ']');\n return;\n }\n var elementTypePlugins = getPluginsForViewElementType(viewElementType);\n elementTypePlugins.forEach(function (plugin) {\n if (plugin.initialized) {\n return;\n }\n var pluginContainerElement = getPluginContainerElement(plugin.pluginName);\n $viewElementPluginContainer.append(pluginContainerElement);\n plugin.init(pluginContainerElement);\n });\n if (elementTypePlugins.length === 0) {\n $viewElementPluginContainer.hide();\n } else {\n $viewElementPluginContainer.show();\n }\n };\n return Object.defineProperties({\n registerPlugin: registerPlugin,\n initializePluginsForViewElement: initializePluginsForViewElement\n }, {});\n};\nvar PluginController$1 = {\n /**\n * Factory method that returns a new PluginController object.\n * @function create\n * @memberof TSC.PluginController\n * @static\n * @return new PluginController instance\n */\n create: PluginController\n};\n\nvar CamtasiaQuizPreviewView = function CamtasiaQuizPreviewView($container, xmpString) {\n var xmpModel = Xmp.create();\n xmpModel.parse(xmpString);\n return xmpModel.ready.then(function () {\n playerConfiguration.configureFromXmp(xmpModel);\n localizationStrings.configureFromXmp(xmpModel);\n var beforeAfterPlayControlsView = BeforeAfterPlayControlsView$1.create($container, playerConfiguration);\n var noOp = function noOp() {}; // eslint-disable-line\n var playerMarkup = templateGenerator.generateVideoViewMarkup('quiz-preview-' + new Date().getTime());\n $container.html(playerMarkup);\n var ioOverlayView = IoOverlayView$1.create($container);\n var mediaView = VideoElementView$1.create($container, $container.find('.media-container'), ['video.mp4'], true, noOp, noOp, ioOverlayView);\n\n // hack Camtasia quiz preview template to display preview correctly\n var previewElement = document.getElementsByClassName('video-view');\n if (previewElement.length > 0) {\n previewElement[0].style.height = '100%';\n }\n mediaView.mediaElement.style.display = 'none';\n var quizModel = Quiz$1.create(xmpModel);\n var quizController = QuizController$1.create($container, mediaView, quizModel, beforeAfterPlayControlsView, true);\n quizController.displayNextQuestionSet();\n });\n};\nvar CamtasiaQuizPreviewView$1 = {\n create: CamtasiaQuizPreviewView\n};\n\nvar dependencies = {\n\t\"@techsmith/tsc-cloud-style-guide\": \"^24.0.0\",\n\t\"@techsmith/tsc-media-extensions-js\": \"10.7.2\",\n\tjquery: \"^3.5.1\",\n\tpepjs: \"0.4.3\",\n\t\"promise-polyfill\": \"^8.1.0\",\n\ttinycolor2: \"^1.4.1\"\n};\nvar devDependencies = {\n\t\"@babel/core\": \"^7.20.12\",\n\t\"@babel/preset-env\": \"^7.12.13\",\n\t\"@rollup/plugin-alias\": \"^5.1.0\",\n\t\"@rollup/plugin-babel\": \"^6.0.4\",\n\t\"@rollup/plugin-commonjs\": \"^25.0.7\",\n\t\"@rollup/plugin-json\": \"^6.1.0\",\n\t\"@rollup/plugin-node-resolve\": \"^15.2.3\",\n\t\"@rollup/plugin-terser\": \"^0.4.4\",\n\tautoprefixer: \"^6.3.5\",\n\t\"axe-core\": \"^3.2.2\",\n\tcommander: \"^12.0.0\",\n\tcompressing: \"^1.5.0\",\n\tcssnano: \"^3.5.2\",\n\tcypress: \"^10.6.0\",\n\t\"cypress-axe\": \"^1.0.0\",\n\t\"cypress-intellij-reporter\": \"^0.0.7\",\n\tesbuild: \"^0.17.4\",\n\teslint: \"^7.5.0\",\n\t\"eslint-config-techsmith\": \"^1.1.0\",\n\tgrunt: \"~1.6.1\",\n\t\"grunt-banner\": \"^0.6.0\",\n\t\"grunt-cdnify\": \"~1.0.2\",\n\t\"grunt-cli\": \"~1.4.3\",\n\t\"grunt-contrib-clean\": \"~2.0.0\",\n\t\"grunt-contrib-concat\": \"^1.0.1\",\n\t\"grunt-contrib-connect\": \"~2.0.0\",\n\t\"grunt-contrib-copy\": \"~1.0.0\",\n\t\"grunt-contrib-less\": \"^2.0.0\",\n\t\"grunt-contrib-watch\": \"~1.1.0\",\n\t\"grunt-downloadfile\": \"^2.1.1\",\n\t\"grunt-htmlrefs\": \"~0.5.0\",\n\t\"grunt-md2html\": \"~0.3.1\",\n\t\"grunt-newer\": \"~1.3.0\",\n\t\"grunt-open\": \"~0.2.4\",\n\t\"grunt-postcss\": \"^0.9.0\",\n\t\"grunt-replace\": \"~1.0.1\",\n\t\"grunt-shell\": \"^3.0.1\",\n\t\"jasmine-core\": \"^2.5.2\",\n\tkarma: \"^6.3.20\",\n\t\"karma-chrome-launcher\": \"^2.2.0\",\n\t\"karma-jasmine\": \"^1.1.2\",\n\t\"karma-mocha-reporter\": \"^2.2.5\",\n\t\"karma-rollup-preprocessor\": \"^7.0.0\",\n\t\"load-grunt-tasks\": \"^0.4.0\",\n\tlodash: \"^4.17.19\",\n\tmarkdown: \"^0.5.0\",\n\t\"postcss-assets\": \"^4.0.1\",\n\t\"postcss-svg\": \"^1.0.6\",\n\trollup: \"^4.14.0\",\n\t\"rollup-plugin-filesize\": \"^10.0.0\",\n\t\"rollup-plugin-glob-import\": \"^0.5.0\",\n\t\"rollup-plugin-license\": \"^3.3.1\",\n\t\"time-grunt\": \"^2.0.0\",\n\tyamljs: \"^0.2.4\"\n};\nvar license = \"UNLICENSED\";\nvar main = \"dist/techsmith-smart-player.js\";\nvar module$1 = \"dist/techsmith-smart-player.esm.js\";\nvar name = \"@techsmith/techsmith-smartplayer\";\nvar preferGlobal = false;\nvar repository = {\n\ttype: \"git\",\n\turl: \"https://github.com/TechSmith/SmartPlayer.git\"\n};\nvar scripts = {\n\tbuildSmartPlayerIife: \"npx rollup --config rollup.config.mjs --config-env production --config-package smartplayer --config-format iife\",\n\tbuildEmbedIife: \"npx rollup --config rollup.config.mjs --config-env production --config-package embed --config-format iife\",\n\tbuildSmartPlayerEsm: \"npx rollup --config rollup.config.mjs --config-env production --config-package smartplayer --config-format esm\",\n\tbuildPreRollIife: \"npx rollup --config rollup.config.mjs --config-env production --config-package preroll --config-format iife\",\n\tdevSmartPlayerIife: \"npx rollup --config rollup.config.mjs --config-env development --config-package smartplayer --config-format iife\",\n\tdevSmartPlayerEsm: \"npx rollup --config rollup.config.mjs --config-env development --config-package smartplayer --config-format esm\",\n\tdevEmbedIife: \"npx rollup --config rollup.config.mjs --config-env development --config-package embed --config-format iife\",\n\tdevPreRollIife: \"npx rollup --config rollup.config.mjs --config-env development --config-package preroll --config-format iife\",\n\tdevESBIife: \"node ./esbuild.config.js --config-env development --config-package smartplayer --config-format iife\",\n\tdevESBEmbedIife: \"node ./esbuild.config.js --config-env development --config-package embed --config-format iife\",\n\tdevESBPrerollIife: \"node ./esbuild.config.js --config-env development --config-package preroll --config-format iife\",\n\tdevESBIEsm: \"node ./esbuild.config.js --config-env development --config-package smartplayer --config-format esm\",\n\t\"integration-release\": \"grunt integration --rs='bin/integration'\",\n\tlint: \"npx eslint html5/**/*.js\",\n\t\"lint-fix\": \"npx eslint html5/**/*.js --fix\",\n\ttest: \"npx karma start ./karma.config.js --single-run\",\n\t\"test-watch\": \"npx karma start ./karma.config.js\"\n};\nvar version = \"5.121.0\";\nvar packageJson = {\n\tdependencies: dependencies,\n\tdevDependencies: devDependencies,\n\tlicense: license,\n\tmain: main,\n\tmodule: module$1,\n\tname: name,\n\tpreferGlobal: preferGlobal,\n\trepository: repository,\n\tscripts: scripts,\n\tversion: version\n};\n\nvar timeCodeRegex = /^((0?[0-9]:)?[0-5]?[0-9]):([0-5][0-9]) /;\nvar newlineRegex = /\\r?\\n/g;\nvar milliseconds = 1000;\nvar defaultStartTime = 0;\nvar defaultChapterName = localizationStrings.getPlayerString(playerStringNames.defaultFirstChapterName);\nvar getChapterNameFromLineString = function getChapterNameFromLineString(lineString) {\n return lineString.indexOf(' ') === -1 ? defaultChapterName : lineString.substring(lineString.indexOf(' '), lineString.length).trim();\n};\nvar createTocItem = function createTocItem(chapterName, startTime) {\n var chapterParams = {\n name: chapterName,\n startTime: startTime\n };\n if (playerConfiguration.videoThumbnailsSrc) {\n chapterParams.image = playerConfiguration.videoThumbnailsSrc;\n var rect = getThumbnailRectangleByTime(startTime / milliseconds, playerConfiguration.videoThumbnailInterval, playerConfiguration.videoThumbnailColumns, playerConfiguration.videoThumbnailWidth, playerConfiguration.videoThumbnailHeight);\n chapterParams.imageRectangle = ImageRectangle$1.create({\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height\n });\n }\n return TableOfContentsItem$1.create(chapterParams);\n};\nvar parseTableOfContentsItemFromString = function parseTableOfContentsItemFromString(lineString) {\n var timecodes = lineString.match(timeCodeRegex);\n if (timecodes) {\n var chapterName = getChapterNameFromLineString(lineString);\n var chapterStartTime = timeFormatter.convertTimecodeToMilliseconds(timecodes[0]);\n return createTocItem(chapterName, chapterStartTime);\n }\n};\n\n/**\n * Utility function will take a block of text as a string and parse it looking for chapter information to convert to a TOC Model.\n * @function textToTocModel\n * @param {String} textString - A string of text to search to see if it contains chapter information to convert to a TOC model.\n * @returns {TableOfContentsTrack} Table of Contents Track object from TSC media extensions lib.\n */\nvar textToTocModel = function textToTocModel(textString) {\n if (!textString || typeof textString !== 'string') {\n return null;\n }\n var textSplitNewlines = textString.split(newlineRegex);\n var chapterItems = [];\n var previousTocItemStartTime = -1;\n textSplitNewlines.forEach(function (textLine) {\n if (timeCodeRegex.test(textLine)) {\n var tocItem = parseTableOfContentsItemFromString(textLine);\n if (tocItem && tocItem.startTime > previousTocItemStartTime) {\n previousTocItemStartTime = tocItem.startTime;\n chapterItems.push(tocItem);\n }\n }\n });\n\n // insert a default chapter at time 0 if the input did not specify one\n if (chapterItems.length && chapterItems[0].startTime !== 0) {\n chapterItems.unshift(createTocItem(defaultChapterName, defaultStartTime));\n }\n return chapterItems.length ? TableOfContentsTrack$1.create({\n items: chapterItems\n }) : null;\n};\n\nvar deprecatedConfigSetter = function deprecatedConfigSetter(deprecatedName) {\n console.info(\"[SmartPlayer] \".concat(deprecatedName, \" setter is deprecated.\")); // eslint-disable-line no-console\n};\nvar deprecatedConfigGetter = function deprecatedConfigGetter(deprecatedName, returnValue) {\n console.info(\"[SmartPlayer] \".concat(deprecatedName, \" getter is deprecated.\")); // eslint-disable-line no-console\n return returnValue;\n};\n\nvar _started = false;\nvar _controls = mediaInterfaceConstants.controls.autohide;\nvar _authInfo = {};\nvar _lastError = null;\nvar _pluginController = null;\nvar addEventListener = function addEventListener(eventName, callback) {\n if (eventName === events.External.AnalyticsEvent || eventName === events.External.GoogleAnalyticsCustomEvent) {\n playerConfiguration.useCustomEventTracking(true, callback);\n } else if (eventName === events.External.GoogleAnalytics4Event) {\n playerConfiguration.setGA4EventCallback(callback);\n } else {\n mediaPlayer.addEventListener(eventName, callback);\n }\n};\nvar removeEventListener = function removeEventListener(eventName, callback) {\n if (eventName === events.External.AnalyticsEvent || eventName === events.External.GoogleAnalyticsCustomEvent) {\n playerConfiguration.useCustomEventTracking(false, callback);\n } else if (eventName === events.External.GoogleAnalytics4Event) {\n playerConfiguration.setGA4EventCallback(null);\n } else {\n mediaPlayer.removeEventListener(eventName, callback);\n }\n};\nvar setAutoPlay = function setAutoPlay(value) {\n playerConfiguration.setAutoPlayMedia(String(value).toLowerCase() === 'true');\n};\nvar getControls = function getControls() {\n return _controls;\n};\nvar setControls = function setControls(value) {\n var lowerCaseValue = String(value).toLowerCase();\n if (lowerCaseValue === mediaInterfaceConstants.controls[\"false\"]) {\n _controls = mediaInterfaceConstants.controls[\"false\"];\n playerConfiguration.setDisableControls(true);\n playerConfiguration.setAutoHideControls(false);\n playerConfiguration.setDisableYouTubeControls(true);\n } else if (lowerCaseValue === mediaInterfaceConstants.controls[\"true\"]) {\n _controls = mediaInterfaceConstants.controls[\"true\"];\n playerConfiguration.setDisableControls(false);\n playerConfiguration.setAutoHideControls(false);\n playerConfiguration.setDisableYouTubeControls(true);\n } else if (lowerCaseValue === mediaInterfaceConstants.controls.youtube) {\n _controls = mediaInterfaceConstants.controls.youtube;\n playerConfiguration.setDisableControls(true);\n playerConfiguration.setAutoHideControls(false);\n playerConfiguration.setDisableYouTubeControls(false);\n } else {\n // default 'autohide'\n _controls = mediaInterfaceConstants.controls.autohide;\n playerConfiguration.setDisableControls(false);\n playerConfiguration.setAutoHideControls(true);\n playerConfiguration.setDisableYouTubeControls(true);\n }\n mediaPlayer.triggerEvent(events.Controls.Updated);\n};\nvar setDisableInteractions = function setDisableInteractions(disableInteractions) {\n playerConfiguration.setDisableInteractions(disableInteractions);\n mediaPlayer.triggerEvent(events.Controls.Updated);\n};\nvar getLoop = function getLoop() {\n var endActionParam = playerConfiguration.getEndActionParam();\n return playerConfiguration.getEndActionType().toLowerCase() === 'loop' && (endActionParam === 'true' || endActionParam === '1');\n};\nvar setLoop = function setLoop(value) {\n if (String(value).toLowerCase() === 'true') {\n playerConfiguration.setEndActionType('loop');\n playerConfiguration.setEndActionParam('true');\n } else {\n playerConfiguration.setEndActionType('stop');\n playerConfiguration.setEndActionParam('true');\n }\n};\nvar getError = function getError() {\n return _lastError;\n};\nvar setMuted = function setMuted(value) {\n mediaPlayer.setMuted(String(value).toLowerCase() === 'true');\n};\nvar getContextMenuEnabled = function getContextMenuEnabled() {\n return !playerConfiguration.getDisableContextMenuForVideo();\n};\nvar setContextMenuEnabled = function setContextMenuEnabled(value) {\n playerConfiguration.setDisableContextMenuForVideo(!value);\n};\nvar getQuizCreateInstanceUrl = function getQuizCreateInstanceUrl() {\n return quizService.getQuizCreateInstanceUrl();\n};\nvar setQuizCreateInstanceUrl = function setQuizCreateInstanceUrl(value) {\n quizService.setQuizCreateInstanceUrl(value);\n};\nvar getAuthInfo = function getAuthInfo() {\n return _authInfo;\n};\nvar setAuthInfo = function setAuthInfo(value) {\n if (_typeof$1(value) === 'object') {\n _authInfo = $.extend(_authInfo, value);\n }\n};\nvar addMediaSrc = function addMediaSrc(src) {\n playerConfiguration.addMediaSrc(src);\n};\nvar generalErrorHandler = function generalErrorHandler(event) {\n _lastError = event.data;\n};\nvar run = function run(containerId) {\n if (_started) {\n return;\n }\n deviceInfo.lookAtDevice();\n if (_authInfo.accessTokenEndpoint) {\n playerConfiguration.setTechSmithAccessTokenEndpoint(_authInfo.accessTokenEndpoint);\n }\n playerConfiguration.setDisableFullframeMode(true);\n playerConfiguration.setFullViewPort(false);\n mediaPlayer.init('#' + containerId);\n addEventListener('error', generalErrorHandler);\n _started = true;\n};\nvar destroy = function destroy() {\n if (!_started) {\n return;\n }\n var $spElement = mediaPlayer.getSmartPlayerRootElement();\n removeEventListener('error', generalErrorHandler);\n mediaPlayer.destroy();\n if ($spElement) {\n $spElement.removeClass();\n $spElement.empty();\n }\n playerConfiguration.clearConfiguration();\n _started = false;\n _controls = mediaInterfaceConstants.controls.autohide;\n _authInfo = {};\n _lastError = null;\n _pluginController = null;\n};\nvar setTheme = function setTheme(themeName) {\n themeController.setTheme(themeName);\n};\nvar setupPluginController = function setupPluginController() {\n _pluginController = PluginController$1.create();\n playerConfiguration.setPluginController(_pluginController);\n};\nvar registerPlugin = function registerPlugin(pluginName, viewElementType) {\n if (!_pluginController) {\n setupPluginController();\n }\n var pluginInitPromise = _pluginController.registerPlugin(pluginName, viewElementType);\n mediaPlayer.triggerEvent(events.Plugin.Added, {\n viewElementType: viewElementType\n });\n return pluginInitPromise;\n};\nvar displayQuizPreview = function displayQuizPreview(containerElement, xmpString) {\n var $container = $(containerElement);\n CamtasiaQuizPreviewView$1.create($container, xmpString);\n};\nvar displayImageFullscreen = function displayImageFullscreen() {\n mediaPlayer.triggerEvent(events.External.SwitchToFullscreen);\n};\nvar exitImageFullscreen = function exitImageFullscreen() {\n mediaPlayer.triggerEvent(events.External.ExitFullscreen);\n};\nvar createTocFromDescription = function createTocFromDescription(descriptionText) {\n if (descriptionText && typeof descriptionText === 'string') {\n var tocModel = textToTocModel(decodeURIComponent(descriptionText));\n if (tocModel) {\n playerConfiguration.tocModelFromDescription = tocModel;\n }\n }\n};\nvar mediaInterfaceController = Object.defineProperties({\n play: mediaPlayer.play,\n pause: mediaPlayer.pause,\n addEventListener: addEventListener,\n removeEventListener: removeEventListener,\n addSrc: addMediaSrc,\n addCaptionSrc: playerConfiguration.addCaptionSrc,\n run: run,\n destroy: destroy,\n setTheme: setTheme,\n registerPlugin: registerPlugin,\n displayQuizPreview: displayQuizPreview,\n displayImageFullscreen: displayImageFullscreen,\n exitImageFullscreen: exitImageFullscreen,\n getSafeSeekTime: mediaPlayer.getSafeSeekTime,\n createTocFromDescription: createTocFromDescription\n}, {\n version: {\n get: function get() {\n return packageJson.version;\n }\n },\n autoplay: {\n get: playerConfiguration.getAutoPlayMedia,\n set: setAutoPlay\n },\n controls: {\n get: getControls,\n set: setControls\n },\n disableInteractions: {\n get: playerConfiguration.getDisableInteractions,\n set: setDisableInteractions\n },\n currentSrc: {\n get: mediaPlayer.getCurrentSrc\n },\n currentTime: {\n get: mediaPlayer.getCurrentTime,\n set: mediaPlayer.setCurrentTime\n },\n duration: {\n get: mediaPlayer.getDuration\n },\n error: {\n get: getError\n },\n ended: {\n get: mediaPlayer.getEnded\n },\n loop: {\n get: getLoop,\n set: setLoop\n },\n muted: {\n get: mediaPlayer.getMuted,\n set: setMuted\n },\n paused: {\n get: mediaPlayer.getPaused\n },\n playbackRate: {\n get: mediaPlayer.getPlaybackRate,\n set: mediaPlayer.setPlaybackRate\n },\n buffered: {\n get: mediaPlayer.getBuffered\n },\n played: {\n get: mediaPlayer.getPlayed\n },\n seekable: {\n get: mediaPlayer.getSeekable\n },\n preload: {\n get: playerConfiguration.getPreload,\n set: playerConfiguration.setPreload\n },\n seeking: {\n get: mediaPlayer.getSeeking\n },\n volume: {\n get: mediaPlayer.getVolume,\n set: mediaPlayer.setVolume\n },\n src: {\n get: playerConfiguration.getMediaSrc,\n set: playerConfiguration.setMediaSrc\n },\n // these are the SP extended interface options\n posterSrc: {\n get: playerConfiguration.getPosterImageSrc,\n set: playerConfiguration.setPosterImageSrc\n },\n xmpSrc: {\n get: playerConfiguration.getXMPSrc,\n set: playerConfiguration.setXMPSrc\n },\n tocSrc: {\n get: playerConfiguration.getTOCSpriteSrc,\n set: playerConfiguration.setTOCSpriteSrc\n },\n mediaTitle: {\n get: playerConfiguration.getMediaTitle,\n set: playerConfiguration.setMediaTitle\n },\n tocTitle: {\n get: playerConfiguration.getTOCTitle,\n set: playerConfiguration.setTOCTitle\n },\n tocChapters: {\n get: mediaPlayer.getTocChapters\n },\n prerollSrc: {\n get: playerConfiguration.getPreRollSrc,\n set: playerConfiguration.setPreRollSrc\n },\n audioDescriptionMediaSrc: {\n get: playerConfiguration.getAudioDescriptionMediaSrc,\n set: playerConfiguration.setAudioDescriptionMediaSrc\n },\n quizId: {\n get: playerConfiguration.getFathomId,\n set: playerConfiguration.setFathomId\n },\n quizCreateInstanceUrl: {\n get: getQuizCreateInstanceUrl,\n set: setQuizCreateInstanceUrl\n },\n background: {\n get: playerConfiguration.getBackgroundColor,\n set: playerConfiguration.setBackgroundColor\n },\n captions: {\n get: mediaPlayer.getCaptionCollection\n },\n captionTrack: {\n get: mediaPlayer.getCaptionTrack,\n set: mediaPlayer.setCaptionTrack\n },\n captionsVisible: {\n get: mediaPlayer.getCaptionsVisible,\n set: mediaPlayer.setCaptionsVisible\n },\n ignoreStoredCaptionVisible: {\n get: playerConfiguration.getIgnoreStoredCaptionVisibleSetting,\n set: playerConfiguration.setIgnoreStoredCaptionVisibleSetting\n },\n rotation: {\n get: playerConfiguration.getMediaRotation,\n set: playerConfiguration.setMediaRotation\n },\n scrubbing: {\n get: mediaPlayer.getScrubbing,\n set: mediaPlayer.setScrubbing\n },\n isYouTube: {\n get: mediaPlayer.getIsYouTube\n },\n isInFullScreenMode: {\n get: mediaPlayer.isInFullScreenMode\n },\n authInfo: {\n get: getAuthInfo,\n set: setAuthInfo\n },\n // debug layer flags\n contextMenu: {\n get: getContextMenuEnabled,\n set: setContextMenuEnabled\n },\n isIphoneOrIpod: {\n get: deviceInfo.isIPhoneOrIPod\n },\n endActionType: {\n get: playerConfiguration.getEndActionType,\n set: playerConfiguration.setEndActionType\n },\n endActionParam: {\n get: playerConfiguration.getEndActionParam,\n set: playerConfiguration.setEndActionParam\n },\n ignoreXmpControllerParameters: {\n get: playerConfiguration.getIgnoreXmpControllerParameters,\n set: playerConfiguration.setIgnoreXmpControllerParameters\n },\n ignoreQuizQuestions: {\n get: playerConfiguration.getIgnoreQuizQuestions,\n set: playerConfiguration.setIgnoreQuizQuestions\n },\n singleClickControlEnabled: {\n get: playerConfiguration.getEnableSingleClickControl,\n set: playerConfiguration.setEnableSingleClickControl\n },\n doubleClickControlEnabled: {\n get: playerConfiguration.getEnableDoubleClickControl,\n set: playerConfiguration.setEnableDoubleClickControl\n },\n useLargerProgressBar: {\n get: playerConfiguration.getUseLargerProgressBar,\n set: playerConfiguration.setUseLargerProgressBar\n },\n displayHotspotsShape: {\n get: playerConfiguration.getDisplayHotspotsShape,\n set: playerConfiguration.setDisplayHotspotsShape\n },\n disablePictureInPicture: {\n get: playerConfiguration.getDisablePictureInPicture,\n set: playerConfiguration.setDisablePictureInPicture\n },\n contentBase: {\n get: playerConfiguration.getContentBase,\n set: playerConfiguration.setContentBase\n },\n skipVideoControlsEnabled: {\n get: playerConfiguration.getSkipVideoControlsEnabled,\n set: playerConfiguration.setSkipVideoControlsEnabled\n },\n skipVideoDuration: {\n get: playerConfiguration.getSkipVideoDuration,\n set: playerConfiguration.setSkipVideoDuration\n },\n allowFastForward: {\n get: playerConfiguration.getAllowFastForward,\n set: playerConfiguration.setAllowFastForward\n },\n showADACompliantCaptions: {\n get: playerConfiguration.getShowADACompliantCaptions,\n set: playerConfiguration.setShowADACompliantCaptions\n },\n rememberUserInfo: {\n get: playerConfiguration.getRememberUserInfo,\n set: playerConfiguration.setRememberUserInfo\n },\n userInfo: {\n get: playerConfiguration.getUserInfo,\n set: playerConfiguration.setUserInfo\n },\n userSignedIn: {\n get: playerConfiguration.getUserSignedIn,\n set: playerConfiguration.setUserSignedIn\n },\n disableContinueWithoutQuestions: {\n get: playerConfiguration.getDisableContinueWithoutQuestions,\n set: playerConfiguration.setDisableContinueWithoutQuestions\n },\n logScormApiCalls: {\n get: playerConfiguration.getLogScormApiCalls,\n set: playerConfiguration.setLogScormApiCalls\n },\n videoThumbnailsSrc: {\n get: playerConfiguration.getVideoThumbnailSrc,\n set: playerConfiguration.setVideoThumbnailSrc\n },\n videoThumbnailWidth: {\n get: playerConfiguration.getVideoThumbnailWidth,\n set: playerConfiguration.setVideoThumbnailWidth\n },\n videoThumbnailHeight: {\n get: playerConfiguration.getVideoThumbnailHeight,\n set: playerConfiguration.setVideoThumbnailHeight\n },\n videoThumbnailInterval: {\n get: playerConfiguration.getVideoThumbnailInterval,\n set: playerConfiguration.setVideoThumbnailInterval\n },\n videoThumbnailColumns: {\n get: playerConfiguration.getVideoThumbnailColumns,\n set: playerConfiguration.setVideoThumbnailColumns\n },\n completeScormOnRequirementsComplete: {\n get: playerConfiguration.getCompleteScormOnRequirementsComplete,\n set: playerConfiguration.setCompleteScormOnRequirementsComplete\n },\n progressBarWidth: {\n get: mediaPlayer.getProgressBarDisplayWidth\n },\n quizServiceBaseUrl: {\n get: playerConfiguration.getQuizServiceBaseUrl,\n set: playerConfiguration.setQuizServiceBaseUrl\n },\n resultsServiceBaseUrl: {\n get: playerConfiguration.getResultsServiceBaseUrl,\n set: playerConfiguration.setResultsServiceBaseUrl\n },\n customFullScreenDomElement: {\n get: playerConfiguration.getCustomFullScreenDomElement,\n set: playerConfiguration.setCustomFullScreenDomElement\n },\n enableTheaterMode: {\n get: playerConfiguration.getEnableTheaterMode,\n set: playerConfiguration.setEnableTheaterMode\n },\n currentDisplayMode: {\n get: function get() {\n return mediaPlayer.getCurrentDisplayMode() || DisplayModes.Normal;\n }\n },\n ga4EventCallback: {\n get: playerConfiguration.getGA4EventCallback,\n set: playerConfiguration.setGA4EventCallback\n },\n showAcknowledgementLink: {\n get: playerConfiguration.getShowAcknowledgementLink,\n set: playerConfiguration.setShowAcknowledgementLink\n },\n // deprecated\n environment: {\n get: function get() {\n return deprecatedConfigGetter('mediaInterface.environment', 0);\n },\n set: function set() {\n deprecatedConfigSetter('mediaInterface.environment');\n }\n }\n});\n\nexport { deviceInfo, DisplayModes as displayModes, events, fathomService, languageCodes, localizationStrings, log, mediaInterfaceController as mediaInterface, mediaInterfaceConstants, mediaPlayer, playerConfiguration, preloadOptions, quizService, scormController$1 as scormController, supportedPluginViewElements, themeNames };\n//# sourceMappingURL=techsmith-smart-player.esm.js.map\n"],"names":["commonjsGlobal","globalThis","window","g","self","getDefaultExportFromCjs","x","__esModule","Object","prototype","hasOwnProperty","call","module","exports","MOUSE_PROPS","MOUSE_DEFAULTS","PointerEvent","inType","inDict","create","e","document","createEvent","initEvent","bubbles","cancelable","p","i","length","buttons","pressure","clientX","y","clientY","pointerId","width","height","tiltX","tiltY","twist","tangentialPressure","pointerType","hwTimestamp","isPrimary","PointerMap","Map","forEach","SparseArrayMap","this","array","size","set","k","v","undefined","has","get","clear","callback","thisArg","CLONE_PROPS","CLONE_DEFAULTS","BOUNDARY_EVENTS","HAS_SVG_INSTANCE","SVGElementInstance","dispatcher","pointermap","eventMap","captureInfo","eventSources","eventSourceList","registerSource","name","source","s","newEvents","events","bind","push","register","element","es","l","unregister","contains","container","contained","ex","down","inEvent","fireEvent","move","up","enter","leave","over","out","cancel","leaveOut","event","propagate","enterOver","eventHandler","_handledByPE","type","fn","listen","target","addEvent","unlisten","removeEvent","eventName","addEventListener","boundHandler","removeEventListener","makeEvent","relatedTarget","preventDefault","_target","dispatchEvent","cloneEvent","eventCopy","correspondingUseElement","getTarget","capture","propagateDown","targets","parentNode","reverse","setCapture","inPointerId","inTarget","skipDispatch","releaseCapture","implicitRelease","asyncDispatchEvent","t","requestAnimationFrame","targeting","shadow","inEl","shadowRoot","webkitShadowRoot","canTarget","Boolean","elementFromPoint","targetingShadow","olderShadow","os","olderShadowRoot","se","querySelector","allShadows","shadows","searchRoot","inRoot","st","sr","ssr","owner","nodeType","Node","DOCUMENT_NODE","DOCUMENT_FRAGMENT_NODE","findTarget","Array","map","toArray","slice","filter","MO","MutationObserver","WebKitMutationObserver","SELECTOR","OBSERVER_INIT","subtree","childList","attributes","attributeOldValue","attributeFilter","Installer","add","remove","changed","binder","addCallback","removeCallback","changedCallback","observer","mutationWatcher","shadowSelector","selector","rule","watchSubtree","observe","enableOnSubtree","readyState","installOnLoad","installNewSubtree","findElements","addElement","querySelectorAll","removeElement","el","elementChanged","oldValue","concatLists","accum","list","concat","isElement","n","ELEMENT_NODE","flattenMutationTree","inNodes","tree","reduce","mutations","mutationHandler","m","addedNodes","removedNodes","attrib2css","selectors","styles","hasNativePE","MSPointerEvent","hasShadowRoot","ShadowDOMPolyfill","head","createShadowRoot","applyAttributeStyles","r","String","createElement","textContent","appendChild","DEDUP_DIST","BUTTON_TO_BUTTONS","HAS_BUTTONS","MouseEvent","INSTALLER","mouseEvents","POINTER_ID","POINTER_TYPE","lastTouches","isEventSimulatedFromTouch","lts","dx","Math","abs","dy","prepareEvent","pd","prepareButtonsForMove","which","mousedown","button","mousemove","mouseup","mouseover","mouseout","deactivateMouse","pointermap$1","DEDUP_TIMEOUT","CLICK_COUNT_TIMEOUT","ATTRIB","touchEvents","elementAdded","a","getAttribute","touchActionToScrollType","_scrollType","elementRemoved","oldSt","scrollTypes","EMITTER","XSCROLLER","YSCROLLER","SCROLLER","touchAction","exec","firstTouch","isPrimaryTouch","inTouch","identifier","setPrimaryTouch","firstXY","X","Y","scrolling","cancelResetClickCount","removePrimaryPointer","inPointer","resetClickCount","clickCount","resetId","setTimeout","clearTimeout","typeToButtons","ret","touchToPointer","cte","currentTouchEvent","id","detail","radiusX","webkitRadiusX","radiusY","webkitRadiusY","force","webkitForce","altKey","ctrlKey","metaKey","shiftKey","processTouches","inFunction","tl","changedTouches","shouldScroll","scrollAxis","currentTarget","oa","findTouch","inTL","inId","vacuumTouches","touches","d","value","key","cancelOut","touchstart","dedupSynthMouse","overDown","outTarget","touchmove","touchcancel","moveOverOut","pointer","outEvent","touchend","upOut","cleanUpPointer","lt","indexOf","splice","h","pointermap$2","HAS_BITMAP_TYPE","MSPOINTER_TYPE_MOUSE","msEvents","POINTER_TYPES","cleanup","MSPointerDown","MSPointerMove","MSPointerUp","MSPointerOut","MSPointerOver","MSPointerCancel","MSLostPointerCapture","MSGotPointerCapture","applyPolyfill","navigator","msPointerEnabled","tp","msMaxTouchPoints","defineProperty","enumerable","ontouchstart","assertActive","error","Error","assertConnected","elem","parent","ownerDocument","inActiveButtonState","applyPolyfill$1","Element","setPointerCapture","defineProperties","msSetPointerCapture","msReleasePointerCapture","targetFinding","factory","freeze","External","VideoStartInitiated","VideoStart","VideoEnd","VideoReplay","MediaError","MediaReady","CaptionChange","Ready","VideoPlay","PlayerFullScreenModeChanged","PlayerRumData","GoogleAnalyticsCustomEvent","AnalyticsEvent","GoogleAnalytics4Event","QuizVisible","QuizHidden","ShowStartQuizPrompt","HideStartQuizPrompt","SwitchToFullscreen","ExitFullscreen","PlayerSettingsOpen","PlayerSettingsClose","PlayerControlsHidden","PlayerControlsVisible","PlayerResize","HeroControlHidden","ImagePointerOver","ImagePointerLeave","DisplayModeChanged","CaptionsHidden","CaptionsVisible","CaptionsReady","ExternalVideo","VideoLoadStart","VideoLoadedMetadata","VideoLoadedData","VideoCanPlay","VideoCanPlayThrough","VideoPlaying","VideoWaiting","VideoSeeking","VideoSeeked","VideoEnded","VideoPause","VideoResize","VideoError","VideoVolumeChange","VideoDurationChange","VideoRateChange","VideoTimeUpdate","VideoProgress","Player","MediaControlsReady","MediaExtensionsReady","Controls","ClickPrev","ClickNext","FullScreenChange","ToggleFullScreen","ExpandVideo","ShowToc","HideToc","TocScroll","Disable","Enable","Updated","HotspotClicked","PipChanged","TheaterModeChanged","MediaResize","PlayerInitialized","ShowVideoBufferingView","HideVideoBufferingView","VideoControlsHidden","HideVideoControls","VideoControlsVisible","ShowVideoControls","DisplayCaptionControl","DisplayTocControl","TocDisplayToggled","FocusTocButton","HeroPlayControlClicked","HeroPlayControlVisible","HeroPlayControlHidden","ReplayControlVisible","ReplayControlHidden","StartedPlayback","HideIOOverlay","SearchFocusChange","HideLoadingMessage","Hotspots","Paused","Resume","AreaActive","AreaInactive","Media","Play","Playing","Pause","SeekToTime","Replay","End","Abort","Suspend","Emptied","Stalled","Progress","InitializeCurrent","SourceChanged","TryToAutoPlay","SetVolume","SetMutedState","SetPlaybackRate","FirstPlay","IFrame","EnterFullFrame","ExitFullFrame","Update","QuizMarkers","PlayProgress","LoadProgress","NextQuestionPosition","Scrubbing","Started","Ended","Quizzing","QuizSetupComplete","Complete","Review","Begin","BeginClicked","Skip","SkipClicked","Status","SubmittingInstance","CreatedInstance","Submitted","ShowSubmissionRetryMessage","HideSubmissionRetryMessage","TransitionImageQuizToAnswers","HideQuiz","ShowQuizBar","ShowQuizSetup","ShowQuestionSetView","CloseQuestionSetView","SubmitQuestionSet","RationaleActionLocation","RationaleActionJumpToTime","QuizIsOutOfDate","QuizBadDefinition","MinimizeUI","MaximizeUI","UIVisible","UIHidden","Captions","Toggled","StateLoaded","Changed","LanguageChanged","DragStart","DragEnd","Resized","CaptionService","NewCaptionTrack","AudioDescription","Failed","Timing","PlayerLoaded","VideoMetadataLoaded","VideoHasEnoughData","GA4","VideoStarted","VideoLoadingTimeInSeconds","VideoLoadingTime","VideoPercentViewed","VideoFinishedAction","VideoFinished","OpenExternalLinkView","OpenExternalLinkClick","HotspotAction","CouldNotPlaySmoothlyIn20Secs","PlaybackWasStoppedToBuffer","Analytics","ContentLoaded","Plugin","Added","MediaAreaPluginMouseDown","MediaAreaPluginMouseUp","MediaAreaPluginKeyDown","MediaAreaPluginKeyUp","Network","Retrying","Fathom","GetComplete","Modals","Open","Closed","ExternalLinkView","Clicked","SCORM","ExitSession","ExitSessionConfirmed","ExitSessionWithOutProgressConfirmed","ResumeSession","FailedToFindApi","Images","PointerOver","PointerLeave","supportedPluginViewElements","PROGRESS_BAR","MEDIA","BEFORE_AFTER_PLAY_CONTROLS","PLAYER","_supportedLanguages","languageCodes","ENGLISH","GERMAN","JAPANESE","FRENCH","SPANISH","CHINESE","PORTUGUESE","ENU","DEU","JPN","FRA","SP","ZH","PT","isValid","language","some","supportedLanguage","mediaInterfaceConstants","controls","autohide","youtube","_typeof$1","o","Symbol","iterator","constructor","arrayMap","iteratee","index","result","eq","other","assocIndexOf","ListCache","entries","entry","__data__","data","pop","freeGlobal","freeSelf","root","Function","_Symbol","objectProto","nativeObjectToString","toString","symToStringTag","toStringTag","nativeObjectToString$1","nullTag","undefinedTag","symToStringTag$1","baseGetTag","isOwn","tag","unmasked","getRawTag","objectToString","isObject","asyncTag","funcTag","genTag","proxyTag","isFunction","uid","coreJsData","maskSrcKey","keys","IE_PROTO","funcToString","toSource","func","reIsHostCtor","funcProto$1","objectProto$2","funcToString$1","hasOwnProperty$1","reIsNative","RegExp","replace","baseIsNative","test","getNative","object","getValue","Map$1","nativeCreate","hasOwnProperty$2","hasOwnProperty$3","Hash","getMapData","MapCache","Stack","pairs","LARGE_ARRAY_SIZE","SetCache","values","arraySome","predicate","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","equalArrays","bitmask","customizer","equalFunc","stack","isPartial","arrLength","othLength","stacked","seen","arrValue","othValue","compared","othIndex","Uint8Array","mapToArray","setToArray","COMPARE_PARTIAL_FLAG$1","COMPARE_UNORDERED_FLAG$1","boolTag","dateTag","errorTag","mapTag","numberTag","regexpTag","setTag","stringTag","symbolTag","arrayBufferTag","dataViewTag","symbolProto","symbolValueOf","valueOf","arrayPush","offset","isArray$1","isArray","baseGetAllKeys","keysFunc","symbolsFunc","arrayFilter","resIndex","stubArray","propertyIsEnumerable","nativeGetSymbols","getOwnPropertySymbols","getSymbols","symbol","isObjectLike","baseIsArguments","objectProto$6","hasOwnProperty$4","propertyIsEnumerable$1","isArguments","arguments","freeExports","freeModule","Buffer","isBuffer","MAX_SAFE_INTEGER","reIsUint","isIndex","MAX_SAFE_INTEGER$1","isLength","typedArrayTags","baseUnary","freeExports$1","freeModule$1","freeProcess","process","nodeUtil","types","require","binding","nodeIsTypedArray","isTypedArray","hasOwnProperty$5","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","baseTimes","objectProto$8","isPrototype","Ctor","overArg","transform","arg","nativeKeys","hasOwnProperty$6","isArrayLike","keys$1","baseKeys","getAllKeys","COMPARE_PARTIAL_FLAG$2","hasOwnProperty$7","DataView","Promise$2","Set","WeakMap","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ArrayBuffer","resolve","ctorString","getTag$1","COMPARE_PARTIAL_FLAG$3","argsTag$2","arrayTag$1","objectTag$2","hasOwnProperty$8","baseIsEqualDeep","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","byteLength","byteOffset","buffer","message","convert","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","skipCtor","objValue","objCtor","othCtor","equalObjects","baseIsEqual","COMPARE_PARTIAL_FLAG$4","COMPARE_UNORDERED_FLAG$2","isStrictComparable","matchesStrictComparable","srcValue","baseMatches","matchData","getMatchData","noCustomizer","baseIsMatch","symbolTag$1","isSymbol","reIsDeepProp","reIsPlainProp","isKey","FUNC_ERROR_TEXT","memoize","resolver","TypeError","memoized","args","apply","cache","Cache","rePropName","reEscapeChar","stringToPath","string","charCodeAt","match","number","quote","subString","INFINITY","symbolProto$1","symbolToString","baseToString","castPath","INFINITY$1","toKey","baseGet","path","baseHasIn","hasPath","hasFunc","COMPARE_PARTIAL_FLAG$5","COMPARE_UNORDERED_FLAG$3","baseMatchesProperty","defaultValue","hasIn","identity","property","basePropertyDeep","baseIteratee","fromRight","baseFor","iterable","props","baseEach","eachFunc","collection","createBaseEach","baseMap","arrayEach","baseFindIndex","fromIndex","NAN","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","INFINITY$2","MAX_INTEGER","toFinite","isBinary","toNumber","toInteger","remainder","nativeMax","max","findIndex","findIndexFunc","find","baseFilter","FUNC_ERROR_TEXT$1","reject$1","negate","last","baseSlice","start","end","nativeMax$1","baseSetToString","nativeNow","Date","now","shortOut","count","lastCalled","stamp","remaining","setToString","baseRest","otherArgs","overRest","invokeMap","isFunc","baseInvoke","splice$1","indexes","lastIndex","previous","basePullAt","parseXml","wellKnownNamespaces","xml","rdf","dc","exif","stDim","stFnt","tsc","tscDM","tscHS","tscIQ","xmp","xmpDM","xmpG","xmpMM","namespaceResolver","prefix","stringTag$2","isString","isNil","DOMParser","canParseHtmlNatively","DOMParserProto","realParseFromString","parseFromString","markup","firstElement","doc","implementation","createHTMLDocument","docElement","documentElement","innerHTML","firstElementChild","childElementCount","localName","toLowerCase","replaceChild","xmlStr","contentType","ActiveXObject","xmlDoc","async","loadXML","getElementText","getElementsByTagName","getElementsByTagNameNS","getFirstElementByTagName","childElements","XmlUtility","xmlDocFragmentToString","XMLSerializer","serializeToString","xmlDocToString","hasAttribute","attributeName","hasAttributeWithValue","createDocument","createElementWithValue","createTextNode","getFirstChildElementTextByTagName","childElement","createElementNS","ns","getNSInfo","tagName","nameParts","split","nsUrl","nsPrefix","tagShortName","NamespaceXmlUtility","getFirstElementByTagNameNSPrefix","docOrElement","evaluate","isDocument","XPathResult","FIRST_ORDERED_NODE_TYPE","singleNodeValue","getElementsByTagNameNSPrefix","tokens","getFirstChildElementTextByTagNameNSPrefix","createDocumentNS","createElementFromObject","tagInfo","that","toXmp","nsInfo","newElement","atts","attrVal","attrName","attNsInfo","setAttributeNS","setAttribute","children","child","text","createElementNSWithValue","LanguageIdentifier$1","languageIdentifier","languageIdentifierParts","_identifier","_language","_region","join","toPOJO","region","_identifiers","af","displayName","regions","za","sq","al","ar","dz","bh","eg","iq","jo","kw","lb","ly","ma","om","qa","sa","sy","tn","ae","ye","hy","am","az","eu","be","by","bg","ca","zh","cn","hk","mo","sg","tw","chs","cht","hr","cs","cz","da","dk","div","mv","nl","en","au","bz","cb","ie","jm","nz","ph","tt","gb","us","zw","et","ee","fo","fa","ir","fi","fr","lu","mc","ch","gl","ka","ge","de","at","li","gr","gu","he","il","hi","hu","is","it","ja","jp","kn","kk","kz","kok","ko","kr","ky","lv","mk","ms","bn","my","mr","mn","nb","no","nn","pl","pt","br","pa","ro","ru","sp","sk","sl","si","bo","cl","co","cr","ec","sv","gt","hn","mx","ni","py","pe","pr","uy","ve","sw","ke","syr","ta","te","th","tr","uk","ua","ur","pk","uz","vi","vn","languageIdentifiers","isSupportedLanguage","languageIdentifierString","identifiers","setTimeoutFunc$1","noop$2","Promise$1$1","_state","_handled","_value","_deferreds","doResolve$1","handle$1","deferred","_immediateFn","onFulfilled","onRejected","reject$1$1","promise","resolve$1","newValue","then","finale$1","_unhandledRejectionFn","len","Handler$1","done","reason","prom","reject","all","arr","res","val","race","setImmediate","err","console","warn","UndoAction","undoFunc","undoParams","redoFunc","redoParams","execute","UndoAction$1","ImageRectangle$1","propertyInfo","_x","_y","_width","_height","Number","_public","toXmpAtt","ImageRectangle","isBlacklistedTag","strTag","findNextTag","strTextToSearch","nStartPoint","nPosition","nCode","getTagAt","strText","nTagPosition","nEnd","substring","findNextTagNotBlacklisted","getTextToCloseTag","arrStack","strCloseTags","arrOpenTags","strCloseTagNeeded","matchingTag","strOpenTagNeeded","isClosingTag","strToMatch","strMatch","removeTag","strToFix","nTagEnd","trimString","charAt","Rtf","str","removeLastBracket","strFixed","nCountCorrectedThisLoop","nNextPosition","strAlternateTag","strNextTag","nStringBetweenBegin","strBetween","removeEmptyTags","arrTagStack","nestTags","CaptionText","params","_text","_plainText","_markupText","_languageIdentifier","_additionalParamProperties","_xmlUtility","setLanguageIdentifier","previousLanguageIdentifierString","setText","plainText","markupText","treeDesc","pojo","validateParams","CaptionText$1","textElement","rtfText","decoratorFunctions","nullCaptionText","Caption","_startTime","_duration","_horizontalAlignment","_verticalAlignment","_file","_image","_imageIndex","_imageOffset","_imageRectangle","_captionTextList","_activeLanguageIdentifier","setStartTime","startTime","floor","setDuration","duration","addOrReplaceCaptionText","newCaptionText","existingCaptionItemIndex","captionItem","oldCaptionItem","removeCaptionText","captionText","removedCaptionItems","captionTextItem","removedCaptionItem","setHorizontalAlignment","horizontalAlignment","setVerticalAlignment","verticalAlignment","setFile","file","setImage","image","setImageIndex","imageIndex","setImageOffset","imageOffset","setImageRectangle","imageRectangle","getCaptionText","preferredCaptionText","endTime","captionTextList","activeLanguageIdentifier","getAvailableLanguages","Caption$1","captionElement","tinycolor$1","createCommonjsModule","trimLeft","trimRight","tinyCounter","mathRound","round","mathMin","min","mathMax","mathRandom","random","tinycolor","color","opts","rgb","b","ok","format","named","names","matchers","rgba","hsl","hsla","hsv","hsva","hex8","parseIntFromHex","convertHexToDecimal","hex6","hex4","hex3","stringInputToObject","isValidCSSUnit","bound01","substr","convertToPercentage","f","q","mod","hsvToRgb","hue2rgb","hslToRgb","boundAlpha","inputToRGB","_originalInput","_r","_g","_b","_a","_roundA","_format","_gradientType","gradientType","_ok","_tc_id","rgbToHsl","rgbToHsv","rgbToHex","allow3Char","hex","pad2","rgbaToArgbHex","convertDecimalToHex","_desaturate","amount","toHsl","clamp01","_saturate","_greyscale","desaturate","_lighten","_brighten","toRgb","_darken","_spin","hue","_complement","_triad","_tetrad","_splitcomplement","_analogous","results","slices","part","_monochromatic","toHsv","modification","isDark","getBrightness","isLight","getOriginalInput","getFormat","getAlpha","getLuminance","RsRGB","GsRGB","BsRGB","pow","setAlpha","toHsvString","toHslString","toHex","toHexString","toHex8","allow4Char","rgbaToHex","toHex8String","toRgbString","toPercentageRgb","toPercentageRgbString","toName","hexNames","toFilter","secondColor","hex8String","secondHex8String","formatSet","formattedString","hasAlpha","clone","_applyModification","lighten","brighten","darken","saturate","greyscale","spin","_applyCombination","analogous","complement","monochromatic","splitcomplement","triad","tetrad","fromRatio","newColor","equals","color1","color2","mix","rgb1","rgb2","readability","c1","c2","isReadable","wcag2","wcag2Parms","parms","level","toUpperCase","validateWCAG2Parms","mostReadable","baseColor","colorList","includeFallbackColors","bestColor","bestScore","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","flipped","flip","parseFloat","isNaN","isOnePointZero","processPercent","isPercentage","c","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","MAX_ARRAY_INDEX","MAX_ARRAY_LENGTH","nativeFloor","nativeMin","sortedIndexBy","retHighest","low","high","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","mid","computed","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedIndexBy","baseAssignValue","hasOwnProperty$9","assignValue","copyObject","isNew","hasOwnProperty$a","baseKeysIn","nativeKeysIn","isProto","keysIn$1","freeExports$2","freeModule$2","Buffer$1","allocUnsafe","copyArray","getPrototype","getPrototypeOf","getSymbolsIn","getAllKeysIn","hasOwnProperty$b","cloneArrayBuffer","arrayBuffer","reFlags","symbolProto$2","symbolValueOf$1","boolTag$2","dateTag$2","mapTag$3","numberTag$2","regexpTag$2","setTag$3","stringTag$3","symbolTag$2","arrayBufferTag$2","dataViewTag$3","float32Tag$1","float64Tag$1","int8Tag$1","int16Tag$1","int32Tag$1","uint8Tag$1","uint8ClampedTag$1","uint16Tag$1","uint32Tag$1","initCloneByTag","isDeep","dataView","cloneDataView","typedArray","cloneTypedArray","regexp","cloneRegExp","objectCreate","baseCreate","proto","nodeIsMap","isMap","nodeIsSet","isSet","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","argsTag$3","funcTag$2","genTag$1","objectTag$3","cloneableTags","baseClone","isFlat","isFull","input","initCloneArray","copy","cloneBuffer","initCloneObject","copySymbolsIn","baseAssignIn","copySymbols","baseAssign","subValue","keysIn","spreadableSymbol","isConcatSpreadable","isFlattenable","baseFlatten","depth","isStrict","compareAscending","valIsDefined","valIsReflexive","baseOrderBy","iteratees","orders","comparer","sort","baseSortBy","objCriteria","criteria","othCriteria","ordersLength","compareMultiple","isIterateeCall","sortBy","CaptionCollection","_captions","_captionLanguages","addCaptionFromLanguageCodeCache","caption","addCaption","removeCaption","removeCaptionFromLanguageCodeCache","setCaptions","captions","setActiveLanguageIdentifier","previousActiveLanguageIdentifierString","getActiveLanguageIdentifier","mergeCaptions","captionsToMerge","captionToMerge","matchingCaption","existingCaption","captionsClone","CaptionCollection$1","_defaults$1","fontFamily","fontSize","fgColor","bgColor","CaptionTrack","_fgColor","_bgColor","_fontFamily","_fontSize","parseFontSize","_position","position","_barHeight","barHeight","_captionCollection","attsFromColor","tinycolorToSimpleRgb","tinycolorObj","rgbaColorObj","fgHexColor","bgOpacity","bgHexColor","bgRGBACssColor","captionCollection","getRGBColor","defaultFontSize","parsedFontSize","CaptionTrack$1","captionTrackElement","captionTrack","fgColorElement","bgColorElement","CaptionController$2","_activeCaptionTrack","_captionTracks","cacheActiveCaptionTrack","preferredCaptionTrack","addCaptionTrack","storeCaptionLanguage","removeCaptionTrack","captionTrackToRemove","removedCaptionTracks","removedCaptionTrack","getMergedCaptionTrack","captionTrackParams","mergedCaptionTrack","activeCaptionTrackIsDefinedWithCaptions","activeCaptionTrack","numberCaptionTracks","containsCaptions","captionsContainsTocThumbnails","clearCaptions","addCaptionTrackFromXmpElement","parsedCaptionTrack","availableLanguages","filteredCaptionTextList","captionParams","newCaption","getActiveCaptionsTocThumbnailImage","CaptionController$1$1","TableOfContentsItem","_name","TableOfContentsItem$1","tableOfContentsItemElement","TableOfContentsTrack","_items","items","cellLayout","TableOfContentsTrack$1","tableOfContentsTrackElement","tableOfContentsTrack","tableOfContentsItemElements","BoundingPoly$1","coordinatesString","_coordinates","coordinateTokens","compact","coordinateString","coordinates","coord","BoundingPoly","Hotspot","_label","_boundingPoly","_rotate","_pause","_jumpTime","_location","_newWindow","_jumpFile","label","boundingPoly","rotate","pause","jumpTime","location","newWindow","jumpFile","Hotspot$1","hotspotElement","HotspotTrack","_hotspots","hotspots","HotspotTrack$1","hotspotTrackElement","hotspotTrack","Answer","_orderId","orderId","Answer$1","answerElement","answerText","Feedback","_reason","_jumpToTime","jumpToTime","Feedback$1","feedbackElement","feedbackText","Question$2","_id","_type","_correctAnswer","_answers","_feedback","correctAnswer","answers","feedback","Question$1$1","questionElement","correctAnswerText","descriptionElements","QuestionSet$2","_questions","questions","QuestionSet$1$1","questionSetElement","QuizTrack","_quizGuid","_authoredEmail","_requireUserId","_locale","_reportMethod","_clientId","_quizHash","_hideReplay","_allowSkipQuiz","_parameters","_questionSets","quizGuid","authoredEmail","requireUserId","locale","reportMethod","clientId","quizHash","hideReplay","allowSkipQuiz","parameters","questionSets","param","parseParameter","parameterElement","parseParameters","quizParametersElement","xmlUtility","QuizTrack$1","quizTrackElement","quizTrack","SpeechMarker","_probability","probability","SpeechMarker$1","speechMarkerElement","SpeechTrack","_markers","markers","SpeechTrack$1","speechTrackElement","speechTrack","ScreenTextMarker","_tableOfContentsEntry","tableOfContentsEntry","ScreenTextMarker$1","screenTextMarkerElement","ScreenTextTrack","ScreenTextTrack$1","screenTextTrackElement","screenTextTrack","getXmlUtility","Controller","_controllerTextItems","controllerTextItems","localizedTextTree","item","localizedTexts","localizedText","lang","parseParameter$1","parseParameters$1","parametersElement","parseLocalizedTextItem","parseControllerText","controllerTextItemElement","textElements","parseControllerTextItems","controllerTextElement","Controller$1","controllerElement","descriptionElement","ContentList","parseContentListItems","contentListItemElements","itemElement","ContentList$1","contentListElement","castSlice","baseIsNaN","baseIndexOf","strictIndexOf","charsStartIndex","strSymbols","chrSymbols","reHasUnicode","hasUnicode","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsSeq","rsSymbol","reUnicode","stringToArray","unicodeToArray","asciiToArray","reTrimStart","baseValues","nativeMax$2","_parsers","trimLeadingDot","extension","chars","guard","trimStart","captionParsers","supportedExtensions","parserCreator","extensions","parser","theParser","includes","captionImporter","captionController","fileName","fileContents","deserialize","Xmp$1","xmpXml","_version","_title","_date","_creator","_presenterEmail","_description","_source","_about","_keywords","_thumbnail","_firstFrame","_project","_originId","_iPodExplicit","_documentId","_videoFrameSize","_controller","_contentList","_captionController","_hotspotTrack","_tableOfContentsTrack","_quizTrack","_speechTrack","_screenTextTrack","_languages","_containsTocThumbnails","_containsToc","_containsCaptions","_containsHotspots","_containsQuiz","_containsQuizQuestions","_containsScreenText","_containsSpeechText","tracksContainer","track","langName","langValue","unit","scale","version","title","date","creator","presenterEmail","description","about","keywords","thumbnail","firstFrame","project","originId","iPodExplicit","documentId","videoFrameSize","tocThumbnailImageSrc","containsTocThumbnails","containsToc","containsHotspots","containsQuiz","containsQuizQuestions","containsScreenText","containsSpeechText","controller","contentList","parseLanguageName","languageNameElement","parseProductionDetails","rootDescriptionElement","videoFrameSizeElement","langNameElement","parseLanguages","durationElement","getElementForTrackType","elements","trackType","parseTracks","tracksElement","tracksDescriptionElements","parseCaptionTrack","parseHotspotTrack","parseTableOfContentsTrack","parseQuizTrack","parseSpeechTrack","parseScreenTextTrack","recordXmpContentFlags","nsElement","rdfElement","importCaptionsFromFile","languages","hasOwnProperty$c","baseHas","nativeJoin","reTrim$1","trim","charsEndIndex","methodName","upperFirst","chr","trailing","arrayReduce","accumulator","initAccum","baseReduce","metaMap","baseSetData","createCtor","thisBinding","WRAP_BIND_FLAG","nativeMax$3","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","nativeMax$4","composeArgsRight","holdersIndex","rightIndex","rightLength","baseLodash","MAX_ARRAY_LENGTH$1","LazyWrapper","__wrapped__","__actions__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","getData","realNames","hasOwnProperty$d","LodashWrapper","chainAll","__chain__","__index__","__values__","hasOwnProperty$e","lodash","wrapper","wrapperClone","isLaziable","funcName","otherFunc","getFuncName","setData","reWrapDetails","reSplitDetails","reWrapComment","wrapFlags","updateWrapDetails","details","pair","arrayIncludes","setWrapToString","reference","insertWrapDetails","getWrapDetails","WRAP_BIND_FLAG$2","WRAP_BIND_KEY_FLAG$1","WRAP_CURRY_BOUND_FLAG","WRAP_CURRY_FLAG$1","WRAP_PARTIAL_FLAG$1","WRAP_PARTIAL_RIGHT_FLAG$1","createRecurry","wrapFunc","placeholder","argPos","ary","arity","isCurry","newData","getHolder","nativeMin$1","PLACEHOLDER","replaceHolders","WRAP_BIND_FLAG$3","WRAP_BIND_KEY_FLAG$2","WRAP_CURRY_FLAG$2","WRAP_CURRY_RIGHT_FLAG$1","WRAP_ARY_FLAG$1","WRAP_FLIP_FLAG$1","createHybrid","partialsRight","holdersRight","isAry","isBind","isBindKey","isFlip","holdersCount","countHolders","newHolders","oldArray","reorder","WRAP_BIND_FLAG$4","PLACEHOLDER$1","WRAP_BIND_FLAG$5","WRAP_BIND_KEY_FLAG$3","WRAP_CURRY_BOUND_FLAG$1","WRAP_CURRY_FLAG$3","WRAP_ARY_FLAG$2","WRAP_REARG_FLAG$1","nativeMin$2","FUNC_ERROR_TEXT$2","WRAP_BIND_FLAG$6","WRAP_BIND_KEY_FLAG$4","WRAP_CURRY_FLAG$4","WRAP_CURRY_RIGHT_FLAG$2","WRAP_PARTIAL_FLAG$2","WRAP_PARTIAL_RIGHT_FLAG$2","nativeMax$5","createWrap","srcBitmask","newBitmask","isCommon","isCombo","mergeData","createCurry","createPartial","createBind","curry","toSeconds","timeIn","nextNonEmptyLine","linesArray","idx","_readCaptionsFromString","timeDelimiter","hasIdRow","lines","time","endIndex","timeSplitRegex","SSATagRegex","lessThanRegex","greaterThanRegex","newlinePlaceholderRegex","lastNonEmptyLine","padWithZero","inputNumber","formatMillisecondsToTimeCode","inputMilliseconds","options","hoursPadding","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","milliseconds","getUTCMilliseconds","toFixed","millisecondDelimiter","baseNewlineParser","readCaptionsFromStringWithIdRow","readCaptionsFromString","captionsToString","output","DEFAULT_CAPTION_LANGUAGE_IDENTIFIER_STRING","samiParser","nonBreakingSpace","fromCharCode","getSyncTagText","separator","elementsText","parseSyncTagToCaption","createParams","cssColorToRGB","cssColorValue","getCaptionTrackCreateParams","styleElements","styleElement","body","sheet","cssRules","parseStyle","captionStyle","selectorText","style","backgroundColor","textAlign","captionToString","nextCaption","getTextAlignment","allAlignments","alignments","alignment","syncElements","createCaptionTrackParams","currentCaption","assignCaptionDurationsByFillingCaptionStartTimeGaps","serialize","sbvParser","srtParser","ttmlParser","rWhitespace","rLineBreak","rBreakTag","parseChildren","node","timeOffset","newOffset","currNode","firstChild","currRegion","getNodeRegion","retVal","nodeName","parseNode","nextSibling","defaultTo","sub","MAX_VALUE","subtitle","timeStr","framerate","digitPairs","lastPair","firstPair","frameInfo","frameTime","toTimelineSeconds","getMetricIndex","xmlDocument","vttParser","vttTimeDelimiter","parseCueHeader","line","lineSegments","skipWhitespace","skipNonWhitespace","skipToCueHeader","breakTagRegex","_registeredExceptionListeners","_registeredMessageListeners","removeValueFromArray","log","logException","logMessage","listener","throwError","removeAllEventListeners","playerStringNames","accessBtnAnswersSubmitted","accessBtnAudioDescription","accessBtnClearSearch","accessBtnClickToReplayLink","accessBtnClosedCaption","accessBtnCorrectOutOf","accessResultsLabelCorrectSuffix","accessResultsLabelIncorrectSuffix","accessResultsLabelNoResponseSuffix","accessResultsLabelNoResponseGradedSuffix","accessBtnFullScreen","accessBtnFullScreenExpand","accessBtnGradedQuestions","accessBtnHideAnswer","accessBtnHideQuiz","accessBtnPreviousQuestion","accessBtnNextQuestion","accessBtnNext","accessBtnPip","accessBtnPlay","accessBtnPrevious","accessBtnProgressBar","accessBtnRewind","accessBtnForward","accessBtnSettings","accessBtnShowAnswer","accessBtnShowQuiz","accessBtnTableOfContents","accessBtnTakeQuiz","accessBtnVolume","accessBtnWasNotGraded","accessBtnWereNotGraded","accessListNoSearchResults","accessListSearchResults","accessListTableOfContents","accessQuestionSetConfirmationTitle","accessQuizResults","accessQuestionFeedbackContext","accessTxtVolume","accessVideoPausedForQuiz","accessQuizHidden","accessQuizShown","accessProgressBarTimeConjunction","accessPlayerSettingsClose","accessBtnTheaterMode","accessBtnExitTheaterMode","ccLanguageText","close","mediaNotFound","noWebMSupport","playerRateOptionsText","playerRateText","scormApiNotFoundMessage","search","searchDisabledFullScreen","searchPlaceholder","txtAnswerQuestion","txtBadImageQuiz","txtBegin","txtContinue","txtCorrect","txtCorrectAnswer","txtCorrectString","txtEnterEmail","txtEnterFirstName","txtEnterLastName","txtHotspot","txtHotspotScreenReaderAlert","txtHotspotScreenReaderAlertPlural","txtImageQuizNetworkErrorMessage","txtIncorrect","txtIncorrectString","txtJumpToMedia","txtJumpToTime","txtLoaderMessageDefinition","txtNext","txtHideQuiz","txtOpenLink","txtOpenLinkHeader","txtOpenLinkSubHeader","txtPrev","txtQuestionCount","txtQuizBadDefinitionMessage","txtQuizErrorMessage","txtQuizOutOfDateMessage","txtQuizOutOfDateRefreshButtonText","txtReplayVideo","txtRequiredMessage","txtResults","txtReview","txtReviewAnswer","txtSkip","txtSubmit","txtSubmittingAnswers","txtVideoQuizNetworkErrorMessage","txtVisitSite","txtYourAnswer","videoLoading","videoNotSupported","xmpSecurity","xmpError","confirmOpenUrlModalScreenReaderAlertText","confirmOpenUrlConfirmButtonScreenReaderText","fastForwardDisabledScreenReaderText","scormCompleteVideoLater","scormCompleteVideo","scormExitVideo","scormConfirmCompleteModalText","scormConfirmCompleteModalRestartVideoText","scormConfirmCompleteModalResumeVideoText","scormConfirmCompleteModalFailedToSaveProgressText","scormConfirmCompleteModalDismissButtonText","scormConfirmCompleteModalDismissButtonScreenReaderText","scormConfirmCompleteModalConfirmButtonText","scormConfirmCompleteModalConfirmButtonScreenReaderText","scormSessionEndedText","searchOrJumpTo","searchTextCleared","searchResultsUpdated","tableOfContentsDisplayed","tableOfContentsHidden","defaultMediaTitle","hideThumbnailDueToQuiz","defaultFirstChapterName","acknowledgementLinkName","strings$7","quizAtTimeHeading","enUsLocale","getReadableTimeByLocale","timeStringList","hoursReadableString","minutesReadableString","secondsReadableString","strings","strings$6","deDeLocale","strings$5","jaJpLocale","strings$4","frFrLocale","strings$3","esEsLocale","strings$2","zhCnLocale","strings$1","ptBrLocale","localeFactory","getLocaleByLanguageCode","languageCode","customStrings","setString","stringKey","clearStrings","_currentLocale","setLanguage","getPlayerString","stringName","localizationStrings","getLanguage","getLanguageNameFromIdentifierString","configureFromXmp","controllerParameters","controllerParameter","configureLanguageFromXmp","quizParameters","quizParameter","configureCustomStringsFromXmp","getQuestionCountString","currentQuestionNumber","totalNumberQuestions","questionCountString","reset","mediaMimeType","JSON","M3U","MP4","WEBM","OGV","JPEG","PNG","GIF","UNKNOWN","jquery","global","noGlobal","getProto","_slice","flat","class2type","hasOwn","fnToString","ObjectFunctionString","support","obj","isWindow","preservedScriptAttributes","src","nonce","noModule","DOMEval","code","script","removeChild","toType","rhtmlSuffix","jQuery","context","init","num","pushStack","elems","merge","prevObject","each","first","even","grep","_elem","odd","j","extend","copyIsArray","deep","isPlainObject","expando","isReady","msg","noop","isEmptyObject","globalEval","nodeValue","makeArray","inArray","isXMLDoc","namespace","namespaceURI","docElem","second","invert","matches","callbackExpect","guid","_i","whitespace","rtrimCSS","bup","compareDocumentPosition","rcssescape","fcssescape","asCodePoint","escapeSelector","sel","preferredDoc","pushNative","Expr","outermostContext","sortInput","hasDuplicate","documentIsHTML","rbuggyQSA","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","booleans","pseudos","rwhitespace","rcomma","rleadingCombinator","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rquickExpr","rsibling","runescape","funescape","escape","nonHex","unloadHandler","setDocument","inDisabledFieldset","addCombinator","disabled","dir","next","childNodes","els","seed","nid","groups","newSelector","newContext","getElementById","getElementsByClassName","testContext","scope","tokenize","toSelector","qsaError","removeAttribute","select","cacheLength","shift","markFunction","assert","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","subWindow","webkitMatchesSelector","msMatchesSelector","defaultView","top","getById","getElementsByName","disconnectedMatch","cssHas","attrId","getAttributeNode","className","compare","sortDetached","expr","matchesSelector","attr","attrHandle","uniqueSort","duplicates","sortStable","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","expectedNodeName","pattern","operator","check","what","_argument","simple","forward","ofType","_context","outerCache","nodeIndex","useCache","diff","lastChild","pseudo","setFilters","matched","not","matcher","compile","unmatched","elemLang","hash","focus","activeElement","safeActiveElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","_matchIndexes","nth","radio","checkbox","password","submit","parseOnly","soFar","preFilters","cached","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","matcherOut","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","token","compiled","filters","unique","getText","isXML","_dir","until","truncate","_siblings","rneedsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","contents","prev","sibling","cur","closest","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","contentDocument","content","rnothtmlwhite","Identity","Thrower","adoptValue","noValue","method","fail","Callbacks","_","flag","createOptions","firing","memory","_fired","_locked","queue","firingIndex","fire","once","stopOnFalse","disable","lock","locked","fireWith","fired","Deferred","tuples","_promise","state","always","pipe","fns","newDefer","tuple","returned","progress","notify","onProgress","maxDepth","handler","special","mightThrow","notifyWith","resolveWith","exceptionHook","rejectWith","getErrorHook","getStackHook","stateString","when","singleValue","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","asyncError","readyException","readyList","completed","readyWait","wait","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","acceptData","Data","configurable","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","parse","_data","removeData","_removeData","attrs","dequeue","startLength","hooks","_queueHooks","unshift","stop","setter","clearQueue","tmp","defer","pnum","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","display","css","adjustCSS","valueParts","tween","adjusted","maxIterations","currentValue","initial","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","show","hide","toggle","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","cloneNode","noCloneChecked","option","wrapMap","thead","col","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","optgroup","rhtml","buildFragment","scripts","selection","ignored","wrap","attached","fragment","nodes","htmlPrefilter","rtypenamespace","returnTrue","returnFalse","_on","one","origFn","off","leverageNative","isSetup","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","trigger","isImmediatePropagationStopped","handleObjIn","eventHandle","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","rnamespace","postDispatch","_handlers","matchedHandlers","matchedSelectors","addProp","hook","Event","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","isDefaultPrevented","defaultPrevented","timeStamp","isSimulated","eventPhase","pageX","pageY","view","charCode","keyCode","offsetX","offsetY","screenX","screenY","targetTouches","toElement","blur","focusMappedHandler","documentMode","simulate","attaches","dataHolder","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","on","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","_remove","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","rcustomProp","getStyles","opener","getComputedStyle","swap","old","rboxStyle","curCSS","minWidth","maxWidth","isCustomProp","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","offsetWidth","measure","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","borderTopWidth","borderBottomWidth","offsetHeight","cssPrefixes","emptyStyle","vendorProps","finalPropName","_final","cssProps","capName","vendorPropName","rdisplayswap","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","boxModelAdjustment","dimension","box","isBorderBox","computedVal","extra","delta","marginDelta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","animationIterationCount","aspectRatio","borderImageSlice","columnCount","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeMiterlimit","strokeOpacity","origName","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","suffix","expand","expanded","parts","propHooks","run","percent","eased","pos","step","fx","scrollTop","scrollLeft","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","interval","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","properties","stopped","prefilters","currentTime","tweens","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","complete","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","timeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","addClass","classNames","curValue","finalValue","removeClass","toggleClass","stateVal","isValidValue","hasClass","rreturn","valHooks","optionSet","rquery","parseXML","parserErrorElem","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","triggerHandler","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","encodeURIComponent","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","isLocal","protocol","processData","accepts","json","responseFields","converters","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","_statusCode","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","ajaxConvert","getJSON","getScript","wrapAll","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","xhrSupported","cors","_callback","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","_callback2","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","unbind","delegate","undelegate","hover","fnOver","fnOut","rtrim","proxy","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","$","noConflict","w","_xmpSrc","_posterImageSrc","_tocSpriteSrc","_googleAnalyticsID","_customEventCallback","_ga4EventCallback","_techSmithAccessTokenEndpoint","_fathomId$1","_embedIFrameId","_preRollSrc","_webConnector","jqueryExports","windowWrapper","wrapInJQuery","features","documentWrapper","_supportsHTML5","_supportsMP4","_supportOgg","_supportWebM","_isIE","_isEdge","_ieVersion","_safariMajorVersion","_isFirefox","_isChrome","_isIPad","_isIPhone","_isIPod","_isIOS","_isAndroid","_isSafari","_isRetinaDisplay","_isSmallScreen","isTouchIEInterface","isTouchInterface","deviceInfo","isSmallScreen","isRetinaDisplay","isIPad","isIPhoneOrIPod","isIOS","isIE","isEdge","getIEVersion","getSafariMajorVersion","isFirefox","isChrome","isSafari","isAndroid","canPlayHTML5Video","canPlayMP4","canPlayOgg","canPlayWebM","getFullScreenChangeEventNames","documentRef","onfullscreenchange","onwebkitfullscreenchange","requiresManualPreload","supportsFullScreen","fullscreenEnabled","webkitFullscreenEnabled","supportsLegacyIOSFullScreen","videoElement","webkitSupportsFullscreen","mediaLocation","baseindex","lastIndexOf","basex","encodeURI","checkLocationProtocol","lookAtDevice","detect","canPlayType","OGG","userAgent","appName","iOSChromeMatchExp","appVersion","$1","matchExp","safariVersion","screen","availWidth","availHeight","devicePixelRatio","_lookAtDevice","themeNames","DAWN","DUSK","preloadOptions","none","metadata","auto","endsWithSlashRegex","_mediaSources","_mediaTitle","_tocTitle","_mediaRotation","_endActionType","_endActionParam","_ignoreXmpControllerParameters","_ignoreQuizQuestions","_isSearchable","_autoPlayMedia","_forceAutoPlayMedia","_skipVideoDuration","_skipVideoControlsEnabled","_captionsEnabled","_ignoreStoredCaptionVisibleSetting","_sidebarEnabled","_sidebarLocation","_backgroundColor","_useUnicode","_autoHideControls","_reportScormComplete","_isScormLesson","_enforceLinearAssessment","_disableFullframeMode","_disableControls","_disableYouTubeControls","_disablePictureInPicture","_disableContinueWithoutQuestions","_mobileWebViewCanAutoPlay","_gaPageViewTrack","_gaEventTrack","_customEventTracking","_altEventCategoryAsFilename","_altLoadTimeAsSeconds","_isUserIdentified","_additionalAppQueryString","_useSlimAppSplashScreen","_showYouTubeAnnotations","_contentType","_preload","_fullViewPort","_contentBasePath","_disableContextMenuForVideo","_theme","_enableSingleClickControl","_enableDoubleClickControl","_pluginController$1","_useLargerProgressBar","_displayHotspotsShape","_audioDescriptionMediaSrc","_captionSrcList","_disableInteractions","_allowFastForward","_showADACompliantCaptions","_rememberUserInfo","_logScormApiCalls","_userInfo","_videoThumbnailsSrc","_videoThumbnailWidth","_videoThumbnailHeight","_videoThumbnailInterval","_videoThumbnailColumns","_tocModelFromDescription","_completeScormOnRequirementsComplete","_customFullScreenDomElement","_quizServiceBaseUrl","_resultsServiceBaseUrl","_enableTheaterMode","_showAcknowledgementLink","isValidTheme","themeName","themeKey","decodedApostrophe","runOnServer","getUnicodeSafeString","decodeURI","getGA4EventCallback","setGA4EventCallback","ga4EventCallback","getIsUserIdentified","isParamBeingIgnored","shouldLoadXmpParam","param1","param2","getMediaSrc","setMediaSrc","mediaSrc","getXMPSrc","setXMPSrc","xmpSrc","getDisableInteractions","setDisableInteractions$1","disableInteractions","getPosterImageSrc","setPosterImageSrc","posterImageSrc","getTOCSpriteSrc","setTOCSpriteSrc","tocSpriteSrc","getMediaTitle","setMediaTitle","mediaTitle","getTOCTitle","setTOCTitle","tocTitle","getMediaRotation","setMediaRotation","rotation","getEndActionType$1","setEndActionType","endActionType","getEndActionParam","setEndActionParam","endActionParam","getIgnoreXmpControllerParameters","setIgnoreXmpControllerParameters","ignoreXmpControllerParameters","upperCasedIgnores","getIgnoreQuizQuestions","setIgnoreQuizQuestions","ignoreQuizQuestions","getIsSearchable","setIsSearchable","isSearchable","getAutoPlayMedia","setAutoPlayMedia","autoPlayMedia","getForceAutoPlayMedia","setForceAutoPlayMedia","forceAutoPlayMedia","getCaptionsEnabled","setCaptionsEnabled","captionsEnabled","getIgnoreStoredCaptionVisibleSetting","setIgnoreStoredCaptionVisibleSetting","ignoreStored","getSidebarEnabled","setSidebarEnabled","sidebarEnabled","getSidebarLocation","setSidebarLocation","sidebarLocation","getBackgroundColor","setBackgroundColor","getAutoHideControls","setAutoHideControls","autoHideControls","getProcessUnicodeNames","setProcessUnicodeNames","useUnicode","getEnforceLinearAssessment","setEnforceLinearAssessment","enforceLinearAssessment","getDisableFullframeMode","setDisableFullframeMode","disableFullframeMode","getDisableControls","setDisableControls","disableControls","getDisableYouTubeControls","setDisableYouTubeControls","disableYouTubeControls","getDisablePictureInPicture","setDisablePictureInPicture","disablePictureInPicture","getDisableContinueWithoutQuestions","setDisableContinueWithoutQuestions","disableContinueWithoutQuestions","getMobileWebViewCanAutoPlay","setMobileWebViewCanAutoPlay","canAutoPlay","getGoogleAnalyticsID","setGoogleAnalyticsID","getGAPageViewTracking","setGAPageViewTracking","gaPageViewTrack","getGAEventTracking","setGAEventTracking","gaEventTrack","getAltEventCategoryAsFilename","setAltEventCategoryAsFilename","altEventCategoryAsFilename","getAltLoadTimeAsSeconds","setAltLoadTimeAsSeconds","altLoadTimeAsSeconds","getTechSmithAccessTokenEndpoint","setTechSmithAccessTokenEndpoint","accessTokenEndpoint","setUserSignedIn","getJumpToTime","setJumpToTime","getFathomId","setFathomId","fathomId","getEmbedIFrameId","setEmbedIFrameId","embedIFrameId","getUseSlimAppSplashScreen","setUseSlimAppSplashScreen","useSlimAppSplashScreen","setDisableContextMenuForVideo","disableContextMenuForVideo","getShowYouTubeAnnotations","setShowYouTubeAnnotations","showAnnotations","getPreRollSrc","setPreRollSrc","preRollSrc","getContentBase","setContentBase","getContentType","setContentType","getPreload","setPreload","preloadOption","isValidPreloadOption","getFullViewPort","setFullViewPort","getWebConnector","setWebConnector","getTheme","setTheme$2","getEnableSingleClickControl","setEnableSingleClickControl","getEnableDoubleClickControl","setEnableDoubleClickControl","getPluginController","setPluginController","pluginController","getUseLargerProgressBar","setUseLargerProgressBar","useLargerProgressBar","getDisplayHotspotsShape","setDisplayHotspotsShape","displayHotspotsShape","getAudioDescriptionMediaSrc","setAudioDescriptionMediaSrc","audioDescriptionMediaSrc","getSkipVideoControlsEnabled","setSkipVideoControlsEnabled","skipVideoControlsEnabled","getSkipVideoDuration","setSkipVideoDuration","skipVideoDuration","getAllowFastForward","setAllowFastForward","allowFastForward","getShowADACompliantCaptions","setShowADACompliantCaptions","showADACompliantCaptions","getRememberUserInfo","setRememberUserInfo","rememberUserInfo","getLogScormApiCalls","setLogScormApiCalls","logScormApiCalls","getUserInfo","setUserInfo","userInfo","userSignedIn","getVideoThumbnailSrc","setVideoThumbnailSrc","videoThumbnailSrc","getVideoThumbnailWidth","setVideoThumbnailWidth","videoThumbnailWidth","getVideoThumbnailHeight","setVideoThumbnailHeight","videoThumbnailHeight","getVideoThumbnailInterval","setVideoThumbnailInterval","videoThumbnailInterval","getVideoThumbnailColumns","setVideoThumbnailColumns","videoThumbnailColumns","getTocModelFromDescription","setTocModelFromDescription","tocModelFromDescription","getCompleteScormOnRequirementsComplete","setCompleteScormOnRequirementsComplete","completeScormOnRequirementsComplete","getCustomFullScreenDomElement","setCustomFullScreenDomElement","customFullScreenDomElement","getEnableTheaterMode","setEnableTheaterMode","getShowAcknowledgementLink","setShowAcknowledgementLink","showAcknowledgementLink","deprecatedNoOp","playerConfiguration","clearConfiguration","addMediaSrc","getMediaSources","addCaptionSrc","captionSrc","getMediaFileName","mediaSource","splitEl","getUnableToDisplayContentString","useCustomEventTracking","customEventTracking","customEventCallback","getTrackEvents","getCustomEventTracking","getCustomEventCallback","setAdditionalAppQueryParamsFromJson","queryString","getAdditionalAppQueryString","saveConfigurationFromQueryString","configParams","numberParams","getEndActionType","setDisableInteractions","getReportScormComplete","setReportScormComplete","reportScorm","getDisableContextMenuForVideo","setTheme","getUserSignedIn","getQuizServiceBaseUrl","setQuizServiceBaseUrl","quizServiceBaseUrl","getResultsServiceBaseUrl","setResultsServiceBaseUrl","resultsServiceBaseUrl","setSwfBase","isIEOnServerWithUnicode","setFlashUpdateBootstrapSwf","getAdvancedSeeking","setAdvancedSeeking","getDebugUIMode","setDebugUIMode","getPlayerWidth","setPlayerWidth","getPlayerHeight","setPlayerHeight","setFlashPlayerSwf","setForceFlashPlayer","setForceHtml5Player","setConfigurationSrc","setPrioritizeFullScreen","getDisableYouTubeFullscreen","setDisableYouTubeFullscreen","setAllowRewind","mediaRotation","ignoreStoredCaptionVisibleSetting","processUnicodeNames","mobileWebViewCanAutoPlay","googleAnalyticsID","googleAnalyticsPageViewTracking","googleAnalyticsEventTracking","techSmithAccessTokenEndpoint","showYouTubeAnnotations","contentBase","preload","fullViewPort","webConnector","theme","enableSingleClickControl","enableDoubleClickControl","isScormLesson","captionSrcList","videoThumbnailsSrc","enableTheaterMode","AggregateError","errors","setTimeoutFunc","noop$1","Promise$1","doResolve","finale","Handler","any","P","rejectionReasons","allSettled","_currentPlayerType$1","_performanceApiSupported","performance","mark","getEntriesByType","performanceWrapper","markerName","measureName","startMark","endMark","measureNames","rumData","measureDuration","measures","getMeasureDuration","registeredEvents","listeningToWindowMessageEvent","onExternalMessage","smartPlayerEventName","removeWindowMessageListener","externalMessageController","callbackFunction","attachEvent","iFrameBridge","domain","iFrameId","postMessage","stringify","parsePlayerURLParams","playerUrlParams","parseEmbeddedURLParams","queryParamsStripper","mediaType","YOUTUBE","JPG","PLAYLIST","NOT_AVAILABLE","MULTIPLE_TYPES","Media$1","media","uri","_media","_mimeType","_uri","getFileExtension","mediaTypeFromMimeType","MediaListParser$1","mediaSources","_ready","_mediaList","_mediaProcessedPromises","parsePlaylistSource","playlistMediaSource","playlistSrc","jHxr","playlistData","playListMediaPromises","playListMedia","parseMediaUrl","playlistMedia","mediaList","inferredMimeType","ext","inferMimeTypeFromFileExtension","textStatus","findMediaMimeTypeByRequestHeader","parseMedia","youTubeMediaSource","parseYouTubeMedia","MediaList$1","_readyPromiseResolve","_readyPromiseReject","_mediaListParser","_readyPromise","_currentMediaIndex","getMediaIndexByUri","mediaIndex","isMediaTypeAvailable","currentMedia","currentMediaIndex","mediaPosition","currentMediaType","onFirstMedia","onLastMedia","hasImage","isPlaylist","playerType","HTML5_VIDEO","IMAGE","NOT_SUPPORTED","mediaPlayerController","haveImage","haveWebMAndCanPlay","haveMP4AndCanPlay","haveOGGAndCanPlay","haveYoutubeEmbedUrl","_getPlayerType","cssClasses","smartPlayerNamespace","videoWrapper","scormModule","scormModuleNavigationContainer","playerControlsVisible","largerProgressBar","hideElement","volumeSliderHidden","hideSecondaryControls","fullscreenMode","volumeMutedButtonGlyph","volumeLowButtonGlyph","volumeMediumButtonGlyph","volumeHighButtonGlyph","playButtonGlyph","pauseButtonGlyph","fullscreenButtonGlyph","fullscreenButtonActiveGlyph","fullFrameButtonGlyph","fullFrameButtonActiveGlyph","expandButtonGlyph","audioDescriptionButtonGlyph","audioDescriptionButtonActiveGlyph","closedCaptionButtonGlyph","closedCaptionNonEnglishButtonGlyph","closedCaptionButtonActiveGlyph","closedCaptionNonEnglishButtonActiveGlyph","tocButtonGlyph","tocButtonActiveGlyph","settingsButtonGlyph","settingsButtonActiveGlyph","tertiaryButton","tertiaryButtonActive","generatedPluginContainer","pluginNamedContainerPrefix","hotspotVisible","screenReaderAlert","imageViewAnimateTransitions","safariPipIssueFix","captionsUnderVideo","captionsVerticalAlignTop","captionsVerticalAlignBottom","captionsHorizontalAlignLeft","captionsHorizontalAlignCenter","captionsHorizontalAlignRight","captionsCustomPosition","captionsCaptionSelected","captionsPreventCaptionDrag","captionXmpView","captionAdaView","progressBarTrackPreventSeeking","hideBubbleArrow","hiddenVideoThumbnailVisible","scrubPreviewHasThumbnail","focusableAnswerInput","constrainMediaHeight","constrainMediaWidth","mediaTypeYouTube","theaterModeButtonGlyph","theaterModeButtonActiveGlyph","cssVariables","playerWidth","playerHeight","mediaIntrinsicWidth","mediaIntrinsicHeight","mediaIntrinsicAspectRatio","mediaIntrinsicAspectRatioNumber","mediaViewPortWidth","mediaViewPortHeight","mediaViewPortAspectRatio","mediaViewPortAspectRatioNumber","reservedSizeScorm","reservedSizeCaptions","reservedSizeControls","tocTopOffset","ResponsiveController$1","$rootContainer","_$rootContainer","_$mediaViewPortContainer","_$mediaSizingContainer","_currentViewPortWidth","_currentViewPortHeight","_currentViewPortAspectRatio","_intrinsicWidth","_intrinsicHeight","_intrinsicAspectRatio","_rootContainerResizeObserver","_viewPortContainerResizeObserver","_initialCheck","isApproximatelySameSize","newDimensionDouble","existingCssVarName","ResizeObserver","manageResponsiveClasses","calculateMediaViewPortDimensions","setCssVariables","_responsiveBreakpoints","viewPortWidth","viewPortHeight","domContainer","containerWidth","containerHeight","breakpoint","widthClassName","heightClassName","monitorContainerSize","monitorMediaViewPortSize","$mediaViewPortContainer","$mediaSizingContainer","intrinsicWidth","intrinsicHeight","initializeIntrinsicSizing","clearContainerMonitors","disconnect","responsiveBreakpoints","currentMediaWidth","currentMediaHeight","intrinsicMediaWidth","intrinsicMediaHeight","intrinsicMediaAspectRatio","currentViewPortWidth","currentViewPortHeight","currentViewPortAspectRatio","reportType","NONE","API","APIANDSCORM","QuestionSetMarker$1","questionSetIndex","questionSet","_questionSetIndex","_rangeStart","_rangeEnd","_canSeekPast","questionSetId","rangeStart","rangeEnd","canSeekPast","questionType","FILL_IN","CHOICE","SHORT","Question$1","tscmeQuestionModel","_userResponse","_isResponseCorrect","_isGraded","_attemptDuration","_responseLocked","_feedbackActionExecuted","toJSON","questionText","choices","answer","getSnapShot","snapshotUserResponse","rl","ad","irc","populateQuestion","questionSnapShot","getQuizServiceData","percentOfVideoSegmentWatched","questionData","correct","segmentWatched","getFeedbackForReason","feedbackItem","isGraded","userResponse","isResponseCorrect","attemptDuration","responseLocked","feedbackActionExecuted","QuestionSet$1","tscmeQuestionSetModel","_percentOfVideoSegmentWatched","_numberGradedQuestions","_numberUngradedQuestions","cacheQuestionDetails","question","tscmeQuestion","mediaTimePosition","vsw","populateQuestionSet","questionSetSnapShot","quizId","questionSetData","displayFeedback","every","numberGradedQuestions","numberUngradedQuestions","numberCorrectQuestions","usesRationale","Quiz$1","xmpModel","_productionName","_projectName","_quizTitle","_quizId","_quizInstanceId","_questionSetMarkers","_mediaDuration","setReportMethod","quizLocale","quizRequireUserId","quizHideReplay","quizAuthoredEmail","quizClientId","mediaDuration","quizReportMethod","quizAllowSkipQuiz","quizQuestionSetArray","tscmeQuestionSet","getApiDataForQuestionSet","getScormScore","scormScore","totalGradableQuestions","totalCorrectQuestions","isLastQuestionComplete","considerQuestionSetCompleteId","getPreviousMarkerTimeForMarker","markerTime","qs","populateQuiz","quizModelSnapshot","questionSetSnapshot","quizDefinition","quizDef","projectName","productionName","reportRecipients","useQuizApi","useScorm","quizTitle","quizID","quizInstanceID","quizInstanceId","questionSetMarkerTimes","numberQuestionSets","minMarkerTimeDiff","totalNumberOfGradedQuestionSets","totalGradableQuestionSets","urlService","ensureUrlHasValidScheme","paramName","paramValue","kvp","query","generateQueryStringWithExtraParam","windowLocation","port","hostname","pathname","hrs","sec","strTime","hrsPattern","minPattern","secPattern","numPattern","hrsTest","minTest","secTest","numTest","_typeof","polyad","_fathomId","_getCompleteCallback","_errorHandlerCallback","_xmpModel","_videoId","_playbackReadyPromiseResolve","_videoLoadStartTime","_videoLoadEndTime","_previousActiveElement","_previousActiveElementWasHighlighted","_defaultTextColorObject","_defaultBgColorObject","_defaults","captionFontFamily","captionFontSize","captionFontSizeMin","captionFontSizeMax","captionTextColor","captionBgColor","captionPosition","captionBarHeight","_font","_fontSizeForPlayerDimensions","_fontSizeMin","_fontSizeMax","_textColor","_eventHandlers","setFontSize","initFromXmp","minCaptionFontSize","maxCaptionFontSize","captionBg","initDefaults","setFontSizeForPlayerDimensions","scaleX","scaleY","eventEntry","font","fontEnclosedWithQuotes","fontSizeForPlayerDimensions","fontSizeMin","fontSizeMax","textColor","backgroundOpacity","newCaptionTrack","eventCallback","hasCaptions","CaptionService$1","Xmp","_groupedScreenTextItems","_captionDefaults","_xmpAjaxPromise","_captionFileAjaxPromiseList","loadXmpWithRetry","retrylimit","crossDomainRequest","parseXmp","imageExistsForTocFromDescription","captionsSrcList","loadedCaptionData","captionSrcItem","captionAjaxPromise","captionData","abortPendingRequests","hasAdvancedFeatures","hasTocItems","hasCaptionItems","hasHotspotItems","hasQuiz","hasScreenTextItems","hasSpeechTextItems","hasSearchableItems","hasAnySearchableItems","tocImageSrc","tocCellLayoutType","tocItemArray","speechTextItemArray","screenTextItemArray","itemStartTime","groupIndex","groupedItem","previousItemName","currentItemName","hotspotItemArray","captionsHasMultipleLanguages","captionItems","captionBgOpacity","tocContainsThumbs","tocThumbImageSrc","_getFathom","xmlModel","onFathomLoad","fathomService","getFathom","NullSmartPlayerView$1","noOp","loadMedia","destroy","play","isInFullScreenMode","addMediaEventListener","removeMediaEventListener","getCaptionsVisible","setCaptionsVisible","getScrubbing","setScrubbing","triggerVideoStartEventCallbacks","getSafeSeekTime","initializedPromise","Promise","currentSrc","paused","volume","muted","playbackRate","ended","seeking","buffered","played","seekable","uuidGenerator$1","_p8","_analyticsCategory","analyticsService","analyticsCategory","action","category","eventParams","readyStates","VideoPlaybackQualityMetrics$1","videoElementView","triggerRumDataEventCallback","eventLabelSuffixRetriever","playerState","_readyStateHasAtLeastEnoughDataOnce","_readyStateHasEnoughDataAfterSeeked","_timeToReachFirstHaveEnoughData","_videoLoadStartTimeInMilliseconds","_uniqueID","_mediaLocation","_eventListeners","_currentReadyState","_isSeeking","_playingEventShouldFireAfterStalled","_mediaElement","mediaElement","_eventLabel","_queuedEvents","_sendEventsDelayID","getEventLabel","triggerShowVideoBufferingViewEvent","triggerHideVideoBufferingView","sendQueuedEvents","queuedEvent","ga4Event","checkVideoReadyState","currentReadyState","previousReadyState","pausedForQuiz","eventLabel","eventTime","video_session_id","onStalledEventHandler","onProgressEventHandler","removeStoppedToBufferEventIfNeeded","onVideoSeekingHandler","onVideoSeekedHandler","onVideoWaitingHandler","onVideoTimeUpdateHandler","onVideoLoadStartHandler","onVideoMetadataLoadedHandler","onVideoLoadedDataHandler","onVideoCanPlayHandler","onVideoDurationChange","onMediaPlayingEventHandler","setEventLabel","Disabled","DomOrder","escaped","padIfNecessary","getHourMinuteSecondsFromTimeInSeconds","timeInSeconds","secondsWithoutHours","timeFormatter","timeComponents","timeInterval","timecode","multiplier","timecodeParts","lowTimeBounds","timePartAsNumber","PLACEHOLDER_GLYPH_DATA_URL","templateGenerator","_ref","fullscreenIndex","audioDescriptionIndex","audioDescriptionTrackSrc","playButtonIndex","playIndex","accessBtnClickToPlay","replayButtonIndex","replayIndex","accessBtnClickToReplay","templateContext","closedCaptionIndex","questionAnswers","placeHolderImg","answerIndex","isChecked","_ref2","choiceAnswerTemplate","autoFocus","inputLabel","inputId","inputName","useAutofocus","fillAnswerTemplate","buttonTitle","hotspotContainerWidth","hotspotContainerHeight","hotspotIndex","descriptionId","hotspotDescription","hotspotShape","hotspotCoordinatesSeparationBySpace","hotspotLinkClassName","hotspotDescriptionId","hotspotViewTemplate","screenReaderAlertText","screenReaderAlertTemplate","hotspotsContainerId","hotspotsTemplate","hotspotsAltText","videoTagUniqueId","videoViewTemplate","mediaTagUniqueId","imageViewTemplate","loaderImg","loaderAltText","messageText","primaryActionButtonText","messageBarViewTemplate","link","headerText","subHeaderText","replayText","openButtonScreenReaderText","visitSiteText","openExternalLinkTemplate","pipButtonIndex","skipDuration","rewindIndex","forwardIndex","videoWrapperIndex","preRollSizeClass","preRollContainerTemplate","previousIndex","nextIndex","progressIndex","chapterIndex","progressBarChapterSegmentTemplate","questionTextTemplate","questionFeedbackContextText","questionFeedbackContextTextTemplate","correctTextString","incorrectTextString","questionGradedStatusContext","reviewText","confirmationText","alertText","questionSetConfirmationTemplate","totalQuestions","questionCountText","questionCountContext","quizTime","submittingImg","submittingImgAltText","previousQuestionButtonA11yText","previousButtonName","nextQuestionButtonA11yText","nextButtonName","submitButtonName","continueButtonName","hideQuizA11yText","hideQuizText","showQuizText","videoId","questionSetTemplate","numberCorrectText","percentCorrectText","numberInCorrectText","percentInCorrectText","continueText","numberCorrect","percentCorrect","numberInCorrect","percentInCorrect","reviewAnswerText","questionSetReviewConfirmationTemplate","gradableDetails","unGradeableDetails","questionSetResultsTabIndex","txtAnswersSubmitted","gradeableDetails","txtViewAnswers","txtHideAnswers","questionSetReviewStatusTemplate","enterName1","enterName2","name1Class","name2Class","reverseNames","setupMessage","enterEmail","beginButtonText","skipControlText","quizSetupTemplate","hasMultipleLanguages","playbackRatesList","ccLanguageList","captionsExist","settingsIndex","speedSettingIndex","playbackRates","ccLanguageSettingIndex","ccLanguages","acknowledgmentUrl","languageValue","languageLabel","_ref3","rateValue","rateLabel","settingsViewTemplate","shortAnswerTemplate","tocIndex","dataTocTime","dataFileText","showThumbnail","centerContent","showText","tocText","tocRawText","tocItemRawText","tocItemIndex","tocItemText","tocItemTemplate","searchLabel","msgSearch","msgSearchIsDisabledInFS","tocSearchIndex","tocEraseIndex","cachedVolume","volumeIndex","accessVolumeSlider","minVolume","maxVolume","currentVolume","buttonLabel","isPrimaryButton","completeSessionButtonLabel","scormNavigationBarTemplate","confirmText","dismissButtonText","dismissButtonScreenReaderText","confirmButtonText","confirmButtonScreenReaderText","isDestructiveButton","scormConfirmCompleteModalTemplate","sessionEndedText","theaterModeIndex","VideoSeekingSpinnerView$1","$container","_viewOpen","_displayTimeoutId","_$seekingSpinnerContainer","showViewAfterDelay","hideView","showView","quizController","videoApiUtils","questionSetMarker","timeInMilliseconds","quizModel","quizEnabled","newQuizController","mediaView","wrapperWidth","wrapperHeight","mediaWidth","mediaHeight","ratioOfWidth","ratioOfHeight","playerControlsType","video","videoPlaylist","mediaViewType","playlist","VideoElementView$1","$mediaContainer","includeControls","triggerRumDataEvent","firstPlayCallback","includePosterIfAvailable","_view","_mediaWrapper","_videoSeekingSpinnerView","_videoPlaybackQualityMetrics","_containsWebTrackCaptions","_videoFirstPlayTriggered","_$videoAndVideoSources","_captionTrackElements","showVideoBufferingView","hideVideoBufferingView","onVideoErrorHandler","errorString","onFirstPlayHandler","unbindVideoEvents","bindVideoSourceEvents","videoElementMarkup","languageDisplayName","$videoElementContainer","createView","captionTrackElements","textTracks","numberTracks","captionLanguage","cacheCaptionTrackElements","hotfixViewAndControlsCSS","$controlsView","showCaptionTrack","mode","hideCaptionTrack","onEventHandler","reshowVideoAfterClickToReplay","processVideoEnd","numberMediaSource","mediaWrapper","containsWebTrackCaptions","videoWidth","videoHeight","currentTimeInMilliseconds","currentTimeInSeconds","canDragContentOnVideo","playerControlType","supportsClickToPlayControls","supportsSCORM","playbackQualityMetrics","timingMeasureList","messageBarType","info","warning","MessageBarView$1","customActionButtonHandler","_$messageBarContainer","_$actionButton","onActionClick","playedTracker","tracker","internalPlayed","currentMediaSegmentIndex","lastTimeUpdate","segmentIndex","createNewPlayedMediaSegment","newIndex","numberPlayedSegments","PlayedMediaSegment","onMediaSeekEnd","mediaSegmentIndexForTime","getPlayedMediaSegmentIndexByTime","mergeOverlappingMediaSegments","numberSegments","areMediaSegmentsOverlapping","mergeMediaSegments","segmentOneIndex","segmentTwoIndex","mergedIndex","notMergedIndex","timeChangeSinceLastUpdate","recordTime","segment1","segment2","startInOuterSegment","endInOuterSegment","segment","youtubeIdParser","videoUrl","videoIdMatch","_playbackReadyPromise","youTube","onFirstPlay","onError","startTimeInSeconds","disableFullScreen","loadedPercent","supportPlaybackRate","availableRateSettings","displayAnnotations","heartbeatIntervalId","playbackReadyPromise","handlerIndex","arg1","arg2","firstPlay","player","getDuration","YT","playerVars","wmode","loop","autoplay","disablekb","rel","showsearch","showinfo","iv_load_policy","playsinline","fs","modestbranding","onReady","playerIFrame","getAvailablePlaybackRates","onStateChange","PlayerState","PAUSED","ENDED","PLAYING","BUFFERING","onPlaybackRateChange","eventHandlers","_playedTracker","getCurrentTime","seekTo","setPlaybackRate","scaledValue","setVolume","mute","unMute","playVideo","pauseVideo","cueVideoById","onYouTubeIframeAPIReady","clearInterval","setInterval","getPlayerState","videoLoadedFraction","getVideoLoadedFraction","percentLoaded","queued","youTubeApiFound","YoutubeElementView$1","containerElementUniqueId","_youtubePlayer","_errorMessageBarView","_$youtubePointerEventWorkaround","internalFirstPlayCallback","onControlsHidden","onControlsVisible","bindToEvents","youtubeElementViewObject","mediaHasQuizQuestions","SEGMENT_CHOICES","segmentLength","_videoDuration","_segmentLength","_numberSegments","_videoSegments","_numberVideoSegmentWatched","_currentPlayTime","_enabled","videoAnalytics","loadTime","videoDurationInMilliseconds","videoTimeInMilliseconds","startTimeInMilliseconds","endTimeInMilliseconds","percentageWatched","startSegmentIndex","endSegmentIndex","numberSegmentsWatched","totalSegmentsInRange","segmentValue","videoSegmentSnapshot","videoSegmentSnapshotList","PlaylistElementView$1","_videoElementView","initCurrentMedia","enablePreviousButton","enableNextButton","clickPrevHandler","clickNextHandler","wasPlaylistLastMediaItem","fullscreenHelper","elementToFullScreen","requestFullscreen","webkitRequestFullscreen","webkitEnterFullscreen","fullScreenElement","exitFullscreen","webkitExitFullscreen","ImageView$1","imageSrc","_$imageEl","imageViewMarkup","_imageTapActive","_$document","onImageError","switchToFullscreenMode","exitFullscreenMode","onFullscreenChange","fullscreenElement","onImageTouchToggle","naturalWidth","naturalHeight","MediaViewFactory$1","playerMarkup","disableHighlights","$element","highlightDisabler","highlightState","_keyTypes","space","leftArrow","upArrow","rightArrow","downArrow","tab","tableOfContents","isKeyPassedOfSameType","isKeyOfLanguageSpecificType","isKeyOfEnglishSpecificType","isKeyOfGermanSpecificType","isKeyOfJapaneseSpecificType","isKeyOfType","keyTypes","_$focusTrapElement","_firstFocusableEl","_lastFocusableEl","_$window$1","scrollIntoView","scrollParent","scrollIntoViewIfNeeded","elementFitsInsideContainer","innerHeight","saveActiveElement","disableHighlightsOnPreviousActiveElement","$previousActiveElement","onFocusTrapTab","removeFocusTrap","viewHelper","trapFocus","focusableEls","scrollActiveElementIntoView","focusPreviousElement","elementOrChildHasFocus","getActiveElement","iframes","focused","contentWindow","rightParenRegex$1","leftParenRegex$1","playReplayControlStates","playVideoDisplayed","replayVideoDisplayed","BeforeAfterPlayControlsView$1","_markup","_$videoClickToPlayLink","_$videoClickToReplayLink","_$videoClickToPlayGraphic","_$videoClickToReplayGraphic","_$pluginContainer","_viewState","onPlayHandler","hideVideoClickToPlayLink","hideVideoClickToReplayLink","replayHandler","enableControls","toggleFullscreen","initPlugins","viewElementType","initializePluginsForViewElement","showVideoClickToPlayLink","setVideoClickToPlayErrorState","showVideoClickToReplayLink","addVideoClickToPlayBackground","posterSrc","disableClickToPlayEvents","viewState","mouseButtons","mainButton","auxiliaryButton","secondaryButton","ProgressChapterModel$1","startAsPercent","endAsPercent","durationAsPercent","$chapterElement","_index","_startAsPercent","_endAsPercent","_durationAsPercent","_$chapterElement","_$loadProgressElement","_$seekHintProgressElement","_$playProgressElement","$loadProgressElement","$seekHintProgressElement","$playProgressElement","getThumbnailRectangleByTime","timeIndex","row","ProgressBarControlView$1","_videoThumbnailImage","_formattedDuration","_readableDuration","_documentRef","_windowRef","_requestAnimationId","_scrubbing","_lastScrubTime","_wasPlayingBeforeSeek","_playStatusAfterSeek","_quizModel","_$playTimeDisplay","_$scrubBar","_$scrubbarTrack","_$quizMarkers","_$scrubPreview","_$scrubVideoThumbnail","_$hiddenVideoThumbnail","_scrubVideoThumbnailCanvasCtx","_$scrubPreviewChapterName","_$scrubPreviewVideoTime","_keysEnabled","_durationDisplayInitialized","_markersCreated","_lastUpdatedFormattedMediaTime","_lastUpdatedScrubTime","_showSeekPreview","_lastSeekHintVideoPercent","_lastSeekPreviewDetails","hideThumbnail","videoTimeInSeconds","displayAtVideoPercent","chapterName","formattedVideoTime","_chaptersCache","_shouldRespectQuizMarkers","_updateBufferedTimeout","_hideSeekPreviewTimeoutId","_currentProgressBarWidth","shouldRespectQuizMarkers","getClickX","allowSkipQuestionSetMarkersBeforeTime","getChapterPercentageFromTotalPercentage","totalPercent","chapter","getVideoTimeFromXPosition","xPos","relativeXPos","scrubBarWidth","amountPlayedPercentage","pendingVideoTime","videoTime","closestRequiredQuizMarker","getClosestRequiredQuizMarkerTimeBeforeVideoTime","updateLoadProgress","onDownSeek","onMoveSeek","onUpSeek","setPlayProgress","setScrubPreviewDetailsAtTime","videoSeekTimes","unrestrictedVideoPercent","restrictedVideoPercent","getChapterNameAtVideoTime","onMouseMoveToPreview","clearHideScrubPreviewDelay","showScrubPreview","updateSeekHint","hideScrubPreview","onScrubBarMouseOut","atVideoEndTime","videoTimes","previewDisplayText","videoPercent","previewLeftPos","scrubPreviewWidth","thumbnailRect","drawImage","updateVideoThumbnail","videoPercentNormalized","drawSeekHint","updateUi","percentPlayed","updateTimeDisplay","formattedCurrentTime","progressDisplayText","ariaValueText","cacheProgressBarWidth","onPlayerResize","updateQuizMarkers","createQuizMarkers","updateMarkerVisibility","mediaDurationInMilliseconds","timePercent","quizMarkerContainerWidth","marker","markerSize","onselectstart","keyPressed","fastForwardDisabledText","screenReaderAlertMarkup","$screenReaderAlert","timeToSkip","onMousedown","disableKeyListeners","enableKeyListeners","onQuizzingCompleteHandler","onMediaSeekedEvent","resetSeekPastFlagForQuizMarkersPastTime","onLoadedMetadata","onVideoThumbnailLoaded","getContext","onAddPlugin","onVideoProgress","downloadedPercent","progressBarChapterSegmentMarkup","onRequestAnimationFrame","playAfterSeek","updatePlayProgress","Image","getXPositionForQuestionSetMarker","questionSetMarkerId","measuredContainerWidth","measuredQuizMarkerWidth","usedElementWidth","scrubBarLeftOffset","durationHasChanged","createTocChapters","xmpTocItems","lastStartTime","lastChapterDuration","nextChapterTimeOrDuration","chapterPercentage","cancelAnimationFrame","setShouldRespectQuizMarkers","newShouldRespectQuizMarkers","scrubbing","lastScrubTime","controlElement","displayWidth","PlayRewindControlsView$1","_disabled","_$playControl","_$rewindControl","_$forwardControl","_$playButtonGlyph","_$pauseButtonGlyph","pauseMedia","togglePlay","seekVideo","rewindVideo","skipVideoForward","setInitialFocus","PrevNextControlsView$1","_$previousControl","_$nextControl","disablePreviousButton","disableNextButton","localStorageWrapper","localStorage","setItem","getItem","VOLUME_STRING","VolumeControlView$1","cachedVolumeValue","_showVolumeSlider","_secondaryControlsHidden","_cachedVolume","_cachedMuted","_sliderShowTimeoutId","_$controlsContainer","_$primaryControlsContainer","_$secondaryControlsContainer","_$volumeContainer","_$volumeSliderContainer","_$volumeSlider","_$volumeSliderTrack","_$volumeControl","_initialVolume","_initialMuted","_sliderVolumeValue","_sliderActive","onKeyDownHandler","onKeyHandler","setSliderValue","updateVolumeSliderPositionByVolume","clampVolumePercentage","volumeAsPercent","volumePercentageValue","onSliderMouseDownHandler","volumeSliderLeftOffset","pendingVolumeValue","updateSliderValue","onMouseMove","onMouseUp","updateSliderOnAnimationFrame","volumeFromMedia","volumeConverted","volumeSliderLeftCssValue","volumeTrackWidthCssValue","showVolumeSlider","handleSecondaryControls","shouldHideSecondaryControls","setSecondaryControlsVisibility","isHidden","hideVolumeSlider","updateUI","volumeValue","setMuted","newVolumeAsPercent","startHideSliderTimeout","onContainerMouseOver","onContainerMouseLeave","hideVolumeSliderOnFocusOut","onVolumeButtonClick","onResize","onMediaVolumeChange","hideControls","AudioDescriptionControlView$1","_$audioDescriptionButton","_$audioDescriptionGlyph","_audioDescriptionEnabled","onButtonClick","audioDescriptionEnabled","onAudioDescriptionChange","eventData","audioDescriptionFailedToPlay","disableControl","enableControl","CaptionsControlView$1","_$closedCaptionButton","_$closedCaptionGlyph","_normalButtonClass","_activeButtonClass","savePreference","onCaptionsToggle","savedStateLoaded","setCaptionButtonVisible","captionButtonVisible","_hotkeysEnabled","hotkeyService","TocControlView$1","_$tocButton","_$tocGlyph","tocButtonMarkup","_tocDisplayed","setTocDisplayState","displayToc","classList","onHideToc","onShowToc","focusTocButton","_defaultAvailablePlaybackRates","PlayerSettingsView$1","_isOpen","_currentPlaybackRate","_availablePlaybackRates","_minPlaybackRate","_maxPlaybackRate","defaultPlaybackRate","playerSettingsViewMarkup","playerRateOptionsLocalizedStrings","rate","getPlaybackRates","selectedLanguageIdentifier","foundSelectedLanguageInAvailableList","languageShouldBeSelected","getClosedCaptionLanguages","_$playerSettingsWrapper","_$playerSettingsViewEl","_$playbackRateSelectEl","_$ccLanguageSelectEl","_$playerSettingsButton","_$playerSettingsButtonGlyph","_$closedCaptionToggleContainer","_$closedCaptionToggle","_$closedCaptionToggleElement","_$audioDescriptionToggle","_$audioDescriptionToggleElement","_$settingsCloseButton","_$settingsHeaderContainer","savedPlayBackSpeedFromLocalStorage","removeClickHandler","addClickHandler","trapFocusInModalView","hideSettingsViewOnClickOutside","playbackSpeed","onPlaybackRateControlChange","onCCLanguageControlChange","ccLanguageCode","onAudioDescriptionToggleChange","onClosedCaptionToggleChange","onCaptionsToggled","onPlaybackRateValueChange","realPlaybackRate","onKeyboardShortCut","indexOfCurrentRate","decrementPlaybackRate","onPlayerSettingsButtonClick","onDisplayCaptionControl","displayCaptionControl","isOpen","nullPipController","exit","bindChangeEvent","unbindChangeEvent","inPip","isSupported","StandardsPipController$1","requestPictureInPicture","exitPictureInPicture","onChangeHandler","pictureInPictureElement","pictureInPictureEnabled","LegacySafariPipController$1","webkitSetPresentationMode","webkitPresentationMode","webkitSupportsPresentationMode","pipControllerFactory","PipControlView$1","_$pipButton","_pipApiController","onPresentationModeChange","pipViewActive","onPipControlClick","handleSmartPlayerActionEvents","initialize","DisplayModes","Normal","Theater","Fullscreen","PictureInPicture","TheaterModeControlView$1","_$theaterModeButton","_$theaterModeGlyph","_theaterModeEnabled","sendTheaterModeChangedEvent","displayMode","setDisplayMode","loadSavedSettings","savedDisplayStateStorage","inFullScreen","FullscreenControlView$1","_$fullScreenButton","_$fullScreenGlyph","_elementToFullscreen","_inFullScreen","_inFullFrame","_fullScreenDomElement","_buttonMode","_legacyIOSFullScreenMode","findButtonMode","canSupportExpandVideoMode","setButtonDisplay","onFullScreenChange","cancelFullScreen","switchFromFullScreenMode","toggleFullScreenMode","toggleFullFrameMode","onFullScreenClick","checkToExitFullScreen","onFullButtonClick","initializeHandlers","fullScreenEventNames","initializeFullScreenSupport","onVideoEnd","onDoubleClick","isFullScreen","isFullFrame","ClickControlsView$1","fullscreenControlView","progressBarControlView","doubleClickDelay","_$clickControls","_$playPauseStateContainer","_$playPauseStateIndicator","_clicks","_doubleClickTimer","_draggingCaption","_mediaPluginInteractionActive","_doubleClickDelay","processHotspotActiveChange","hasTimeChangeAction","enable","onControlClick","mediaPaused","onCaptionDragStart","onCaptionDragEnd","processMediaAreaPluginInteractiveHandler","VideoControlsController$1","$rootSmartPlayerElement","_$videoControlsContainer","_beforeAfterPlayControlsView","_progressBarControlView","_playRewindControlsView","_prevNextControlsView","_volumeControlView","_audioDescriptionControlView","_captionsControlView","_tocControlView","_playerSettingsView","_pipControlView","_theaterModeControlView","_fullScreenControlView","_clickControlsView","_lastClickTime","_displayStartScreenOnPlaybackError","_mediaIsSeeking","_timeToSeekAfterCurrentSeekOperation","_displayMode","_playbackInitialized","_userNeedToClickHeroPlayControl","_controlsHidden","_autoHideControlsTimeoutId","_lastMouseMoveCoords","forceHide","hideElementAfterFadeOut","controlsAreBusy","hideControlsOnTimeout","clearHideControlsTimeout","resetHideControlsTimeout","enableClickControlsIfNotPausedForHotspot","oneOrMoreHotspotsWithTimeActionArePaused","showControls","showControlsWithAutoHide","onContainerClick","getTime","onContainerLeave","onContainerMousemove","enableAutoHideControls","disableAutoHideControls","resetTime","onPlaybackInitialized","playPromise","setControlsDisplayMode","onSeekToTime","onSetVolume","onSetMuted","isMuted","onSetPlaybackRate","onVideoSeeking","onVideoSeeked","onVideoMetadataLoaded","seekToInitialTimeIfSet","teardownHideShowControls","onDisplayTocControl","onTocScroll","timeToSeek","initializePlayback","onQuizSetupComplete","onHeroPlayControlClick","onMediaError","onHotspotInactive","onTryToAutoPlay","userNeedToClickHeroPlayControl","playbackInitialized","beforeAfterPlayControlsView","CAPTION_POSITION","CAPTION_ALIGNMENT","VideoControlsDisplayModeController$1","videoControlsController","_quizUIVisible","_quizUIMinimized","_pipViewActive","_captionViewPosition","_searchIsFocused","_isScrubbing","_externalLinkViewOpen","_mediaError","getDisplayMode","updateVideoControlsDisplayMode","captionViewPosition","onPipChanged","onQuizUIVisible","onQuizUIHidden","onMinimizeQuizUI","onMaximizeQuizUI","onShowQuizSetup","handleControlsUpdated","onSearchFocusChange","searchIsFocused","onScrubbingStarted","onScrubbingEnded","onExternalLinkViewOpen","onExternalLinkViewClosed","hotspotViewState","firstVisible","HotspotViewModel$1","hotspotXmpModel","videoNativeWidth","videoNativeHeight","_hotspotXmpModel","_hotspotIndex","_isActive","_hasPausedAtEnd","_viewPoints","viewPoints","coordinate","hsViewData","xOrig","yOrig","xScale","yScale","getHotspotViewPoints","hotspotText","jumpMediaText","jumpTimeText","openLinkText","playText","createHotspotDescription","isTimeNearEndOfHotspot","getTimeLeftUntilEnd","getCoordinates","hotspotViewWidth","hotspotViewHeight","viewPoint","isHotspotWithinTime","shouldPauseAtTheEnd","isActive","hasPausedAtEnd","HotspotView$1","spContainer","$hotspotsContainerElement","hotspotViewModel","_$hotspotSvgElement","_$hotspotLinkElement","_timerId","svgViewMarkup","$svgView","enableTabbing","disableTabbing","onQuizEventHandler","onControlsUpdatedHandler","hideHotspot","getCurrentTimeInMilliseconds","displayHotspot","addHotspotViewToDom","$svgElementWithLowerIndex","$svg","getSvgElementWithLowerIndex","pauseOnHotspot","initPauseOnHotspot","mediaPlaybackRate","frameBuffer","getTimeToHotspotEnd","resetHasPaused","update","hotspotState","HotspotsView$1","tabController","_$hotspots","_currentFile","hotspotsMarkup","_xmp","_eventContainer","_hotspotsContainerId","_hotspotXmpModels","_hotspotViews","_mediaNativeWidth","_mediaNativeHeight","_oneOrMoreHotspotActive","preventEvent","onHotspotActiveChange","oneOrMoreHotspotActive","numberHotspotsJustDisplayed","isHotspotWithTimeActionPaused","lastActiveHotspotView","getLastActiveHotspotView","lastTabEnabledElement","hotspotAlertText","addScreenReaderAlert","onHotspotClick","targetHotspotXmpModel","targetHotspotViewModel","currentFile","hotspotView","currentMediaTimeInMilliseconds","$hotspots","HotspotController$1","_hotspotsView","_$hotspotsContainer","onVideoTimeUpdate","updateHotSpotsViewTime","processHotspotClick","opened_url","targetWindow","onSeeked","eventsToBind","loadedmetadata","timeupdate","seeked","unbindToEvents","_scaledFontSize$1","_currentCaptionWidth$1","xmpCaptionView","setStyle","captionsService","$positionContainer","$textContainer","background","setWidth","scaledVideoWidth","captionPositionUnderVideo","setScale","canvasScale","maxRequiredHeight","scaledFontSize","captionWidth","_scaledFontSize","_currentCaptionWidth","adaCaptionView","captionViewFactory","CaptionsView$1","canDragCaptions","_lastUpdateCurrentFile","_window","_$positionContainer","_$textContainer","_canvasScale","_visible","_currentCaptionIndex","_lastUpdateCurrentTime","_initDragClientPosition","_onStartDragCaptionContainerSize","_initCaptionTextPosition","_customCaptionPosition","onCaptionLanguageChanged","updateCaption","onDragAnimationFrame","getInteractionPointFromEvent","onCaptionDrag","point","dragXOffset","dragYOffset","offsetXPercent","offsetYPercent","maxWidthPercentage","currentCaptionWidth","innerWidth","currentCaptionHeight","currentCaptionOffset","currentTextOffset","topPercent","leftPercent","setVisible","handleDisplayCaptions","resizeCaptionsContainer","updateView","captionStylesHaveChanged","onSizeChange","forceActiveCaptionUpdate","newCaptionIndex","getHorizontalAlignmentClass","setupDomStructure","showVideoTrackCaptions","hideVideoTrackCaptions","CaptionController$1","captionService","_captionsView","_$controls","setupCaptionView","isNotNullOrUndefined","resizeCaptions","scaleContainer","updateCaptions","onNewCaptionTrack","savedCaptionsStateFromLocalStorage","initialState","videoCaptionsSetting","loadInitialState","getCaptionCollection","getCaptionTrack","setCaptionTrack","showCaptionControls","EMAIL_REGEX","textSanitizer","email","TIME_SALT","getMilliseconds","UNIQUE_TOKEN_1","UNIQUE_TOKEN_2","REGEX_REPLACEMENT_STRING","TOKEN_1_REGEX","TOKEN_2_REGEX","REGEX_ESCAPE","createHighlightedText","searchRegex","textWithSearchMatchPlaceholders","searchTool","searchString","itemsToSearch","itemText","rawText","imageRef","imageRect","simpleSearch","TocView$1","_viewVisible","_viewIsOpen","_searchFocus","_scrolledToc","_$tocHeadContainer","_$searchContainer","_$searchInput","_$titleHeader","_$clearSearchButton","_$tocPipImageContainer","_$searchInputDisabled","_$tocContentScrollContainer","_$tocContent","_$tocContentScreenReaderLabel","_$tocItemDomList","_$tocContainer","_$noSearchResultsAlert","_tocThumbsImage","_tocPipImage","_pointerDownClientPoint","animationSpeed","openView","resizeView","headerHeight","tocTopPosition","displayTocPipImage","targetWidth","targetHeight","imageWidth","imageHeight","TOC_WIDTH","pipImageBackgroundStyle","pipImageBackground","setupTocHeader","clearTocContent","createTocItem","tocTime","tocFile","tocItemThumbnailCanvasEl","imageThumbRect","tocItemMarkup","$tocItem","yPos","thumbScale","TOC_MAX_HEIGHT","verticalThumbScale","ctx","fillStyle","fillRect","generateTocItemThumbnail","displayTocItems","tocItem","thumbnailCanvasEl","tocItemClickHandler","seekToTocItem","clickTocItem","$currentTarget","timeToSeekTo","fileToSeekTo","onTocItemPointerDown","onTocItemPointerMove","onSearchTextInput","updateSearchResults","$tocButtons","searchResults","searchResultsTocItems","updatedSearchAlertText","alertScreenReader","clearSearch","clearSearchAlertText","onSearchInputFocus","onSearchInputBlur","onTocItemKeyUp","onTocItemKeyDown","onTocContentScrollHandler","tocMarkup","blurSearchInput","disableSearch","enableSearch","resize","tocContainsActiveElement","TableOfContentsController$1","_tocView","resizeTableOfContents","onTocItemClicked","videoIndex","hideToc","mobileOrientationChange","onQuizMinimizeUI","onQuizMaximizeUI","onQuizReview","onQuizPaused","onTocDisplayToggled","AudioDescriptionTrackView$1","_audioDescriptionAudioEl","_audioTrackEnabled","_videoIsSeeking","_videoIsBuffering","_lastBufferedVideoTime","onAudioError","syncAudioTimeWithVideoTime","syncAudioVolumeWithVideoVolume","pauseAudioDescription","onVideoPlaying","onVideoStartSeeking","onWaiting","playAudioDescriptionIfVideoIsPlaying","onRateChange","onAudioTrackSeeked","onAudioDescriptionControlChange","onTimeUpdate","AudioDescriptionController$1","_audioDescriptionTrackView","ConfirmOpenUrlView$1","_$view","_$externalLinkReplayButton","_$externalLinkVisitButton","onConfirmHandler","onReplay","bindEvents","notAvailable","jumpToTimeAndPlay","jumpToTImeAndStop","showReplayControls","hideReplayControls","openUrl","openUrlInNewWindow","xmpEndActionType","xmpEndActionTypeLowerCase","executeSeekAction","onReplayHandler","seekTime","displayConfirmOpenUrlView","$localContainer","inNewWindow","urlString","executeEndAction","replayVideoHandler","showReplayControlsHandler","EndActionsController$1","_processingEndOfVideo","replayVideo","showClickToReplay","onVideoReplayHandler","replayTime","processEndOfMedia","isPlaybackEnded","BubbleView$1","containerId","_viewIsMinimized","_viewBottom","_ignoreBreakpoints","_containerId","_topContainer","_$container","_$overlay","_$arrowBubble","clickCapture","isDesktopBreakpoint","cacheElements","ignoreBreakpoints","maximizeView","minimizeView","updateViewPosition","removeView","destroyOverlay","getOverlayMarkup","setBottomOffset","bottom","pointAt","quizXPos","arrowPos","outerWidth","viewWidth","halfViewWidth","borderWidth","arrowWidth","viewIsMinimized","rationaleActionType","CONTINUE","LOCATION","JUMP_TO_TIME","CORRECT_GLYPH_DATA_URL","INCORRECT_GLYPH_DATA_URL","CORRECT_ANSWER_TEXT","YOUR_ANSWER_TEXT","AnswersView$1","showResults","answersMarkup","_$window","_$textInput","getCorrectAnswerIndex","numberAnswers","correctAnswerBitshifted","displayResults","$labelEls","correctAnswerIndex","$placeHolderImgEls","$userResponseInputImageEl","$correctResponseInputImageEl","$correctImage","$incorrectImage","displayResponseFillInResults","$inputEls","disableInput","getAnswersMarkup","getUserResponse","getCorrectAnswerText","userAnsweredQuestion","responseSuffix","getTextResponseSuffix","usersAnswer","getUsersAnswer","fullAnswerText","isTextInputOrAreaFocused","QuestionView$1","$questionTextContainer","$questionGradedStatusContainer","$feedbackContainer","$answersContainer","_answersView","feedbackMarkup","_feedbackContextMarkup","questionTextMarkup","questionGradedStatusMarkup","QuestionSetView$1","displayOverlay","mediaIsImage","showQuestionSetResults","_resolveInitPromise","questionSetViewMarkup","_currentQuestionIndex","_startTimeForQuestion","_currentQuestionView","_initTimeoutId","_alertScreenReaderTimeoutId","_$questionSetContainer","_$questionSetContent","_$questionTextContainer","_$answersContainer","_$feedbackContainer","_$questionCountContainer","_$questionGradedStatusContainer","_$hideControl","_$showControl","_$prevControl","_$continueControl","_$submitControl","_$minimizedContainer","_minimizedByKeyboardShortcut","_superView","initPromise","onHideQuizClick","onShowQuizHandler","onKeyUpHandler","isOnLastQuestion","saveQuestionUserInput","timeBetween","executeContinueAction","displayNextQuestion","executeRationaleAction","feedbackInfo","actionType","feedbackReason","getFeedbackInfoForCurrentQuestion","displayQuestion","onPreviousQuestion","onNextQuestion","onContinue","onSubmit","onIphoneTouchstart","getControlsConfig","currentQuestion","onFirstQuestion","onLastQuestion","hasOneQuestion","controlsConfig","showSubmitNav","showContinueNav","showPrevNav","showNextNav","prevDisabled","nextDisabled","updateControls","updateQuestionCount","questionCountMarkup","checkQuestionSetProgress","completeCallback","showFeedbackForCurrentQuestion","viewInitializedPromise","_superView$2","questionSetConfirmationView","getViewMarkup","getReviewControlRef","getConfirmControlRef","$confirmControl","sessionStorageWrapper","sessionStorage","rightParenRegex","leftParenRegex","QuizSetupView$1","quizSetupMarkup","_$quizSetupView","_$firstNameInput","_$lastNameInput","_$emailInput","_$beginButton","_$skipButton","getKeys","validateInput","firstName","lastName","beginQuiz","cacheSelfIdentity","skipQuiz","hideSkipButton","$view","_superView$1","reviewAnswersConfirmationView","getContinueControlRef","$reviewControl","BackoffStrategyFactory","retryLimit","backoffTime","maxDelay","tries","backoff","statusCodes","Unauthorized","UnprocessableEntity","_quizInstanceDataPromiseResolve","_quizInstanceDataPromiseReject","_gradeableDetails","_unGradeableDetails","_onPreRollStartedCallback","$preRollView","NO_RETRY_STATUS_CODES","HttpService$1","retryStrategyFactory","logFailures","_pendingRequestPromises","removePendingRequestPromise","requestPromise","UUID","addRequestToPendingList","requestUUID","sendRequest","httpVerb","retryStrategy","request","retries","responseData","canRetryFromStatusCode","retryResponse","sendFormDataPost","quizDataXmlConverter","recipient","choice","httpService$1","tokenService","AccessToken","_quizCreateInstanceUrl","_quizInstanceDataPromise","httpService","httpServiceWithUnlimitedRetries","httpServiceWithNoLogging","getBaseURL","quizService","setQuizCreateInstanceUrl","quizCreateInstanceUrl","getQuizCreateInstanceUrl","startQuizInstance","playerConfig","QuizId","CheckForQuizDefinition","FirstName","LastName","Email","getInstanceFormData","DefinitionRequired","quizJsonData","quizDefinitionXml","DefinitionText","submitQuizDefinition","analyticsSampleRate","SampleRate","reportingRate","ReportingRate","Id","submitQuestionSet","quizInstanceData","questionSetXml","ResponseText","sendProgress","sampleRateInMilliseconds","completedSamples","InstanceId","Interval","ViewedSegments","getAnalyticsRate","QuizProgressTracker$1","videoToTrack","reportingRateInMilliseconds","_intervalId","_playCallbackFunction","_didAttachToEndedEvent","_didAttachToPlayEvent","attachToEndedEvent","stopInterval","setupProgressInterval","attachToPlayEvent","videoStartMilliseconds","videoEndMilliseconds","isEndOfVideo","firstSample","lastSample","mergedPlayedInMilliseconds","mergedPlayedIndex","processPlayedSegments","computePercentageViewed","questionGrader","FATHOM","XMP","fathomGrader","processQuestionSetResults","questionResult","isCorrect","processQuestionResults","doesLocalGrading","gradeQuestion","responseNumber","gradeChoiceQuestion","responseLowerCase","possibleAnswers","numberPossibleAnswers","gradeFillInTheBlankQuestion","xmpGrader","gradeQuestionSet","questionSetReviewStatusView","setGradeableDetails","setUngradeableDetails","getHideAnswersControlRef","getShowAnswersControlRef","$readableElement","scormConstants","terminate","setValue","commit","dataModelID","cmiExit","cmiLocation","cmiSuspendData","cmiProgressMeasure","cmiScaledPassingScore","cmiScoreMin","cmiScoreMax","cmiScoreRaw","cmiScoreScaled","cmiSuccessStatus","cmiCompletionStatus","cmiSessionTime","adlNavRequest","scorm1Dot2DataModel","scorm2004DataModel","incomplete","notAttempted","unknown","passed","failed","browsed","exitStates","suspend","logout","navRequestStates","exitAll","suspendAll","versions","NOT_DETECTED","SCORM_1_2","SCORM_2004","assessment","minScore","maxScore","scoreNormalizationDivider","ScormDataModel$1","_percentageComplete","_quizPercentageCorrect","_quizCompletionStatus","_quizModelSnapshot","_videoAnalyticsSnapshot","_videoTimeInSecondsSnapshot","_videoTimeInSeconds","_completionStatus","_passingStatus","parseSuspendedDataString","suspendedDataString","suspendedData","pc","vas","cvt","getSuspendedDataString","percentageComplete","quizPercentageCorrect","quizPercentageCorrectAsString","quizCompletionStatus","videoAnalyticsSnapshot","snapshot","videoTimeInSecondsSnapshot","completionStatus","passingStatus","ScormApiWrapper$1","scormApi","noAPIFound","apiVersion","scormManifestDocString","apiCall","scormFunctionName","dataModalID","dmeValue","dataModel","Initialize","LMSInitialize","GetValue","LMSGetValue","Terminate","LMSFinish","SetValue","canSetValue","lessonStatus","LMSSetValue","Commit","LMSCommit","getScormManifestDoc","getScormApiOnWindow","windowRef","API_1484_11","manifestDocAsString","scormApiVersion","findAPI","findAPITries","lookForApiOnWindowTopOpener","getAPI","lookForApiOnParentWindow","getTitleFromManifestDoc","manifestXml","api","getTitle","getLastError","errorNumber","diagnostic","GetLastError","GetErrorString","GetDiagnostic","LMSGetLastError","LMSGetErrorString","LMSGetDiagnostic","ScormNavigationBarView$1","_$scormNavigationBarContainer","_$scormHeaderElement","_$scormCompleteSessionButton","_scoObjectiveHasBeenCompleted","onCompleteSessionHandler","scormNavigationBarMarkup","setTitle","scormTitle","scoObjectiveHasBeenCompleted","ScormConfirmCompleteModalView$1","_$confirmButton","_$dismissButton","_$scormConfirmCompleteModalWrapper","onDismissClickHandler","onCompleteClickHandler","failedToSaveSuspendedData","finalConfirmText","canResumeVideo","scormConfirmCompleteModalMarkup","ScormSessionEndedView$1","_$scormSessionEndedWrapper","scormSessionEndedMarkup","scormController$1","_scormApiWrapper","_isDisposed","_initialized","_scormModel","_scormNavigationBarView","_scormConfirmCompleteModalView","_minimumScoreToPass","_minimumViewPercentageToCompleteLesson","_sessionStartTimeInMilliseconds","_preventWindowClose","_ignoreFailedToSuspendError","_pendingScoExitValue","_scoSessionHasEnded","scoHasQuiz","scormSessionHasUnfinishedQuiz","canSuspendScormSession","endScormSession","timeInSecondsAsString","scoSuccessStatusValue","scoCompletionStatusValue","submitScore","suspendSuccess","sessionTimeInMilliseconds","sessionTimeInSeconds","onExitSessionHandler","exitScormSession","onExitSessionConfirmedHandler","onExitSessionWithOutProgressConfirmed","tryAndTerminateSessionOnPageUnloadIfNeeded","currentScore","allQuestionsAnswered","scoreNeededToPass","scoreNeededMultiplier","maxPassingScoreValue","lmsPassingScore","apiResult","onbeforeunload","preventPopUpWindowClose","initView","submitVideoWatchedPercentage","initialized","initialPercentageComplete","initialVideoAnalyticsSnapshot","initialQuizModelSnapshot","initialVideoTimeInSeconds","minScoreToPassLesson","minimumScoreToPass","minViewPercentageToCompleteLesson","minimumViewPercentageToCompleteLesson","supportsResumeSession","scormController","quizServiceErrorIds","badDefinition","QuizController$1","_questionGrader","_quizUserDetails","_quizSetupPromise","_resolveQuizSetup","_quizSetupView","_currentView","_retrySubmissionMessageDisplayBar","_quizOutOfDateMessageView","_quizBadDefinitionMessageView","_progressTracker","_numberQuestionSets","_currentQuestionSetIndex","_bottomOffset","_pointAt","_quizEnabled","_quizReady","_mediaIsImage","_lastStatusMessage","_shouldReportViewedOnPageLoad","submitScoreToScormController","userSubmitToLMS","onNetworkRetryEvent","completeQuestionSetEventDispatch","questionSetCompleteHandler","onContinueHandler","createQuestionSetFeedbackView","needOverlay","questionSetView","continueVideoHandler","initQuestionSetFeedback","initFeedbackFromReviewStatusView","hideQuizStatus","onRationaleActionHandler","onCloseQuestionSetView","possibleCorrect","numberUngradable","createQuestionSetReviewStatusView","numberIncorrectText","percentIncorrectText","numberIncorrect","updateViewBottom","createReviewAnswersConfirmationView","submitResults","ioMessage","gradeResults","onGradingComplete","apiErrorEventHandler","createQuestionSetView","reviewHandler","confirmHandler","destroyQuizSetupView","beginQuizHandler","skipQuizHandler","createSetupView","startQuizApiInstance","errorID","responseJSON","errorId","displaySetupView","removeSubmissionRetryMessage","showSubmissionRetryMessage","showQuizIsOutOfDateMessage","reload","showQuizBadDefinitionMessage","setQuestionGrader","grader","forceProgressUpdate","segmentsCompleted","onMediaFirstPlayerHandler","onMediaControlsReady","setQuizModel","newQuizModel","resolveQuizSetup","hasMultipleQuestionSets","getLastStatusMessage","displayNextQuestionSet","findQuestionSet","activeQuestionSetId","numberMarkers","findPrevMarkerTimeForMarker","updatePercentWatchedForQuestionSet","percentWatched","displayConfirm","createConfirmView","showQuiz","hideQuiz","pointViewAt","startTrackingProgress","populateQuizModel","suspendedQuizData","quizIsSetupPromise","quizReady","viewIsOpen","hasQuizQuestions","QuizEventController$1","ioOverlayView","_lastQuestionSetId","_lastQuestionSetMarkerTime","_quizzingErrorMessageBarView","updateQuizPointAtPosition","playerXOffset","pointAtXPosition","seekToTime","safeSeekTime","updateQuizzing","intervalId","quizEventHandler","prevMarkerTimeInSeconds","displayMessage","jumpToTimeInSeconds","lastStatusMessage","onVideoControlsVisible","MediaAnalyticsController$1","_eventPlayTracking","_eventLastPercentReported","initVideoAnalytics","resumeSCORMSession","handleTimeUpdate","percent_viewed","updateAnalytics","onCanPlayVideo","eventAction","loading_duration","resetPlayStartAnalytics","videoStartedEventAction","onMediaEnd","finished_action","onMediaWrapperMediaEnd","onOpenExternalLink","onClickExternalLink","onStartedPlayback","quizRequiresAnalytics","playerConfigurationRequiresAnalytics","onPlayerInitialized","canplay","metadataReady","canPlayReady","PluginEventsController$1","_$mediaPluginContainer","onMediaPluginContainerKeyHandler","onMediaPluginContainerMouseHandler","initMediaPlugins","onPluginAdded","MediaSessionController$1","mediaPosterImageSrc","_navigatorRef","_mediaSessionRef","mediaSession","setActionHandler","MediaMetadata","_metaDataSet","setMetaData","artwork","updateMediaSessionState","playbackState","setPositionState","onPlayAction","onPauseAction","onSeekToAction","MediaExtensionsController$1","responsiveController","_hotspotController","_tableOfContentsController","_audioDescriptionController","_endActionsController","_quizController","_quizEventController","_mediaAnalyticsController","_pluginEventsController","_mediaSessionController","hasAnEnabledQuiz","setupVideoControllers","disableHighlightOnMouseDown","TabController$1","$defaultFirstTabEnabledElement","$defaultLastTabEnabledElement","_defaultFirstTabEnabledElement","_defaultLastTabEnabledElement","_firstTabEnabledElement","_lastTabEnabledElement","_playerInFullScreenMode","unbindEventsToTabEnabledElement","setFirstTabEnabledElement","firstTabEnabledElement","setLastTabEnabledElement","initController","ExternalEventsController$1","playerViewEventCallbacks","onTheaterModeChanged","newDisplayMode","onVideoError","onPlayingEvent","onStartedPlaybackHandler","triggerQuizVisible","triggerQuizHidden","triggerQuizPromptVisible","triggerQuizPromptHidden","processCaptionChanged","processCaptionToggled","externalCaptionEvent","onCaptionsReadyHandler","triggerPlayerSettingsOpen","triggerPlayerSettingsClose","triggerVideoControlsHidden","triggerVideoControlsVisible","triggerExternalPlayerResize","triggerHeroControlHidden","triggerImagePointerOver","triggerImagePointerLeave","playing","PlayerState$1","_oneOrMoreHotspotsWithTimeActionArePaused","_videoHasQuizQuestions","_pausedForQuiz","videoHasQuizQuestions","IoOverlayView$1","_$ioContainer","_$ioMessage","_$ioImg","shouldHideLoadingGraphic","setViewMessage","SmartPlayerView$1","playerInstanceUUID","xmpInErrorState","_viewHasBeenInitialized","_mediaExtensionsController","_tabController","_externalEventsController","_scormErrorMessageBarView","_$playerPluginContainer","_mediaElementUniqueID","_viewInitializedPromise","_playerViewEventCallbacks","_queuedMediaBinds","_mediaView","_ioOverlayView","_videoControlsController","_videoControlsDisplayModeController","_controlsReady","_mediaExtensionsReady","_mediaHasBeenLoaded","_playerState","_$mediaContainer","_$playerLayoutControlsContainer","eventCategorySuffix","categorySuffix","rum","externalEventIsSupported","eventKey","onHideLoadingMessage","loadMediaWhenComponentsAreReady","onControlsReady","onMediaExtensionsReady","onFailedToFindSCORMApi","startViewPortObserver","onImagePointerOver","onImagePointerLeave","isScrubbingVideo","progressBarDisplayWidth","currentDisplayMode","smartPlayerPreRollEventConstants","PRE_ROLL_STARTED","PRE_ROLL_FINISHED","PRE_ROLL_FINISHED_ACTIONS","REMOVE_NOW","preRollView","$window","preRollMessage","destroyView","onIFrameContentLoaded","preRollController","onPreRollStartedCallback","viewExists","_$spElement","setTheme$1","applyTheme","getClassNameForTheme","themeClassNameAsString","currentThemeClassName","themeController","externalVideoEventIsSupported","_$rootSmartPlayerElement","_responsiveController","_currentPlayerType","_captionService","_smartPlayerView","_viewCreated","_viewInitialized","_queuedExternalConfiguration","_playerInstanceUUID","_xmpInErrorState","mediaListError","onPreRollStart","continueInit","currentInstanceUUID","mediaListReady","playbackInitiatedHandler","processMediaAssets","initIntrinsicSizingFromImageUrl","imgUrl","img","TSC","embedded_config_xml","setupPlayer","captionChangeHandler","initPlayerView","displayLocalWarning","addEventListener$1","playMedia","queueEventHandler","setCurrentTime","mediaPlayer","rootElementID","$parentNode","getSmartPlayerRootElement","getVersion","jsSeekTime","jsPlay","getCurrentSrc","getEnded","getPaused","getPlaybackRate","getBuffered","getPlayed","getSeekable","getSeeking","getVolume","getMuted","isScrubbing","dequeueEventHandler","triggerEvent","isVisible","getIsYouTube","getTocChapters","getProgressBarDisplayWidth","getCurrentDisplayMode","Plugin$1","pluginName","_initializedPromiseResolve","_initializedPromise","_pluginName","_viewElementType","pluginContainerElement","REMOVE_SPACES_REGEX","PluginController$1","_plugins","isViewElementTypeSupported","registerPlugin","pluginSameNameMessage","pluginUnsupportedViewElementMessage","plugin","$viewElementPluginContainer","elementTypePlugins","getPluginsForViewElementType","pluginNameNoSpaces","pluginNamedContainerClassName","getPluginContainerElement","CamtasiaQuizPreviewView$1","xmpString","previewElement","packageJson","timeCodeRegex","newlineRegex","defaultChapterName","chapterParams","parseTableOfContentsItemFromString","lineString","timecodes","getChapterNameFromLineString","chapterStartTime","_started","_controls","_authInfo","_lastError","_pluginController","generalErrorHandler","mediaInterfaceController","addSrc","$spElement","pluginInitPromise","displayQuizPreview","containerElement","displayImageFullscreen","exitImageFullscreen","createTocFromDescription","descriptionText","tocModel","textString","textSplitNewlines","chapterItems","previousTocItemStartTime","textLine","textToTocModel","decodeURIComponent","lowerCaseValue","tocSrc","tocChapters","prerollSrc","captionsVisible","ignoreStoredCaptionVisible","isYouTube","authInfo","contextMenu","isIphoneOrIpod","singleClickControlEnabled","doubleClickControlEnabled","progressBarWidth","environment","deprecatedName"],"sourceRoot":""}