{"version":3,"file":"pwc-smartplayer.d4cec91d.chunk.js","mappings":"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CAC,iCACAG,uBACAC,uBACAE,gBACAC,gBACAhC,uBACA4N,uBAAwB3N,yBACxBiC,iBACAC,iBACAE,sBACAC,sBACAE,mBACAC,mBACAE,qCACAC,qCACAE,kBACAC,kBACAE,mBACAC,mBACAE,mBACAC,mBACAC,oBACAC,oBACAE,uBACAC,uBACAmK,uBA7N2B,WAC3B,OAAOlS,oBACT,EA4NEmS,uBA3N2B,SAAgCC,aAC3DpS,qBAAuBoS,WACzB,EA0NEnK,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,0BACAoH,8BArVkC,WAClC,OAAO/Q,2BACT,EAoVE6J,8BACAE,0BACAC,0BACAE,cACAC,cACAE,eACAC,eACAC,eACAC,eACAC,WACAC,WACAG,gBACAC,gBACAC,gBACAC,gBACAC,SACA+F,SAAU9F,WACVC,4BACAC,4BACAC,4BACAC,4BACAC,oBACAC,oBACAE,wBACAC,wBACAE,wBACAC,wBACAK,4BACAC,4BACAE,qBACAC,qBACAE,oBACAC,oBACAE,4BACAC,4BACAE,oBACAC,oBACAE,oBACAC,oBACAE,YACAC,YACA2D,gBAAiB7O,oBACjB6G,gBACAwE,qBACAC,qBACAE,uBACAC,uBACAE,wBACAC,wBACAE,0BACAC,0BACAE,yBACAC,yBACAE,2BACAC,2BACAE,uCACAC,uCACAE,8BACAC,8BACAmC,sBA1L0B,WAC1B,OAAO3P,mBACT,EAyLE4P,sBAxL0B,SAA+BC,oBACrDA,qBAAyE,IAAnDA,mBAAmBt+C,OAAOuqC,sBAClD+T,oBAAsB,KAExB7P,oBAAsB6P,kBACxB,EAoLEC,yBAnL6B,WAC7B,OAAO7P,sBACT,EAkLE8P,yBAjL6B,SAAkCC,uBAC3DA,wBAA+E,IAAtDA,sBAAsBz+C,OAAOuqC,sBACxD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","sources":["../node_modules/@techsmith/techsmith-smartplayer/dist/techsmith-smart-player.esm.js"],"sourcesContent":["/**\n * TechSmith Smart Player v5.119.1\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';\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 },\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 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.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.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.captionTrack.captionCollection;\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.119.1\";\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 // 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","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","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","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","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","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","savedPlayBackSpeedFromLocalStorage","_$playerSettingsViewEl","_$playbackRateSelectEl","_$ccLanguageSelectEl","_$playerSettingsButton","_$playerSettingsButtonGlyph","_$closedCaptionToggleContainer","_$closedCaptionToggle","_$closedCaptionToggleElement","_$audioDescriptionToggle","_$audioDescriptionToggleElement","_$settingsCloseButton","_$settingsHeaderContainer","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","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":""}