scorm-again 3.0.2 → 3.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- !function(){"use strict";const e={D:86400,H:3600,M:60,S:1},t=e=>{if(!e||0>=e)return"00:00:00";const t=Math.floor(e/3600),i=new Date(1e3*e),s=i.getUTCMinutes(),r=i.getSeconds(),n=e%1;let o="";return a(n)>0&&(o=a(n)>2?n.toFixed(2):n+"",o="."+o.split(".")[1]),(t+":"+s+":"+r).replace(/\b\d\b/g,"0$&")+o},i=t=>{if(!t||0>=t)return"PT0S";let i="P",s=t;return Object.entries(e).forEach(e=>{let[t,r]=e,n=Math.floor(s/r);s%=r,a(s)>2&&(s=+(+s).toFixed(2)),"S"===t&&s>0&&(n+=s),n&&((i.indexOf("D")>0||["H","M","S"].includes(t))&&-1===i.indexOf("T")&&(i+="T"),i+=`${n}${t}`)}),i},s=l((e,t)=>{if("number"!=typeof e&&"boolean"!=typeof e||(e+=""),"string"==typeof t&&(t=RegExp(t)),!e)return 0;if(!e.match(t))return/^\d+(?:\.\d+)?$/.test(e)?+e:0;const i=e.split(":");return 3600*+i[0]+60*+i[1]+ +i[2]},(e,t)=>`${"string"==typeof e?e:(e??"")+""}:${"string"==typeof t?t:t?.toString()??""}`),r=l((e,t)=>{if("string"==typeof t&&(t=RegExp(t)),!e||!e?.match?.(t))return 0;const[,i,s,r,n,o,a,c]=RegExp(t).exec?.(e)??[];let result=0;return result+=+c||0,result+=60*+a||0,result+=3600*+o||0,result+=86400*+n||0,result+=604800*+r||0,result+=2592e3*+s||0,result+=31536e3*+i||0,result},(e,t)=>`${e??""}:${"string"==typeof t?t:t?.toString()??""}`),n=l((e,t)=>("string"==typeof t&&(t=RegExp(t)),!(!e||!e?.match?.(t))));function o(e){const result={};return function e(t,i){if(Object(t)!==t)result[i]=t;else if(Array.isArray(t))t.forEach((t,s)=>{e(t,`${i}[${s}]`)}),0===t.length&&(result[i]=[]);else{const s=Object.keys(t).filter(e=>({}.hasOwnProperty.call(t,e))),r=0===s.length;s.forEach(s=>{e(t[s],i?`${i}.${s}`:s)}),r&&i&&(result[i]={})}}(e,""),result}function a(e){if(Math.floor(e)===e||0>(e+"")?.indexOf?.("."))return 0;const t=(""+e).split(".")?.[1];return t?.length??0}function c(e,t){return"string"==typeof e&&RegExp(t).test(e)}function l(e,t){const i=new Map;return function(){for(var s=arguments.length,r=Array(s),n=0;s>n;n++)r[n]=arguments[n];const o=t?t(...r):JSON.stringify(r);return i.has(o)?i.get(o):(()=>{const result=e(...r);return i.set(o,result),result})()}}var u=Object.defineProperty,h=(e,t,i)=>((e,t,i)=>t in e?u(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class d{constructor(e){h(this,"jsonString",!1),h(this,"_cmi_element"),h(this,"_initialized",!1),this._cmi_element=e}get initialized(){return this._initialized}initialize(){this._initialized=!0}}class m extends d{constructor(){super(...arguments),h(this,"_start_time")}get start_time(){return this._start_time}setStartTime(){if(void 0!==this._start_time)throw Error("Start time has already been set.");this._start_time=(new Date).getTime()}}var p=Object.defineProperty,_=(e,t,i)=>((e,t,i)=>t in e?p(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class g extends Error{constructor(e,t){super(`${e} : ${""+t}`),_(this,"_errorCode"),this._errorCode=t,Object.setPrototypeOf(this,g.prototype)}get errorCode(){return this._errorCode}}class v extends g{constructor(e,t,i,s){super(e,t),_(this,"_errorMessage"),_(this,"_detailedMessage",""),this.message=`${e} : ${i}`,this._errorMessage=i,s&&(this._detailedMessage=s),Object.setPrototypeOf(this,v.prototype)}get errorMessage(){return this._errorMessage}get detailedMessage(){return this._detailedMessage}}const f="true",S="false",b="raw,min,max",y="id,score,status",C={0:{basicMessage:"No Error",detailMessage:"No error occurred, the previous API call was successful."},101:{basicMessage:"General Exception",detailMessage:"No specific error code exists to describe the error."},201:{basicMessage:"Invalid argument error",detailMessage:"Indicates that an argument represents an invalid data model element or is otherwise incorrect."},202:{basicMessage:"Element cannot have children",detailMessage:'Indicates that LMSGetValue was called with a data model element name that ends in "_children" for a data model element that does not support the "_children" suffix.'},203:{basicMessage:"Element not an array - cannot have count",detailMessage:'Indicates that LMSGetValue was called with a data model element name that ends in "_count" for a data model element that does not support the "_count" suffix.'},301:{basicMessage:"Not initialized",detailMessage:"Indicates that an API call was made before the call to lmsInitialize."},401:{basicMessage:"Not implemented error",detailMessage:"The data model element indicated in a call to LMSGetValue or LMSSetValue is valid, but was not implemented by this LMS. SCORM 1.2 defines a set of data model elements as being optional for an LMS to implement."},402:{basicMessage:"Invalid set value, element is a keyword",detailMessage:'Indicates that LMSSetValue was called on a data model element that represents a keyword (elements that end in "_children" and "_count").'},403:{basicMessage:"Element is read only",detailMessage:"LMSSetValue was called with a data model element that can only be read."},404:{basicMessage:"Element is write only",detailMessage:"LMSGetValue was called on a data model element that can only be written to."},405:{basicMessage:"Incorrect Data Type",detailMessage:"LMSSetValue was called with a value that is not consistent with the data format of the supplied data model element."},407:{basicMessage:"Element Value Out Of Range",detailMessage:"The numeric value supplied to a LMSSetValue call is outside of the numeric range allowed for the supplied data model element."},408:{basicMessage:"Data Model Dependency Not Established",detailMessage:"Some data model elements cannot be set until another data model element was set. This error condition indicates that the prerequisite element was not set before the dependent element."}},A={cmi_children:"_version,comments_from_learner,comments_from_lms,completion_status,completion_threshold,credit,entry,exit,interactions,launch_data,learner_id,learner_name,learner_preference,location,max_time_allowed,mode,objectives,progress_measure,scaled_passing_score,score,session_time,success_status,suspend_data,time_limit_action,total_time",comments_children:"comment,timestamp,location",score_children:"max,raw,scaled,min",objectives_children:"progress_measure,completion_status,success_status,description,score,id",correct_responses_children:"pattern",student_preference_children:"audio_level,audio_captioning,delivery_speed,language",interactions_children:"id,type,objectives,timestamp,correct_responses,weighting,learner_response,result,latency,description",adl_data_children:"id,store",error_descriptions:{0:{basicMessage:"No Error",detailMessage:"No error occurred, the previous API call was successful."},101:{basicMessage:"General Exception",detailMessage:"No specific error code exists to describe the error."},102:{basicMessage:"General Initialization Failure",detailMessage:"Call to Initialize failed for an unknown reason."},103:{basicMessage:"Already Initialized",detailMessage:"Call to Initialize failed because Initialize was already called."},104:{basicMessage:"Content Instance Terminated",detailMessage:"Call to Initialize failed because Terminate was already called."},111:{basicMessage:"General Termination Failure",detailMessage:"Call to Terminate failed for an unknown reason."},112:{basicMessage:"Termination Before Initialization",detailMessage:"Call to Terminate failed because it was made before the call to Initialize."},113:{basicMessage:"Termination After Termination",detailMessage:"Call to Terminate failed because Terminate was already called."},122:{basicMessage:"Retrieve Data Before Initialization",detailMessage:"Call to GetValue failed because it was made before the call to Initialize."},123:{basicMessage:"Retrieve Data After Termination",detailMessage:"Call to GetValue failed because it was made after the call to Terminate."},132:{basicMessage:"Store Data Before Initialization",detailMessage:"Call to SetValue failed because it was made before the call to Initialize."},133:{basicMessage:"Store Data After Termination",detailMessage:"Call to SetValue failed because it was made after the call to Terminate."},142:{basicMessage:"Commit Before Initialization",detailMessage:"Call to Commit failed because it was made before the call to Initialize."},143:{basicMessage:"Commit After Termination",detailMessage:"Call to Commit failed because it was made after the call to Terminate."},201:{basicMessage:"General Argument Error",detailMessage:"An invalid argument was passed to an API method (usually indicates that Initialize, Commit or Terminate did not receive the expected empty string argument."},301:{basicMessage:"General Get Failure",detailMessage:"Indicates a failed GetValue call where no other specific error code is applicable. Use GetDiagnostic for more information."},351:{basicMessage:"General Set Failure",detailMessage:"Indicates a failed SetValue call where no other specific error code is applicable. Use GetDiagnostic for more information."},391:{basicMessage:"General Commit Failure",detailMessage:"Indicates a failed Commit call where no other specific error code is applicable. Use GetDiagnostic for more information."},401:{basicMessage:"Undefined Data Model Element",detailMessage:"The data model element name passed to GetValue or SetValue is not a valid SCORM data model element."},402:{basicMessage:"Unimplemented Data Model Element",detailMessage:"The data model element indicated in a call to GetValue or SetValue is valid, but was not implemented by this LMS. In SCORM 2004, this error would indicate an LMS that is not fully SCORM conformant."},403:{basicMessage:"Data Model Element Value Not Initialized",detailMessage:"Attempt to read a data model element that has not been initialized by the LMS or through a SetValue call. This error condition is often reached during normal execution of a SCO."},404:{basicMessage:"Data Model Element Is Read Only",detailMessage:"SetValue was called with a data model element that can only be read."},405:{basicMessage:"Data Model Element Is Write Only",detailMessage:"GetValue was called on a data model element that can only be written to."},406:{basicMessage:"Data Model Element Type Mismatch",detailMessage:"SetValue was called with a value that is not consistent with the data format of the supplied data model element."},407:{basicMessage:"Data Model Element Value Out Of Range",detailMessage:"The numeric value supplied to a SetValue call is outside of the numeric range allowed for the supplied data model element."},408:{basicMessage:"Data Model Dependency Not Established",detailMessage:"Some data model elements cannot be set until another data model element was set. This error condition indicates that the prerequisite element was not set before the dependent element."}}},E=C;class w extends v{constructor(e,t){!{}.hasOwnProperty.call(E,t+"")?super(e,101,E[101]?.basicMessage,E[101]?.detailMessage):super(e,t,E[t+""]?.basicMessage||"Unknown error",E[t+""]?.detailMessage),Object.setPrototypeOf(this,w.prototype)}}const M=A.error_descriptions;class O extends v{constructor(e,t){!{}.hasOwnProperty.call(M,t+"")?super(e,101,M[101]?.basicMessage,M[101]?.detailMessage):super(e,t,M[t+""]?.basicMessage||"Unknown error",M[t+""]?.detailMessage),Object.setPrototypeOf(this,O.prototype)}}const R={GENERAL:101,INITIALIZATION_FAILED:101,INITIALIZED:101,TERMINATED:101,TERMINATION_FAILURE:101,TERMINATION_BEFORE_INIT:101,MULTIPLE_TERMINATION:101,RETRIEVE_BEFORE_INIT:101,RETRIEVE_AFTER_TERM:101,STORE_BEFORE_INIT:101,STORE_AFTER_TERM:101,COMMIT_BEFORE_INIT:101,COMMIT_AFTER_TERM:101,ARGUMENT_ERROR:101,CHILDREN_ERROR:101,COUNT_ERROR:101,GENERAL_GET_FAILURE:101,GENERAL_SET_FAILURE:101,GENERAL_COMMIT_FAILURE:101,UNDEFINED_DATA_MODEL:101,UNIMPLEMENTED_ELEMENT:101,VALUE_NOT_INITIALIZED:101,INVALID_SET_VALUE:101,READ_ONLY_ELEMENT:101,WRITE_ONLY_ELEMENT:101,TYPE_MISMATCH:101,VALUE_OUT_OF_RANGE:101,DEPENDENCY_NOT_ESTABLISHED:101},T={...R,RETRIEVE_BEFORE_INIT:301,STORE_BEFORE_INIT:301,COMMIT_BEFORE_INIT:301,ARGUMENT_ERROR:201,CHILDREN_ERROR:202,COUNT_ERROR:203,UNDEFINED_DATA_MODEL:401,UNIMPLEMENTED_ELEMENT:401,VALUE_NOT_INITIALIZED:301,INVALID_SET_VALUE:402,READ_ONLY_ELEMENT:403,WRITE_ONLY_ELEMENT:404,TYPE_MISMATCH:405,VALUE_OUT_OF_RANGE:407,DEPENDENCY_NOT_ESTABLISHED:408},j={...R,INITIALIZATION_FAILED:102,INITIALIZED:103,TERMINATED:104,TERMINATION_FAILURE:111,TERMINATION_BEFORE_INIT:112,MULTIPLE_TERMINATION:113,MULTIPLE_TERMINATIONS:113,RETRIEVE_BEFORE_INIT:122,RETRIEVE_AFTER_TERM:123,STORE_BEFORE_INIT:132,STORE_AFTER_TERM:133,COMMIT_BEFORE_INIT:142,COMMIT_AFTER_TERM:143,ARGUMENT_ERROR:201,GENERAL_GET_FAILURE:301,GENERAL_SET_FAILURE:351,GENERAL_COMMIT_FAILURE:391,UNDEFINED_DATA_MODEL:401,UNIMPLEMENTED_ELEMENT:402,VALUE_NOT_INITIALIZED:403,READ_ONLY_ELEMENT:404,WRITE_ONLY_ELEMENT:405,TYPE_MISMATCH:406,VALUE_OUT_OF_RANGE:407,DEPENDENCY_NOT_ESTABLISHED:408};var I=Object.defineProperty,N=(e,t,i)=>((e,t,i)=>t in e?I(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class x extends d{constructor(e){super(e.CMIElement),N(this,"_errorCode"),N(this,"_errorClass"),N(this,"__children"),N(this,"childArray"),this.__children=e.children,this._errorCode=e.errorCode??T.GENERAL,this._errorClass=e.errorClass||g,this.childArray=[]}reset(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this._initialized=!1,e)this.childArray=[];else for(let e=0;this.childArray.length>e;e++)this.childArray[e]?.reset()}get _children(){return this.__children}set _children(_children){throw new this._errorClass(this._cmi_element+"._children",this._errorCode)}get _count(){return this.childArray.length}set _count(_count){throw new this._errorClass(this._cmi_element+"._count",this._errorCode)}toJSON(){this.jsonString=!0;const result={};for(let e=0;this.childArray.length>e;e++)result[e+""]=this.childArray[e];return this.jsonString=!1,result}}const q="unknown",D="true",L="false",P="passed",z="failed",F="unknown",k="completed",V="incomplete",H="unknown",B={_:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,NONE:5},U={autocommit:!1,autocommitSeconds:10,throttleCommits:!1,useAsynchronousCommits:!1,sendFullCommit:!0,lmsCommitUrl:!1,dataCommitFormat:"json",commitRequestDataType:"application/json;charset=UTF-8",autoProgress:!1,logLevel:B.ERROR,selfReportSessionTime:!1,alwaysSendTotalTime:!1,renderCommonCommitFields:!1,autoCompleteLessonStatus:!1,strict_errors:!0,xhrHeaders:{},xhrWithCredentials:!1,fetchMode:"cors",asyncModeBeaconBehavior:"never",responseHandler:async function(e){if(void 0!==e){let t=null;try{if("function"==typeof e.json)t=await e.json();else if("function"==typeof e.text){const i=await e.text();i&&(t=JSON.parse(i))}}catch(e){}return null!==t&&{}.hasOwnProperty.call(t,"result")?{result:t.result,errorCode:"number"==typeof t.errorCode?t.errorCode:!0===t.result||t.result===f?0:101}:200===e.status?{result:f,errorCode:0}:{result:S,errorCode:101}}return{result:S,errorCode:101}},xhrResponseHandler:function(e){if(void 0!==e){let t=null;if(200>e.status||e.status>299)return{result:S,errorCode:101};try{t=JSON.parse(e.responseText)}catch(e){}return null!==t&&{}.hasOwnProperty.call(t,"result")?{result:t.result,errorCode:"number"==typeof t.errorCode?t.errorCode:!0===t.result||t.result===f?0:101}:{result:f,errorCode:0}}return{result:S,errorCode:101}},requestHandler:function(e){return e},onLogMessage:$,mastery_override:!1,score_overrides_status:!1,completion_status_on_failed:"completed",scoItemIds:[],scoItemIdValidator:!1,globalObjectiveIds:[],enableOfflineSupport:!1,courseId:"",syncOnInitialize:!0,syncOnTerminate:!0,maxSyncAttempts:5,scoId:"",autoPopulateCommitMetadata:!1,httpService:null,globalStudentPreferences:!1};function $(e,t){switch(e){case"4":case 4:case"ERROR":case B.ERROR:console.error(t);break;case"3":case 3:case"WARN":case B.WARN:console.warn(t);break;case"2":case 2:case"INFO":case B.INFO:console.info(t);break;case"1":case 1:case"DEBUG":case B.DEBUG:console.debug?console.debug(t):console.log(t)}}const G="^[\\s\\S]{0,255}$",Y="^([0-9]+):([0-9]{2}):([0-9]{2})(\\.\\d{1,2})?$",W="^-?([0-9]+)$",J="^-?([0-9]{0,10})(\\.[0-9]*)?$",K="^[\\u0021-\\u007E\\s]{0,255}$",X="^.*$",Q="^(passed|completed|failed|incomplete|browsed|not attempted)$",Z="0#100",ee="^[\\u0000-\\uFFFF]{0,4000}$",te="^[\\u0000-\\uFFFF]{0,64000}$",ie="^({lang=([a-zA-Z]{1,8}|i|x)(-[a-zA-Z0-9-]{2,8})?})?((?!{.*$).{0,250}$)?$",se="^({lang=([a-zA-Z]{1,8}|i|x)(-[a-zA-Z0-9-]{2,8})?})?((?!{.*$).{0,4000}$)?$",re="^(19[7-9][0-9]|[2-9][0-9]{3})((-(0[1-9]|1[0-2]))((-(0[1-9]|[1-2][0-9]|3[0-1]))(T([0-1][0-9]|2[0-3])((:[0-5][0-9])((:[0-5][0-9])((\\.[0-9]{1,6})((Z|([+|-]([0-1][0-9]|2[0-3])))(:[0-5][0-9])?)?)?)?)?)?)?)?$",ne="^P(?:([.,\\d]+)Y)?(?:([.,\\d]+)M)?(?:([.,\\d]+)W)?(?:([.,\\d]+)D)?(?:T?(?:([.,\\d]+)H)?(?:([.,\\d]+)M)?(?:(\\d+(?:\\.\\d{1,2})?)S)?)?$",oe="^-?([0-9]{1,10})(\\.[0-9]{1,18})?$",ae="^(?=.*\\w)[\\w\\-\\(\\)\\+\\.\\:\\=\\@\\;\\$\\_\\!\\*\\'\\%\\/\\#]{1,250}$",ce="^(?:(?!urn:)\\S{1,4000}|urn:[A-Za-z0-9-]{1,31}:\\S{1,4000}|.{1,4000})$",le="^(completed|incomplete|not attempted|unknown)$",ue="^(passed|failed|unknown)$",he="^(_?(start|resumeAll|previous|continue|exit|exitAll|abandon|abandonAll|suspendAll|retry|retryAll)|_none_|(\\{target=(?<choice_target>\\S{0,}[a-zA-Z0-9-_]+)})?choice|(\\{target=(?<jump_target>\\S{0,}[a-zA-Z0-9-_]+)})?jump)$",de="^(unknown|true|false)$",me="^{target=\\S{0,}[a-zA-Z0-9-_]+}$",pe={"true-false":{format:"^true$|^false$",max:1,delimiter:"",unique:!1},choice:{format:ce,max:36,delimiter:"[,]",unique:!0},"fill-in":{format:ie,max:10,delimiter:"[,]",unique:!1},"long-fill-in":{format:se,max:1,delimiter:"",unique:!1},matching:{format:ae,format2:ae,max:36,delimiter:"[,]",delimiter2:"[.]",unique:!1},performance:{format:"^$|"+ae,format2:oe+"|^$|"+ae,max:250,delimiter:"[,]",delimiter2:"[.]",unique:!1},sequencing:{format:ae,max:36,delimiter:"[,]",unique:!1},likert:{format:ae,max:1,delimiter:"",unique:!1},numeric:{format:oe,max:1,delimiter:"",unique:!1},other:{format:ee,max:1,delimiter:"",unique:!1}},_e={"true-false":{max:1,delimiter:"",unique:!1,duplicate:!1,format:"^true$|^false$",limit:1},choice:{max:36,delimiter:"[,]",unique:!0,duplicate:!1,format:ce},"fill-in":{max:10,delimiter:"[,]",unique:!1,duplicate:!1,format:"^(({lang=([a-zA-Z]{1,8}|i|x)?(-[a-zA-Z0-9-]{2,8})?})?(.{0,250})?)?$"},"long-fill-in":{max:1,delimiter:"",unique:!1,duplicate:!0,format:se},matching:{max:36,delimiter:"[,]",delimiter2:"[.]",unique:!1,duplicate:!1,format:ae,format2:ae},performance:{max:250,delimiter:"[,]",delimiter2:"[.]",unique:!1,duplicate:!1,format:ae,format2:`^(${ae})$|^(?:\\d+(?:\\.\\d+)?(?::\\d+(?:\\.\\d+)?)?)$`},sequencing:{max:36,delimiter:"[,]",unique:!1,duplicate:!1,format:ae},likert:{max:1,delimiter:"",unique:!1,duplicate:!1,format:ae,limit:1},numeric:{max:2,delimiter:"[:]",unique:!1,duplicate:!1,format:oe,limit:1},other:{max:1,delimiter:"",unique:!1,duplicate:!1,format:ee,limit:1}},ge=["aa","ab","ae","af","ak","am","an","ar","as","av","ay","az","ba","be","bg","bh","bi","bm","bn","bo","br","bs","ca","ce","ch","co","cr","cs","cu","cv","cy","da","de","dv","dz","ee","el","en","eo","es","et","eu","fa","ff","fi","fj","fo","fr","fy","ga","gd","gl","gn","gu","gv","ha","he","hi","ho","hr","ht","hu","hy","hz","ia","id","ie","ig","ii","ik","io","is","it","iu","ja","jv","ka","kg","ki","kj","kk","kl","km","kn","ko","kr","ks","ku","kv","kw","ky","la","lb","lg","li","ln","lo","lt","lu","lv","mg","mh","mi","mk","ml","mn","mo","mr","ms","mt","my","na","nb","nd","ne","ng","nl","nn","no","nr","nv","ny","oc","oj","om","or","os","pa","pi","pl","ps","pt","qu","rm","rn","ro","ru","rw","sa","sc","sd","se","sg","sh","si","sk","sl","sm","sn","so","sq","sr","ss","st","su","sv","sw","ta","te","tg","th","ti","tk","tl","tn","to","tr","ts","tt","tw","ty","ug","uk","ur","uz","ve","vi","vo","wa","wo","xh","yi","yo","za","zh","zu","aar","abk","ave","afr","aka","amh","arg","ara","asm","ava","aym","aze","bak","bel","bul","bih","bis","bam","ben","tib","bod","bre","bos","cat","che","cha","cos","cre","cze","ces","chu","chv","wel","cym","dan","ger","deu","div","dzo","ewe","gre","ell","eng","epo","spa","est","baq","eus","per","fas","ful","fin","fij","fao","fre","fra","fry","gle","gla","glg","grn","guj","glv","hau","heb","hin","hmo","hrv","hat","hun","arm","hye","her","ina","ind","ile","ibo","iii","ipk","ido","ice","isl","ita","iku","jpn","jav","geo","kat","kon","kik","kua","kaz","kal","khm","kan","kor","kau","kas","kur","kom","cor","kir","lat","ltz","lug","lim","lin","lao","lit","lub","lav","mlg","mah","mao","mri","mac","mkd","mal","mon","mol","mar","may","msa","mlt","bur","mya","nau","nob","nde","nep","ndo","dut","nld","nno","nor","nbl","nav","nya","oci","oji","orm","ori","oss","pan","pli","pol","pus","por","que","roh","run","rum","ron","rus","kin","san","srd","snd","sme","sag","slo","sin","slk","slv","smo","sna","som","alb","sqi","srp","ssw","sot","sun","swe","swa","tam","tel","tgk","tha","tir","tuk","tgl","tsn","ton","tur","tso","tat","twi","tah","uig","ukr","urd","uzb","ven","vie","vol","wln","wol","xho","yid","yor","zha","chi","zho","zul"];var ve=Object.defineProperty,fe=(e,t,i)=>((e,t,i)=>t in e?ve(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Se{constructor(e,t,i){fe(this,"_API"),fe(this,"_cancelled",!1),fe(this,"_timeout"),fe(this,"_callback"),this._API=e,this._timeout=setTimeout(this.wrapper.bind(this),t),this._callback=i}cancel(){this._cancelled=!0,this._timeout&&clearTimeout(this._timeout)}wrapper(){this._cancelled||this._API.isInitialized()&&(async()=>{await this._API.commit(this._callback)})()}}const be=["continue","previous","exit","exitAll","abandon","abandonAll","suspendAll"];var ye=Object.defineProperty,Ce=(e,t,i)=>((e,t,i)=>t in e?ye(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i),Ae=(e=>(e.NOT="not",e.AND="and",e.OR="or",e))(Ae||{}),Ee=(e=>(e.SKIP="skip",e.DISABLED="disabled",e.HIDE_FROM_CHOICE="hiddenFromChoice",e.STOP_FORWARD_TRAVERSAL="stopForwardTraversal",e.EXIT_PARENT="exitParent",e.EXIT_ALL="exitAll",e.RETRY="retry",e.RETRY_ALL="retryAll",e.CONTINUE="continue",e.PREVIOUS="previous",e.EXIT="exit",e))(Ee||{});const we=class e extends d{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"always",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new Map;super("ruleCondition"),Ce(this,"_condition","always"),Ce(this,"_operator",null),Ce(this,"_parameters",new Map),Ce(this,"_referencedObjective",null),this._condition=e,this._operator=t,this._parameters=i}static setNowProvider(t){"function"==typeof t&&(e._now=t)}static setElapsedSecondsHook(t){e._getElapsedSecondsHook=t}reset(){this._initialized=!1,this._condition="always",this._operator=null,this._parameters=new Map}get condition(){return this._condition}set condition(e){this._condition=e}get operator(){return this._operator}set operator(e){this._operator=e}get parameters(){return this._parameters}set parameters(e){this._parameters=e}get referencedObjective(){return this._referencedObjective}set referencedObjective(e){this._referencedObjective=e}resolveReferencedObjective(e){return this._referencedObjective?e.primaryObjective?.id===this._referencedObjective?e.primaryObjective:(e.objectives||[]).find(e=>e.id===this._referencedObjective)||null:null}evaluate(e){let result;const t=this.resolveReferencedObjective(e);switch(this._condition){case"satisfied":case"objectiveSatisfied":result=t?!0===t.satisfiedStatus:e.successStatus===P||!0===e.objectiveSatisfiedStatus;break;case"objectiveStatusKnown":case"objectiveMeasureKnown":result=t?!!t.measureStatus:!!e.objectiveMeasureStatus;break;case"objectiveMeasureGreaterThan":{const i=this._parameters.get("threshold")||0;result=!!(t?t.measureStatus:e.objectiveMeasureStatus)&&(t?t.normalizedMeasure:e.objectiveNormalizedMeasure)>i;break}case"objectiveMeasureLessThan":{const i=this._parameters.get("threshold")||0;result=!!(t?t.measureStatus:e.objectiveMeasureStatus)&&i>(t?t.normalizedMeasure:e.objectiveNormalizedMeasure);break}case"completed":case"activityCompleted":result=t?t.completionStatus===k:e.isCompleted;break;case"progressKnown":case"activityProgressKnown":result=t?t.completionStatus!==H:"unknown"!==e.completionStatus;break;case"attempted":result=e.attemptCount>0;break;case"attemptLimitExceeded":result=e.hasAttemptLimitExceeded();break;case"timeLimitExceeded":result=this.evaluateTimeLimitExceeded(e);break;case"outsideAvailableTimeRange":result=this.evaluateOutsideAvailableTimeRange(e);break;case"always":result=!0;break;default:result=!1}return"not"===this._operator&&(result=!result),result}evaluateTimeLimitExceeded(t){let i=t.timeLimitDuration;if(!i&&t.attemptAbsoluteDurationLimit&&(i=t.attemptAbsoluteDurationLimit),!i)return!1;const s=r(i,ne);if(0>=s)return!1;let n=0;if(e._getElapsedSecondsHook)try{const i=e._getElapsedSecondsHook(t);"number"!=typeof i||Number.isNaN(i)||0>i||(n=i)}catch{n=0}if(0===n&&t.attemptExperiencedDuration){const e=r(t.attemptExperiencedDuration,ne);e>0&&(n=e)}if(0===n&&t.attemptAbsoluteStartTime)try{const i=new Date(t.attemptAbsoluteStartTime).getTime(),s=e._now().getTime();Number.isNaN(i)||Number.isNaN(s)||i>s||(n=(s-i)/1e3)}catch{n=0}return n>s}evaluateOutsideAvailableTimeRange(t){const i=t.beginTimeLimit,s=t.endTimeLimit;if(!i&&!s)return!1;const r=e._now();return!(!i||r>=new Date(i))||!(!s||new Date(s)>=r)}parseISO8601Duration(e){return 1e3*r(e,ne)}toJSON(){this.jsonString=!0;const result={condition:this._condition,operator:this._operator,parameters:Object.fromEntries(this._parameters)};return this.jsonString=!1,result}};Ce(we,"_now",()=>new Date),Ce(we,"_getElapsedSecondsHook");let Me=we;class Oe extends d{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"skip",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"and";super("sequencingRule"),Ce(this,"_conditions",[]),Ce(this,"_action","skip"),Ce(this,"_conditionCombination","and"),this._action=e,this._conditionCombination=t}reset(){this._initialized=!1,this._conditions=[],this._action="skip",this._conditionCombination="and"}get conditions(){return this._conditions}addCondition(e){if(!(e instanceof Me))throw new O(this._cmi_element+".conditions",j.TYPE_MISMATCH);this._conditions.includes(e)||this._conditions.push(e)}removeCondition(e){if(!(e instanceof Me))throw new O(this._cmi_element+".conditions",j.TYPE_MISMATCH);const t=this._conditions.indexOf(e);return-1!==t&&(this._conditions.splice(t,1),!0)}get action(){return this._action}set action(e){this._action=e}get conditionCombination(){return this._conditionCombination}set conditionCombination(e){this._conditionCombination=e}evaluate(e){return 0===this._conditions.length||("all"===this._conditionCombination||"and"===this._conditionCombination?this._conditions.every(t=>t.evaluate(e)):("any"===this._conditionCombination||"or"===this._conditionCombination)&&this._conditions.some(t=>t.evaluate(e)))}toJSON(){this.jsonString=!0;const result={conditions:this._conditions,action:this._action,conditionCombination:this._conditionCombination};return this.jsonString=!1,result}}class Re extends d{constructor(){super("sequencingRules"),Ce(this,"_preConditionRules",[]),Ce(this,"_exitConditionRules",[]),Ce(this,"_postConditionRules",[])}reset(){this._initialized=!1,this._preConditionRules=[],this._exitConditionRules=[],this._postConditionRules=[]}get preConditionRules(){return this._preConditionRules}addPreConditionRule(e){if(!(e instanceof Oe))throw new O(this._cmi_element+".preConditionRules",j.TYPE_MISMATCH);this._preConditionRules.push(e)}get exitConditionRules(){return this._exitConditionRules}addExitConditionRule(e){if(!(e instanceof Oe))throw new O(this._cmi_element+".exitConditionRules",j.TYPE_MISMATCH);this._exitConditionRules.push(e)}get postConditionRules(){return this._postConditionRules}addPostConditionRule(e){if(!(e instanceof Oe))throw new O(this._cmi_element+".postConditionRules",j.TYPE_MISMATCH);this._postConditionRules.push(e)}evaluatePreConditionRules(e){for(const t of this._preConditionRules)if(t.evaluate(e))return t.action;return null}evaluateExitConditionRules(e){for(const t of this._exitConditionRules)if(t.evaluate(e))return t.action;return null}evaluatePostConditionRules(e){for(const t of this._postConditionRules)if(t.evaluate(e))return t.action;return null}toJSON(){this.jsonString=!0;const result={preConditionRules:this._preConditionRules,exitConditionRules:this._exitConditionRules,postConditionRules:this._postConditionRules};return this.jsonString=!1,result}}class Te{constructor(e){this.activityTree=e}isInTree(e){return this.activityTree.getAllActivities().includes(e)}isAncestorOf(e,t){let i=t;for(;i;){if(i===e)return!0;i=i.parent}return!1}findCommonAncestor(e,t){if(!e||!t)return null;const i=[];let s=e;for(;s;)i.push(s),s=s.parent;for(s=t;s;){if(i.includes(s))return s;s=s.parent}return null}findChildInPath(e,t){let i=t;for(;i&&i.parent;){if(i.parent===e)return i;i=i.parent}return null}isLastInTree(e){if(e.children.length>0)return!1;let t=e;for(;t;){if(this.activityTree.getNextSibling(t))return!1;t=t.parent}return!0}getCurrentInParent(e){if(e.children)for(const t of e.children)if(t.isActive)return t;return null}isMandatory(e){if(e.sequencingRules&&e.sequencingRules.preConditionRules)for(const t of e.sequencingRules.preConditionRules)if("skip"===t.action&&t.conditions&&0===t.conditions.length)return!1;return!0===e.mandatory}isCompleted(e){return"completed"===e.completionStatus||"passed"===e.completionStatus||"passed"===e.successStatus}isAvailableForChoice(e){return e.isVisible&&!e.isHiddenFromChoice&&e.isAvailable&&(!e.sequencingControls||e.sequencingControls.choice)}getAncestors(e){const t=[];let i=e.parent;for(;i;)t.push(i),i=i.parent;return t}getPathToRoot(e){const t=[e];let i=e.parent;for(;i;)t.push(i),i=i.parent;return t}isLeaf(e){return 0===e.children.length}isCluster(e){return e.children.length>0}getDepth(e){let t=0,i=e.parent;for(;i;)t++,i=i.parent;return t}}class je{constructor(e,t){this.activityTree=e,this.treeQueries=t}validateChoice(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!this.treeQueries.isInTree(t))return{valid:!1,exception:"SB.2.9-2"};if(t===this.activityTree.root)return{valid:!1,exception:"SB.2.9-3"};const s=this.validatePathToRoot(t);if(!s.valid)return s;if(i.checkAvailability&&!t.isAvailable)return{valid:!1,exception:"SB.2.9-7"};if(!e)return{valid:!0,exception:null};const r=this.validateChoiceExit(e,t);if(!r.valid)return r;const n=this.validateAncestorConstraints(e,t);return n.valid?{valid:!0,exception:null}:n}validatePathToRoot(e){let t=e;for(;t;){if(t.isHiddenFromChoice)return{valid:!1,exception:"SB.2.9-4"};if(t.parent&&!t.parent.sequencingControls.choice)return{valid:!1,exception:"SB.2.9-5"};if(t.parent&&t.parent.sequencingControls.preventActivation&&0===e.attemptCount&&!e.isActive)return{valid:!1,exception:"SB.2.9-6"};t=t.parent}return{valid:!0,exception:null}}validateChoiceExit(e,t){let i=e.parent;for(;i;){if(i.isActive&&!i.sequencingControls.choiceExit){if(!this.treeQueries.isAncestorOf(i,t))return{valid:!1,exception:"SB.2.9-8"};break}i=i.parent}return{valid:!0,exception:null}}validateAncestorConstraints(e,t){let i=t.parent;for(;i;){const s=this.validateConstraintsAtLevel(i,e,t);if(!s.valid)return s;i=i.parent}return{valid:!0,exception:null}}validateConstraintsAtLevel(e,t,i){const s=this.treeQueries.findChildInPath(e,i),r=this.treeQueries.findChildInPath(e,t);if(!s||!r)return{valid:!0,exception:null};const n=e.children,o=n.indexOf(s),a=n.indexOf(r);if(-1===o||-1===a)return{valid:!0,exception:null};if(e.sequencingControls.forwardOnly&&a>o)return{valid:!1,exception:"SB.2.9-5"};if(o>a)for(let e=a+1;o>e;e++){const t=n[e];if(t&&this.treeQueries.isMandatory(t)&&!this.treeQueries.isCompleted(t))return{valid:!1,exception:"SB.2.9-6"}}if(e.sequencingControls.constrainChoice){if(o>a+1)return{valid:!1,exception:"SB.2.9-7"};if(a>o&&"completed"!==i.completionStatus&&"passed"!==i.completionStatus)return{valid:!1,exception:"SB.2.9-7"}}return e.sequencingControls.preventActivation&&0===i.attemptCount&&!i.isActive?{valid:!1,exception:"SB.2.9-6"}:{valid:!0,exception:null}}checkForwardOnlyViolation(e){let t=e.parent;for(;t;){if(t.sequencingControls.forwardOnly)return{valid:!1,exception:"SB.2.9-5"};t=t.parent}return{valid:!0,exception:null}}isAvailableForChoice(e){return this.treeQueries.isAvailableForChoice(e)}validateFlowConstraints(e,t){const i=[];for(const s of t)this.meetsFlowConstraints(s,e)&&i.push(s);return{valid:i.length>0,validChildren:i}}meetsFlowConstraints(e,t){return!(!e.isAvailable||e.isHiddenFromChoice)&&(!t.sequencingControls.constrainChoice||this.validateConstrainChoiceForFlow(e,t))}validateConstrainChoiceForFlow(e,t){if(!t.sequencingControls||!t.sequencingControls.constrainChoice)return!0;const i=t.children;if(!i||0===i.length)return!0;const s=i.indexOf(e);if(-1===s)return!1;const r=this.treeQueries.getCurrentInParent(t);if(!r)return this.isAvailableForChoice(e);const n=i.indexOf(r);return-1===n||(t.sequencingControls.flow?t.sequencingControls.forwardOnly&&n>s?"completed"===e.completionStatus||"passed"===e.completionStatus:n>s?n>s&&("completed"===e.completionStatus||"passed"===e.completionStatus)&&this.isAvailableForChoice(e):(s===n||s===n+1)&&this.isAvailableForChoice(e):this.isAvailableForChoice(e)&&("completed"===e.completionStatus||"unknown"===e.completionStatus||"incomplete"===e.completionStatus))}validateTraversalConstraints(e){let t=!0,i=!0;return e.parent?.sequencingControls.constrainChoice&&(t=this.evaluateConstrainChoiceForTraversal(e)),e.sequencingControls&&e.sequencingControls.stopForwardTraversal&&(i=!1),e.parent?.sequencingControls.forwardOnly&&(i=this.evaluateForwardOnlyForChoice(e)),{canTraverse:t,canTraverseInto:i}}evaluateConstrainChoiceForTraversal(e){if(!e.parent)return!0;let t=e.parent;for(;t;){if(t.sequencingControls&&t.sequencingControls.constrainChoice){const i=t.children,s=this.treeQueries.findChildInPath(t,e);if(s){const r=i.indexOf(s),n=this.treeQueries.getCurrentInParent(t);if(n){const s=i.indexOf(n);if(-1!==s&&-1!==r){if(r>s)for(let e=s+1;r>e;e++){const t=i[e];if(t&&this.treeQueries.isMandatory(t)&&!this.treeQueries.isCompleted(t))return!1}if(t.sequencingControls.forwardOnly&&s>r&&!this.treeQueries.isCompleted(e))return!1}}}}t=t.parent}return this.isAvailableForChoice(e)}evaluateForwardOnlyForChoice(e){if(!e.parent)return!0;const t=e.parent;if(!t.sequencingControls||!t.sequencingControls.forwardOnly)return!0;const i=t.children;if(!i||0===i.length)return!0;const s=i.indexOf(e);if(-1===s)return!1;const r=this.treeQueries.getCurrentInParent(t);if(!r)return this.isAvailableForChoice(e);const n=i.indexOf(r);return-1===n||(n>s?!("completed"!==e.completionStatus&&"passed"!==e.completionStatus||!e.sequencingControls||!e.sequencingControls.choice):this.isAvailableForChoice(e))}hasTimeBoundaryViolation(e,t){if(e.beginTimeLimit)try{if(new Date(e.beginTimeLimit)>t)return!0}catch{}if(e.endTimeLimit)try{if(t>new Date(e.endTimeLimit))return!0}catch{}return!1}hasAttemptLimitViolation(e){return!(!e.attemptLimit||e.attemptLimit>e.attemptCount)}}var Ie=Object.defineProperty,Ne=(e,t,i)=>((e,t,i)=>t in e?Ie(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i),xe=(e=>(e.START="start",e.RESUME_ALL="resumeAll",e.CONTINUE="continue",e.PREVIOUS="previous",e.CHOICE="choice",e.JUMP="jump",e.EXIT="exit",e.EXIT_PARENT="exitParent",e.EXIT_ALL="exitAll",e.ABANDON="abandon",e.ABANDON_ALL="abandonAll",e.SUSPEND_ALL="suspendAll",e.RETRY="retry",e.RETRY_ALL="retryAll",e))(xe||{}),qe=(e=>(e.DELIVER="deliver",e.DO_NOT_DELIVER="doNotDeliver",e))(qe||{});class De{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"doNotDeliver",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];Ne(this,"deliveryRequest"),Ne(this,"targetActivity"),Ne(this,"exception"),Ne(this,"endSequencingSession"),this.deliveryRequest=e,this.targetActivity=t,this.exception=i,this.endSequencingSession=s}}class Le{constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];Ne(this,"identifiedActivity"),Ne(this,"deliverable"),Ne(this,"exception"),Ne(this,"endSequencingSession"),this.identifiedActivity=e,this.deliverable=t,this.exception=i,this.endSequencingSession=s}}class Pe{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;Ne(this,"activity"),Ne(this,"exception"),this.activity=e,this.exception=t}}var ze=(e=>(e.FORWARD="forward",e.BACKWARD="backward",e))(ze||{}),Fe=Object.defineProperty,ke=(e,t,i)=>((e,t,i)=>t in e?Fe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Ve{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};ke(this,"now"),ke(this,"getAttemptElapsedSecondsHook"),this.now=e.now||(()=>new Date),this.getAttemptElapsedSecondsHook=e.getAttemptElapsedSecondsHook||null}checkSequencingRules(e,t){for(const i of t)if(this.checkRuleSubprocess(e,i))return i.action;return null}checkRuleSubprocess(e,t){if(0===t.conditions.length)return!0;const i=t.conditionCombination;return"all"===i||i===Ae.AND?t.conditions.every(t=>t.evaluate(e)):("any"===i||i===Ae.OR)&&t.conditions.some(t=>t.evaluate(e))}evaluateExitRules(e){const t=this.checkSequencingRules(e,e.sequencingRules.exitConditionRules);return t===Ee.EXIT||t===Ee.EXIT_PARENT||t===Ee.EXIT_ALL?t:null}evaluatePostConditionAction(e){const t=this.checkSequencingRules(e,e.sequencingRules.postConditionRules);return t&&[Ee.EXIT_PARENT,Ee.EXIT_ALL,Ee.RETRY,Ee.RETRY_ALL,Ee.CONTINUE,Ee.PREVIOUS,Ee.STOP_FORWARD_TRAVERSAL].includes(t)?t:null}evaluatePostConditions(e){const t=this.evaluatePostConditionAction(e);if(!t)return{sequencingRequest:null,terminationRequest:null};switch(t){case Ee.EXIT_PARENT:return{sequencingRequest:null,terminationRequest:xe.EXIT_PARENT};case Ee.EXIT_ALL:return{sequencingRequest:null,terminationRequest:xe.EXIT_ALL};case Ee.RETRY:return{sequencingRequest:xe.RETRY,terminationRequest:null};case Ee.RETRY_ALL:return{sequencingRequest:xe.RETRY,terminationRequest:xe.EXIT_ALL};case Ee.CONTINUE:return{sequencingRequest:xe.CONTINUE,terminationRequest:null};case Ee.PREVIOUS:return{sequencingRequest:xe.PREVIOUS,terminationRequest:null};case Ee.STOP_FORWARD_TRAVERSAL:return e.sequencingControls.stopForwardTraversal=!0,{sequencingRequest:null,terminationRequest:null};default:return{sequencingRequest:null,terminationRequest:null}}}checkLimitConditions(e){if(null!==e.attemptLimit&&e.attemptCount>=e.attemptLimit)return!0;if(null!==e.attemptAbsoluteDurationLimit){const t=this.parseDuration(e.attemptAbsoluteDurationLimit);if(t>0&&this.parseDuration(e.attemptExperiencedDuration)>=t)return!0}if(null!==e.activityAbsoluteDurationLimit){const t=this.parseDuration(e.activityAbsoluteDurationLimit);if(t>0&&this.parseDuration(e.activityExperiencedDuration)>=t)return!0}return!1}parseDuration(e){if(!e||"string"!=typeof e)return 0;const t=e.match(/^P(?:(\d+(?:\.\d+)?)Y)?(?:(\d+(?:\.\d+)?)M)?(?:(\d+(?:\.\d+)?)W)?(?:(\d+(?:\.\d+)?)D)?(?:T(?:(\d+(?:\.\d+)?)H)?(?:(\d+(?:\.\d+)?)M)?(?:(\d+(?:\.\d+)?)S)?)?$/);if(!t||"P"===e||e.endsWith("T"))return 0;let i=0;return i+=315576e5*parseFloat(t[1]||"0"),i+=30.44*24*parseFloat(t[2]||"0")*36e5,i+=6048e5*parseFloat(t[3]||"0"),i+=864e5*parseFloat(t[4]||"0"),i+=36e5*parseFloat(t[5]||"0"),i+=6e4*parseFloat(t[6]||"0"),i+=1e3*parseFloat(t[7]||"0"),i}getElapsedSeconds(e){if(this.getAttemptElapsedSecondsHook)try{return this.getAttemptElapsedSecondsHook(e)||0}catch{return 0}if(e.attemptAbsoluteStartTime){const t=new Date(e.attemptAbsoluteStartTime).getTime(),i=this.now().getTime();if(!Number.isNaN(t)&&i>t)return Math.max(0,(i-t)/1e3)}return 0}isTimeLimitExceeded(e){let t=e.timeLimitDuration;if(!t&&e.attemptAbsoluteDurationLimit&&(t=e.attemptAbsoluteDurationLimit),!t)return!1;const i=r(t,ne);return i>0&&this.getElapsedSeconds(e)>i}isOutsideAvailableTimeRange(e){const t=this.now();if(e.beginTimeLimit)try{const i=new Date(e.beginTimeLimit);if(!Number.isNaN(i.getTime())&&i>t)return!0}catch{}if(e.endTimeLimit)try{const i=new Date(e.endTimeLimit);if(!Number.isNaN(i.getTime())&&t>i)return!0}catch{}return!1}canDeliverActivity(e){if(this.checkLimitConditions(e))return{canDeliver:!1,wasSkipped:!1};const t=this.checkSequencingRules(e,e.sequencingRules.preConditionRules);return{canDeliver:t!==Ee.SKIP&&t!==Ee.DISABLED,wasSkipped:t===Ee.SKIP}}}var He=Object.defineProperty,Be=(e,t,i)=>((e,t,i)=>t in e?He(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i),Ue=(e=>(e.NEVER="never",e.ONCE="once",e.ON_EACH_NEW_ATTEMPT="onEachNewAttempt",e))(Ue||{}),$e=(e=>(e.NEVER="never",e.ONCE="once",e.ON_EACH_NEW_ATTEMPT="onEachNewAttempt",e))($e||{});class Ge extends d{constructor(){super("sequencingControls"),Be(this,"_enabled",!0),Be(this,"_choice",!0),Be(this,"_choiceExit",!0),Be(this,"_flow",!0),Be(this,"_forwardOnly",!1),Be(this,"_useCurrentAttemptObjectiveInfo",!0),Be(this,"_useCurrentAttemptProgressInfo",!0),Be(this,"_preventActivation",!1),Be(this,"_constrainChoice",!1),Be(this,"_stopForwardTraversal",!1),Be(this,"_rollupObjectiveSatisfied",!0),Be(this,"_rollupProgressCompletion",!0),Be(this,"_objectiveMeasureWeight",1),Be(this,"_selectionTiming","never"),Be(this,"_selectCount",null),Be(this,"_selectionCountStatus",!1),Be(this,"_randomizeChildren",!1),Be(this,"_randomizationTiming","never"),Be(this,"_reorderChildren",!1),Be(this,"_completionSetByContent",!1),Be(this,"_objectiveSetByContent",!1),Be(this,"_tracked",!0)}reset(){this._initialized=!1,this._enabled=!0,this._choice=!0,this._choiceExit=!0,this._flow=!0,this._forwardOnly=!1,this._useCurrentAttemptObjectiveInfo=!0,this._useCurrentAttemptProgressInfo=!0,this._preventActivation=!1,this._constrainChoice=!1,this._stopForwardTraversal=!1,this._rollupObjectiveSatisfied=!0,this._rollupProgressCompletion=!0,this._objectiveMeasureWeight=1,this._selectionTiming="never",this._selectCount=null,this._selectionCountStatus=!1,this._randomizeChildren=!1,this._randomizationTiming="never",this._reorderChildren=!1,this._completionSetByContent=!1,this._objectiveSetByContent=!1,this._tracked=!0}get enabled(){return this._enabled}set enabled(e){this._enabled=e}get choice(){return this._choice}set choice(e){this._choice=e}get choiceExit(){return this._choiceExit}set choiceExit(e){this._choiceExit=e}get flow(){return this._flow}set flow(e){this._flow=e}get forwardOnly(){return this._forwardOnly}set forwardOnly(e){this._forwardOnly=e}get useCurrentAttemptObjectiveInfo(){return this._useCurrentAttemptObjectiveInfo}set useCurrentAttemptObjectiveInfo(e){this._useCurrentAttemptObjectiveInfo=e}get useCurrentAttemptProgressInfo(){return this._useCurrentAttemptProgressInfo}set useCurrentAttemptProgressInfo(e){this._useCurrentAttemptProgressInfo=e}get preventActivation(){return this._preventActivation}set preventActivation(e){this._preventActivation=e}get constrainChoice(){return this._constrainChoice}set constrainChoice(e){this._constrainChoice=e}get stopForwardTraversal(){return this._stopForwardTraversal}set stopForwardTraversal(e){this._stopForwardTraversal=e}get rollupObjectiveSatisfied(){return this._rollupObjectiveSatisfied}set rollupObjectiveSatisfied(e){this._rollupObjectiveSatisfied=e}get rollupProgressCompletion(){return this._rollupProgressCompletion}set rollupProgressCompletion(e){this._rollupProgressCompletion=e}get objectiveMeasureWeight(){return this._objectiveMeasureWeight}set objectiveMeasureWeight(e){0>e||(this._objectiveMeasureWeight=e)}isChoiceNavigationAllowed(){return this._enabled&&!this._constrainChoice}isFlowNavigationAllowed(){return this._enabled&&this._flow}isForwardNavigationAllowed(){return this._enabled&&this._flow}isBackwardNavigationAllowed(){return this._enabled&&this._flow&&!this._forwardOnly}get selectionTiming(){return this._selectionTiming}set selectionTiming(e){this._selectionTiming=e}get selectCount(){return this._selectCount}set selectCount(e){(null===e||e>0)&&(this._selectCount=e)}get selectionCountStatus(){return this._selectionCountStatus}set selectionCountStatus(e){this._selectionCountStatus=e}get randomizeChildren(){return this._randomizeChildren}set randomizeChildren(e){this._randomizeChildren=e}get randomizationTiming(){return this._randomizationTiming}set randomizationTiming(e){this._randomizationTiming=e}get reorderChildren(){return this._reorderChildren}set reorderChildren(e){this._reorderChildren=e}get completionSetByContent(){return this._completionSetByContent}set completionSetByContent(e){this._completionSetByContent=e}get objectiveSetByContent(){return this._objectiveSetByContent}set objectiveSetByContent(e){this._objectiveSetByContent=e}get tracked(){return this._tracked}set tracked(e){this._tracked=e}toJSON(){this.jsonString=!0;const result={enabled:this._enabled,choice:this._choice,choiceExit:this._choiceExit,flow:this._flow,forwardOnly:this._forwardOnly,useCurrentAttemptObjectiveInfo:this._useCurrentAttemptObjectiveInfo,useCurrentAttemptProgressInfo:this._useCurrentAttemptProgressInfo,preventActivation:this._preventActivation,constrainChoice:this._constrainChoice,stopForwardTraversal:this._stopForwardTraversal,rollupObjectiveSatisfied:this._rollupObjectiveSatisfied,rollupProgressCompletion:this._rollupProgressCompletion,objectiveMeasureWeight:this._objectiveMeasureWeight,selectionTiming:this._selectionTiming,selectCount:this._selectCount,selectionCountStatus:this._selectionCountStatus,randomizeChildren:this._randomizeChildren,randomizationTiming:this._randomizationTiming,reorderChildren:this._reorderChildren,completionSetByContent:this._completionSetByContent,objectiveSetByContent:this._objectiveSetByContent,tracked:this._tracked};return this.jsonString=!1,result}}class Ye{static selectChildrenProcess(e){const t=e.sequencingControls,i=[...e.children];if(t.selectionTiming===Ue.NEVER)return i;if(t.selectionTiming===Ue.ONCE&&t.selectionCountStatus)return i;if(t.selectionTiming!==Ue.ONCE&&!t.selectionCountStatus)return i;const s=t.selectCount;if(null===s||s>=i.length)return t.selectionTiming===Ue.ONCE&&(t.selectionCountStatus=!0),i;const r=[],n=i.map((e,t)=>t);for(let e=0;s>e&&0!==n.length;e++){const e=Math.floor(Math.random()*n.length),t=n[e];void 0!==t&&i[t]&&r.push(i[t]),n.splice(e,1)}t.selectionTiming===Ue.ONCE&&(t.selectionCountStatus=!0);for(const e of i)r.includes(e)||(e.isHiddenFromChoice=!0,e.isAvailable=!1);return r}static randomizeChildrenProcess(e){const t=e.sequencingControls,i=[...e.children];if(t.randomizationTiming===$e.NEVER)return i;if(t.randomizationTiming===$e.ONCE&&t.reorderChildren)return i;if(!t.randomizeChildren)return i;const s=[...i];for(let e=s.length-1;e>0;e--){const t=Math.floor(Math.random()*(e+1)),i=s[e],r=s[t];i&&r&&(s[e]=r,s[t]=i)}return t.randomizationTiming===$e.ONCE&&(t.reorderChildren=!0),e.children.length=0,e.children.push(...s),s}static applySelectionAndRandomization(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=e.sequencingControls;if(!t&&(e.isActive||e.isSuspended))return e.children;let s=!1,r=!1;i.selectionTiming===Ue.ON_EACH_NEW_ATTEMPT?(s=t,t&&(i.selectionCountStatus=!0)):i.selectionTiming===Ue.ONCE&&(s=!i.selectionCountStatus),i.randomizationTiming===$e.ON_EACH_NEW_ATTEMPT?(r=t,t&&(i.reorderChildren=!1)):i.randomizationTiming===$e.ONCE&&(r=!i.reorderChildren),s&&this.selectChildrenProcess(e),r&&this.randomizeChildrenProcess(e);const n=e.children.filter(e=>e.isAvailable);return e.setProcessedChildren(n),n}static isSelectionNeeded(e){const t=e.sequencingControls;return t.selectionTiming!==Ue.NEVER&&(t.selectionTiming!==Ue.ONCE||!t.selectionCountStatus)&&null!==t.selectCount&&e.children.length>t.selectCount}static isRandomizationNeeded(e){const t=e.sequencingControls;return t.randomizationTiming!==$e.NEVER&&(t.randomizationTiming!==$e.ONCE||!t.reorderChildren)&&t.randomizeChildren}}class We{constructor(e,t){this.activityTree=e,this.ruleEngine=t}flowSubprocess(e,t){let i=e,s=!0,r=!1;for(;i;){const e=this.flowTreeTraversalSubprocess(i,t,s);if(!e.activity){let s=null;return e.exception?s=e.exception:t===ze.BACKWARD?s="SB.2.1-3":r&&(s="SB.2.1-2"),new Le(i,!1,s,e.endSequencingSession)}r=e.activity.children.length>0&&0===e.activity.getAvailableChildren().length;const n=this.flowActivityTraversalSubprocess(e.activity,t===ze.FORWARD,!0,t);if(n)return new Le(n,!0,null,!1);i=e.activity,s=!1}return new Le(null,!1,null,!1)}flowTreeTraversalSubprocess(e,t){return t===ze.FORWARD?this.traverseForward(e,arguments.length>2&&void 0!==arguments[2]&&arguments[2]):this.traverseBackward(e)}traverseForward(e,t){if(t&&this.isActivityLastOverall(e))return this.activityTree.root&&this.terminateDescendentAttempts(this.activityTree.root),{activity:null,endSequencingSession:!0};if(!t){this.ensureSelectionAndRandomization(e);const t=e.getAvailableChildren();if(t.length>0)return{activity:t[0]||null,endSequencingSession:!1}}let i=e;for(;i;){const e=this.activityTree.getNextSibling(i);if(e)return{activity:e,endSequencingSession:!1};i=i.parent}return this.activityTree.root&&this.terminateDescendentAttempts(this.activityTree.root),{activity:null,endSequencingSession:!0}}traverseBackward(e){if(e.parent&&e.parent.sequencingControls.forwardOnly)return{activity:null,endSequencingSession:!1,exception:"SB.2.1-4"};const t=this.activityTree.getPreviousSibling(e);if(t)return{activity:this.getLastDescendant(t),endSequencingSession:!1};let i=e,s=0;for(;i&&i.parent;){if(++s>1e4)throw Error("Infinite loop detected in backward traversal");const e=this.activityTree.getPreviousSibling(i.parent);if(e)return{activity:this.getLastDescendant(e),endSequencingSession:!1};i=i.parent}return{activity:null,endSequencingSession:!1}}getLastDescendant(e){let t=e,i=0;for(;;){if(++i>1e4)throw Error("Infinite loop detected while getting last descendant");this.ensureSelectionAndRandomization(t);const e=t.getAvailableChildren();if(0===e.length)break;const s=e[e.length-1];if(!s)break;t=s}return t}flowActivityTraversalSubprocess(e,t,i,mode){const s=e.parent;if(s&&!s.sequencingControls.flow)return null;if(!e.isAvailable)return null;if(mode===ze.FORWARD&&e.sequencingControls.stopForwardTraversal)return null;if(i){this.ensureSelectionAndRandomization(e);const t=e.getAvailableChildren();for(const e of t){const t=this.flowActivityTraversalSubprocess(e,mode===ze.FORWARD,!0,mode);if(t)return t}}return 0===e.children.length&&this.checkActivityProcess(e)?e:null}checkActivityProcess(e){if(!e.isAvailable)return!1;if(0===e.children.length&&!e.isVisible)return!1;if(this.ruleEngine.checkLimitConditions(e))return!1;const t=this.ruleEngine.canDeliverActivity(e);return e.wasSkipped=t.wasSkipped,t.canDeliver}ensureSelectionAndRandomization(e){e.getAvailableChildren()===e.children&&(Ye.isSelectionNeeded(e)||Ye.isRandomizationNeeded(e))&&Ye.applySelectionAndRandomization(e,e.isNewAttempt)}isActivityLastOverall(e){if(e.children.length>0)return!1;let t=e;for(;t;){if(this.activityTree.getNextSibling(t))return!1;t=t.parent}return!0}terminateDescendentAttempts(e){e.isActive=!1;for(const t of e.children)this.terminateDescendentAttempts(t)}findFirstDeliverableActivity(e){if(0===e.children.length)return this.checkActivityProcess(e)?e:null;this.ensureSelectionAndRandomization(e);const t=e.getAvailableChildren();for(const e of t){const t=this.flowActivityTraversalSubprocess(e,!0,!0,ze.FORWARD);if(t)return t}return null}canDeliver(e){return this.checkActivityProcess(e)}}class Je{constructor(e,t){this.activityTree=e,this.traversalService=t}handleStart(){const result=new De;if(!this.activityTree.root)return result.exception="SB.2.5-1",result;if(this.activityTree.currentActivity)return result.exception="SB.2.5-2",result;const e=this.traversalService.findFirstDeliverableActivity(this.activityTree.root);return e?(result.deliveryRequest=qe.DELIVER,result.targetActivity=e,result):(result.exception="SB.2.5-3",result)}handleResumeAll(){const result=new De;return this.activityTree.suspendedActivity?this.activityTree.currentActivity?(result.exception="SB.2.6-2",result):(result.deliveryRequest=qe.DELIVER,result.targetActivity=this.activityTree.suspendedActivity,result):(result.exception="SB.2.6-1",result)}handleContinue(e){const result=new De;if(e.isActive)return result.exception="SB.2.7-1",result;if(e.parent&&!e.parent.sequencingControls.flow)return result.exception="SB.2.7-2",result;const t=this.traversalService.flowSubprocess(e,ze.FORWARD);return result.endSequencingSession=t.endSequencingSession,t.deliverable&&t.identifiedActivity?(result.deliveryRequest=qe.DELIVER,result.targetActivity=t.identifiedActivity,result):(result.exception=t.exception||"SB.2.7-2",result)}handlePrevious(e){const result=new De;if(e.isActive)return result.exception="SB.2.8-1",result;if(e.parent&&!e.parent.sequencingControls.flow)return result.exception="SB.2.8-2",result;const t=this.checkForwardOnlyViolation(e);if(t)return result.exception=t,result;const i=this.traversalService.flowSubprocess(e,ze.BACKWARD);return i.deliverable&&i.identifiedActivity?(result.deliveryRequest=qe.DELIVER,result.targetActivity=i.identifiedActivity,result):(result.exception=i.exception||"SB.2.8-3",result)}checkForwardOnlyViolation(e){let t=e.parent;for(;t;){if(t.sequencingControls.forwardOnly)return"SB.2.9-5";t=t.parent}return null}}class Ke{constructor(e,t,i,s){this.activityTree=e,this.constraintValidator=t,this.traversalService=i,this.treeQueries=s}handleChoice(e,t){const result=new De,i=this.activityTree.getActivity(e);if(!i)return result.exception="SB.2.9-1",result;if(t&&t.isActive)return result.exception="SB.2.9-6",result;const s=this.constraintValidator.validateChoice(t,i,{checkAvailability:!0});if(!s.valid)return result.exception=s.exception,result;const r=this.treeQueries.findCommonAncestor(t,i);t&&this.terminateDescendentAttemptsProcess(r||this.activityTree.root);const n=this.buildActivityPath(i,r);for(const e of n)if(!this.traversalService.checkActivityProcess(e))return result;let o=i;if(i.children.length>0){const e=this.choiceFlowSubprocess(i);if(!e)return result.exception="SB.2.9-7",result;o=e}return result.deliveryRequest=qe.DELIVER,result.targetActivity=o,result}handleJump(e){const result=new De,t=this.activityTree.getActivity(e);return t?this.treeQueries.isInTree(t)?t.isAvailable?(result.deliveryRequest=qe.DELIVER,result.targetActivity=t,result):(result.exception="SB.2.13-3",result):(result.exception="SB.2.13-2",result):(result.exception="SB.2.13-1",result)}getAvailableChoices(){const e=this.activityTree.getAllActivities(),t=this.activityTree.currentActivity,i=[];for(const s of e)s!==this.activityTree.root&&!s.isHiddenFromChoice&&s.isAvailable&&s.isVisible&&(s.parent&&!s.parent.sequencingControls.choice||this.constraintValidator.validateChoice(t,s).valid&&i.push(s));return i}buildActivityPath(e,t){const i=[];let s=e;for(;s&&s!==t;)i.unshift(s),s=s.parent;return i}choiceFlowSubprocess(e){return 0===e.children.length?e:this.choiceFlowTreeTraversal(e)}choiceFlowTreeTraversal(e){this.traversalService.ensureSelectionAndRandomization(e);const t=e.getAvailableChildren(),i=this.constraintValidator.validateFlowConstraints(e,t);if(!i.valid)return null;for(const e of i.validChildren){const t=this.enhancedChoiceTraversal(e);if(t.activity)return t.activity}return null}enhancedChoiceTraversal(e){if(arguments.length>1&&void 0!==arguments[1]&&arguments[1]&&e===this.activityTree.root)return new Pe(null,"SB.2.4-3");if(!e.isAvailable)return new Pe(null,null);if(e.isHiddenFromChoice)return new Pe(null,null);if(e.sequencingControls&&e.sequencingControls.stopForwardTraversal)return new Pe(null,"SB.2.4-1");const t=this.constraintValidator.validateTraversalConstraints(e);if(!t.canTraverse)return new Pe(null,null);if(0===e.children.length)return this.traversalService.checkActivityProcess(e)?new Pe(e,null):new Pe(null,null);if(e.parent?.sequencingControls.constrainChoice&&!t.canTraverseInto)return new Pe(null,"SB.2.4-2");if(t.canTraverseInto){const t=this.choiceFlowTreeTraversal(e);return new Pe(t,null)}return new Pe(null,null)}terminateDescendentAttemptsProcess(e){e.isActive=!1;for(const t of e.children)this.terminateDescendentAttemptsProcess(t)}}class Xe{constructor(e,t){this.activityTree=e,this.ruleEngine=t}handleExit(e){const result=new De;return e.parent?e.parent.sequencingControls.choiceExit?(this.terminateDescendentAttempts(e),result):(result.exception="SB.2.11-2",result):(result.exception="SB.2.11-1",result)}handleExitAll(){const result=new De;return this.activityTree.root&&this.terminateDescendentAttempts(this.activityTree.root),result}handleAbandon(e){const result=new De;return e.isActive=!1,this.activityTree.currentActivity=e.parent,result}handleAbandonAll(){const result=new De;return this.activityTree.currentActivity=null,result}handleSuspendAll(e){const result=new De;return e===this.activityTree.root?(result.exception="SB.2.15-1",result):(e.isSuspended=!0,this.activityTree.suspendedActivity=e,this.activityTree.currentActivity=null,result)}terminateDescendentAttempts(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=null;t||(i=this.ruleEngine.evaluateExitRules(e)),e.isActive=!1;for(const i of e.children)this.terminateDescendentAttempts(i,t);i&&!t&&this.processDeferredExitAction(i,e)}processDeferredExitAction(e,t){switch(e){case Ee.EXIT:break;case Ee.EXIT_PARENT:t.parent&&t.parent.isActive&&this.terminateDescendentAttempts(t.parent,!0);break;case Ee.EXIT_ALL:this.activityTree.root&&this.activityTree.root!==t&&this.activityTree.getAllActivities().some(e=>e.isActive)&&this.terminateDescendentAttempts(this.activityTree.root,!0)}}}class Qe{constructor(e,t){this.activityTree=e,this.traversalService=t}handleRetry(e){const result=new De;if(e.isActive||e.isSuspended)return result.exception="SB.2.10-2",result;if(e.children.length>0){this.traversalService.ensureSelectionAndRandomization(e);const t=e.getAvailableChildren();let i=null;for(const e of t)if(i=this.traversalService.flowActivityTraversalSubprocess(e,!0,!0,ze.FORWARD),i)break;return i?(result.deliveryRequest=qe.DELIVER,result.targetActivity=i,result):(result.exception="SB.2.10-3",result)}return this.terminateDescendentAttempts(e),result.deliveryRequest=qe.DELIVER,result.targetActivity=e,result}handleRetryAll(){if(this.activityTree.currentActivity=null,!this.activityTree.root){const e=new De;return e.exception="SB.2.10-1",e}const e=this.traversalService.findFirstDeliverableActivity(this.activityTree.root),result=new De;return e?(result.deliveryRequest=qe.DELIVER,result.targetActivity=e,result):(result.exception="SB.2.10-3",result)}terminateDescendentAttempts(e){e.isActive=!1;for(const t of e.children)this.terminateDescendentAttempts(t)}}var Ze=Object.defineProperty,et=(e,t,i)=>((e,t,i)=>t in e?Ze(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class tt{constructor(e,t,i){let s=arguments.length>4?arguments[4]:void 0;et(this,"activityTree"),et(this,"treeQueries"),et(this,"constraintValidator"),et(this,"ruleEngine"),et(this,"traversalService"),et(this,"flowHandler"),et(this,"choiceHandler"),et(this,"exitHandler"),et(this,"retryHandler"),et(this,"_now"),et(this,"_getAttemptElapsedSecondsHook"),this.activityTree=e,this._now=s?.now||(()=>new Date),this._getAttemptElapsedSecondsHook=s?.getAttemptElapsedSeconds,this.treeQueries=new Te(e),this.ruleEngine=new Ve({now:this._now,getAttemptElapsedSecondsHook:this._getAttemptElapsedSecondsHook}),this.constraintValidator=new je(e,this.treeQueries),this.traversalService=new We(e,this.ruleEngine),this.flowHandler=new Je(e,this.traversalService),this.choiceHandler=new Ke(e,this.constraintValidator,this.traversalService,this.treeQueries),this.exitHandler=new Xe(e,this.ruleEngine),this.retryHandler=new Qe(e,this.traversalService)}get now(){return this._now}set now(e){this._now=e,Me.setNowProvider(e),this.ruleEngine=new Ve({now:e,getAttemptElapsedSecondsHook:this._getAttemptElapsedSecondsHook}),this.traversalService=new We(this.activityTree,this.ruleEngine),this.flowHandler=new Je(this.activityTree,this.traversalService),this.choiceHandler=new Ke(this.activityTree,this.constraintValidator,this.traversalService,this.treeQueries),this.retryHandler=new Qe(this.activityTree,this.traversalService)}get getAttemptElapsedSecondsHook(){return this._getAttemptElapsedSecondsHook}set getAttemptElapsedSecondsHook(e){this._getAttemptElapsedSecondsHook=e,Me.setElapsedSecondsHook(e),this.ruleEngine=new Ve({now:this._now,getAttemptElapsedSecondsHook:e}),this.traversalService=new We(this.activityTree,this.ruleEngine),this.flowHandler=new Je(this.activityTree,this.traversalService),this.choiceHandler=new Ke(this.activityTree,this.constraintValidator,this.traversalService,this.treeQueries),this.retryHandler=new Qe(this.activityTree,this.traversalService)}sequencingRequestProcess(request){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;const t=this.activityTree.currentActivity;switch(request){case xe.START:return this.flowHandler.handleStart();case xe.RESUME_ALL:return this.flowHandler.handleResumeAll();case xe.CONTINUE:return t?this.flowHandler.handleContinue(t):new De(qe.DO_NOT_DELIVER,null,"SB.2.12-1");case xe.PREVIOUS:return t?this.flowHandler.handlePrevious(t):new De(qe.DO_NOT_DELIVER,null,"SB.2.12-1");case xe.CHOICE:return e?this.choiceHandler.handleChoice(e,t):new De(qe.DO_NOT_DELIVER,null,"SB.2.12-5");case xe.JUMP:return e?this.choiceHandler.handleJump(e):new De(qe.DO_NOT_DELIVER,null,"SB.2.12-5");case xe.EXIT:return t?this.exitHandler.handleExit(t):new De(qe.DO_NOT_DELIVER,null,"SB.2.12-1");case xe.EXIT_ALL:return t?this.exitHandler.handleExitAll():new De(qe.DO_NOT_DELIVER,null,"SB.2.12-1");case xe.ABANDON:return t?this.exitHandler.handleAbandon(t):new De(qe.DO_NOT_DELIVER,null,"SB.2.12-1");case xe.ABANDON_ALL:return t?this.exitHandler.handleAbandonAll():new De(qe.DO_NOT_DELIVER,null,"SB.2.12-1");case xe.SUSPEND_ALL:return t?this.exitHandler.handleSuspendAll(t):new De(qe.DO_NOT_DELIVER,null,"SB.2.12-1");case xe.RETRY:return t?this.retryHandler.handleRetry(t):new De(qe.DO_NOT_DELIVER,null,"SB.2.12-1");case xe.RETRY_ALL:return this.retryHandler.handleRetryAll();default:return new De(qe.DO_NOT_DELIVER,null,"SB.2.12-6")}}evaluatePostConditionRules(e){return this.ruleEngine.evaluatePostConditions(e)}canActivityBeDelivered(e){return this.traversalService.canDeliver(e)}validateNavigationRequest(request){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(!Object.values(xe).includes(request))return{valid:!1,exception:"SB.2.12-6"};switch(request){case xe.CONTINUE:case xe.PREVIOUS:if(!t)return{valid:!1,exception:"SB.2.12-1"};if(t.isActive)return{valid:!1,exception:request===xe.CONTINUE?"SB.2.7-1":"SB.2.8-1"};if(t.parent&&!t.parent.sequencingControls.flow)return{valid:!1,exception:request===xe.CONTINUE?"SB.2.7-2":"SB.2.8-2"};if(request===xe.PREVIOUS){const e=this.constraintValidator.checkForwardOnlyViolation(t);if(!e.valid)return e}break;case xe.CHOICE:{if(!e)return{valid:!1,exception:"SB.2.12-5"};const i=this.activityTree.getActivity(e);if(!i)return{valid:!1,exception:"SB.2.9-1"};const s=this.constraintValidator.validateChoice(t,i,{checkAvailability:!0});if(!s.valid)return s;if(!this.traversalService.canDeliver(i))return{valid:!1,exception:"SB.2.9-6"};if(this.ruleEngine.checkSequencingRules(i,i.sequencingRules.preConditionRules)===Ee.HIDE_FROM_CHOICE)return{valid:!1,exception:"SB.2.9-4"};break}case xe.JUMP:if(!e)return{valid:!1,exception:"SB.2.12-5"};if(!this.activityTree.getActivity(e))return{valid:!1,exception:"SB.2.13-1"}}return{valid:!0,exception:null}}getAvailableChoices(){return this.choiceHandler.getAvailableChoices()}getTreeQueries(){return this.treeQueries}getConstraintValidator(){return this.constraintValidator}getRuleEngine(){return this.ruleEngine}getTraversalService(){return this.traversalService}}var it=Object.defineProperty,st=(e,t,i)=>((e,t,i)=>t in e?it(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class rt{constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};st(this,"eventService"),st(this,"loggingService"),st(this,"callbacks"),st(this,"currentDeliveredActivity",null),st(this,"pendingDelivery",null),this.eventService=e,this.loggingService=t,this.callbacks=i}processSequencingResult(result){if(result.exception)return this.loggingService.error("Sequencing error: "+result.exception),void this.callbacks.onSequencingError?.(result.exception);result.deliveryRequest===qe.DELIVER&&result.targetActivity?this.deliverActivity(result.targetActivity):this.loggingService.info("Sequencing completed with no delivery request"),this.callbacks.onSequencingComplete?.(result)}deliverActivity(e){this.currentDeliveredActivity!==e?(this.currentDeliveredActivity&&this.unloadActivity(this.currentDeliveredActivity),this.pendingDelivery=e,this.loggingService.info(`Delivering activity: ${e.id} - ${e.title}`),this.eventService.processListeners("ActivityDelivery",e.id,e),this.callbacks.onDeliverActivity?.(e),this.currentDeliveredActivity=e,this.pendingDelivery=null,e.isActive=!0):this.loggingService.info("Skipping delivery - activity already delivered: "+e.id)}unloadActivity(e){this.loggingService.info(`Unloading activity: ${e.id} - ${e.title}`),this.eventService.processListeners("ActivityUnload",e.id,e),this.callbacks.onUnloadActivity?.(e),e.isActive=!1}getCurrentDeliveredActivity(){return this.currentDeliveredActivity}getPendingDelivery(){return this.pendingDelivery}updateCallbacks(e){this.callbacks={...this.callbacks,...e}}reset(){this.currentDeliveredActivity&&this.unloadActivity(this.currentDeliveredActivity),this.currentDeliveredActivity=null,this.pendingDelivery=null}}var nt=Object.defineProperty,ot=(e,t,i)=>((e,t,i)=>t in e?nt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class at{constructor(e,t){ot(this,"settings"),ot(this,"error_codes"),this.settings=e,this.error_codes=t}processHttpRequest(e,t){return this._performAsyncRequest(e,t,arguments.length>2&&void 0!==arguments[2]&&arguments[2],arguments.length>3?arguments[3]:void 0,arguments.length>4?arguments[4]:void 0),{result:f,errorCode:0}}async _performAsyncRequest(e,t,i,s,r){try{const s=this.settings.requestHandler(t);let n;n=i&&"never"!==this.settings.asyncModeBeaconBehavior?await this.performBeacon(e,s):await this.performFetch(e,s);const result=await this.transformResponse(n,r);this._isSuccessResponse(n,result)?r("CommitSuccess"):r("CommitError",void 0,result.errorCode)}catch(e){s("processHttpRequest","Async request failed: "+(e instanceof Error?e.message:e+""),B.ERROR),r("CommitError")}}_prepareRequestBody(e){return{body:e instanceof Array?e.join("&"):JSON.stringify(e),contentType:e instanceof Array?"application/x-www-form-urlencoded":this.settings.commitRequestDataType}}async performFetch(e,t){if("always"===this.settings.asyncModeBeaconBehavior)return this.performBeacon(e,t);const{body:i,contentType:s}=this._prepareRequestBody(t),r={method:"POST",mode:this.settings.fetchMode,body:i,headers:{...this.settings.xhrHeaders,"Content-Type":s},keepalive:!0};return this.settings.xhrWithCredentials&&(r.credentials="include"),fetch(e,r)}async performBeacon(e,t){const{body:i,contentType:s}=this._prepareRequestBody(t),r=navigator.sendBeacon(e,new Blob([i],{type:s}));return Promise.resolve({status:r?200:0,ok:r,json:async()=>({result:r?"true":"false",errorCode:r?0:this.error_codes.GENERAL_COMMIT_FAILURE||391}),text:async()=>JSON.stringify({result:r?"true":"false",errorCode:r?0:this.error_codes.GENERAL_COMMIT_FAILURE||391})})}async transformResponse(e,t){let result;try{result="function"==typeof this.settings.responseHandler?await this.settings.responseHandler(e):await e.json()}catch(t){const i=await e.text().catch(()=>"Unable to read response text");return{result:S,errorCode:this.error_codes.GENERAL_COMMIT_FAILURE||391,errorMessage:"Failed to parse LMS response: "+(t instanceof Error?t.message:t+""),errorDetails:JSON.stringify({status:e.status,statusText:e.statusText,url:e.url,responseText:i.substring(0,500),parseError:t instanceof Error?t.message:t+""})}}return Object.hasOwnProperty.call(result,"errorCode")||(result.errorCode=this._isSuccessResponse(e,result)?0:this.error_codes.GENERAL_COMMIT_FAILURE||391),this._isSuccessResponse(e,result)||(result.errorDetails={status:e.status,statusText:e.statusText,url:e.url,...result.errorDetails}),result}_isSuccessResponse(e,result){const t=result.result;return!(200>e.status||e.status>299||!0!==t&&"true"!==t&&t!==f)}updateSettings(e){this.settings=e}}var ct=Object.defineProperty;const lt="{target=";function ut(e,t){const i=e[t];return void 0===i?(void 0!==console&&console.warn&&console.warn("CMIValueAccessService: Unknown error code key: "+t),e.GENERAL??0):i}class ht{constructor(e){var t;((e,t,i)=>{t in e?ct(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i})(this,"context"+"",t),this.context=e}getUndefinedDataModelErrorCode(e){return ut(this.context.errorCodes,e?"UNDEFINED_DATA_MODEL":"GENERAL")}setCMIValue(e,t,i,s){if(!i||""===i)return t&&this.context.throwSCORMError(i,ut(this.context.errorCodes,"GENERAL_SET_FAILURE"),"The data model element was not specified"),S;this.context.setLastErrorCode("0");const r=i.split(".");let n=this.context.getDataModel(),o=S,a=!1;const c=`The data model element passed to ${e} (${i}) is not a valid SCORM data model element.`,l=this.getUndefinedDataModelErrorCode(t);for(let e=0;r.length>e;e++){if(e===r.length-1){o=this.setFinalAttribute(n,r[e],s,i,t,l,c);break}{const o=this.traverseToNextLevel(n,r,e,s,i,t,a,l,c);if(o.error)break;n=o.refObject,e=o.idx,a=o.foundFirstIndex}}return o===S&&this.context.apiLog(e,`There was an error setting the value for: ${i}, value of: ${s}`,B.WARN),o}getCMIValue(e,t,i){if(!i||""===i)return t&&this.context.throwSCORMError(i,ut(this.context.errorCodes,"GENERAL_GET_FAILURE"),"The data model element was not specified"),"";if(t&&i.endsWith("._version")&&"cmi._version"!==i)return this.context.throwSCORMError(i,ut(this.context.errorCodes,"GENERAL_GET_FAILURE"),"The _version keyword was used incorrectly"),"";const s=i.split(".");let r=this.context.getDataModel(),n=null;const o=`The data model element passed to ${e} (${i}) has not been initialized.`,a=`The data model element passed to ${e} (${i}) is not a valid SCORM data model element.`,c=this.getUndefinedDataModelErrorCode(t);for(let e=0;s.length>e;e++){n=s[e];const l=this.validateGetAttribute(r,n,i,t,c,a,e===s.length-1);if(void 0!==l.returnValue)return l.returnValue;if(l.error)return"";if(null==n){this.context.throwSCORMError(i,c,a);break}if(r=r[n],void 0===r){this.context.throwSCORMError(i,c,a);break}if(r instanceof x){const t=this.handleGetArrayAccess(r,s,e,i,o);if(t.error)return"";r=t.refObject,e=t.idx}}return null==r?(t||("_children"===n?this.context.throwSCORMError(i,ut(this.context.errorCodes,"CHILDREN_ERROR"),void 0):"_count"===n&&this.context.throwSCORMError(i,ut(this.context.errorCodes,"COUNT_ERROR"),void 0)),""):r}setFinalAttribute(e,t,i,s,r,n,o){return r&&t?.startsWith(lt)?this.context.isInitialized()?(this.context.throwSCORMError(s,ut(this.context.errorCodes,"READ_ONLY_ELEMENT")),S):f:void 0!==t&&this.context.checkObjectHasProperty(e,t)?c(s,"\\.correct_responses\\.\\d+$")&&this.context.isInitialized()&&"pattern"!==t&&(this.context.validateCorrectResponse(s,i),"0"!==this.context.getLastErrorCode())?(this.context.throwSCORMError(s,ut(this.context.errorCodes,"TYPE_MISMATCH")),S):r&&"0"!==this.context.getLastErrorCode()?S:void 0===t||"__proto__"===t||"constructor"===t?(this.context.throwSCORMError(s,n,o),S):r&&"id"===t&&this.context.isInitialized()&&this.context.checkForDuplicateId(s,i)?(this.context.throwSCORMError(s,ut(this.context.errorCodes,"GENERAL_SET_FAILURE")),S):(e[t]=i,f):(this.context.throwSCORMError(s,n,o),S)}traverseToNextLevel(e,t,i,s,r,n,o,a,c){const l=t[i];if(void 0===l||!this.context.checkObjectHasProperty(e,l))return this.context.throwSCORMError(r,a,c),{refObject:e,idx:i,foundFirstIndex:o,error:!0};if(!(e=e[l]))return this.context.throwSCORMError(r,a,c),{refObject:e,idx:i,foundFirstIndex:o,error:!0};if(e instanceof x){const l=this.handleSetArrayAccess(e,t,i,s,r,n,o,a,c);return l.error?{refObject:e,idx:i,foundFirstIndex:o,error:!0}:l}return{refObject:e,idx:i,foundFirstIndex:o,error:!1}}handleSetArrayAccess(e,t,i,s,r,n,o,a,c){const l=parseInt(t[i+1]||"0",10);if(!isNaN(l)){const t=e.childArray[l];if(t)return{refObject:t,idx:i+1,foundFirstIndex:!0,error:!1};{if(l>e.childArray.length){const t=n?ut(this.context.errorCodes,"GENERAL_SET_FAILURE"):ut(this.context.errorCodes,"INVALID_SET_VALUE")||ut(this.context.errorCodes,"GENERAL_SET_FAILURE");return this.context.throwSCORMError(r,t,`Cannot set array element at index ${l}. Array indices must be sequential. Current array length is ${e.childArray.length}, expected index ${e.childArray.length}.`),{refObject:e,idx:i,foundFirstIndex:o,error:!0}}const t=this.context.getChildElement(r,s,o);return t?(e.initialized&&t.initialize(),e.childArray[l]=t,{refObject:t,idx:i+1,foundFirstIndex:!0,error:!1}):("0"===this.context.getLastErrorCode()&&this.context.throwSCORMError(r,a,c),{refObject:e,idx:i,foundFirstIndex:o,error:!0})}}return{refObject:e,idx:i,foundFirstIndex:o,error:!1}}validateGetAttribute(e,t,i,s,r,n,o){if(s){const s=t+"";if(s.startsWith(lt)&&"function"==typeof e._isTargetValid){const t=s.substring(8,s.length-1);return{error:!1,returnValue:e._isTargetValid(t)}}if(void 0===t||!this.context.checkObjectHasProperty(e,t))return"_children"===t?(this.context.throwSCORMError(i,ut(this.context.errorCodes,"GENERAL_GET_FAILURE"),"The data model element does not have children"),{error:!0}):"_count"===t?(this.context.throwSCORMError(i,ut(this.context.errorCodes,"GENERAL_GET_FAILURE"),"The data model element is not a collection and therefore does not have a count"),{error:!0}):(this.context.throwSCORMError(i,r,n),{error:!0})}else if(o&&(void 0===t||!this.context.checkObjectHasProperty(e,t)))return this.context.throwSCORMError(i,r,n),{error:!0};return{error:!1}}handleGetArrayAccess(e,t,i,s,r){const n=parseInt(t[i+1]||"",10);if(!isNaN(n)){const t=e.childArray[n];return t?{refObject:t,idx:i+1,error:!1}:(this.context.throwSCORMError(s,ut(this.context.errorCodes,"VALUE_NOT_INITIALIZED"),r),{refObject:e,idx:i,error:!0})}return{refObject:e,idx:i,error:!1}}}var dt=Object.defineProperty,mt=(e,t,i)=>((e,t,i)=>t in e?dt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);const pt=class e{constructor(){mt(this,"_logLevel",B.ERROR),mt(this,"_logHandler"),this._logHandler=$}static getInstance(){return e._instance||(e._instance=new e),e._instance}setLogLevel(e){this._logLevel=e}getLogLevel(){return this._logLevel}setLogHandler(e){this._logHandler=e}log(e,t){this.shouldLog(e)&&this._logHandler(e,t)}error(e){this.log(B.ERROR,e)}warn(e){this.log(B.WARN,e)}info(e){this.log(B.INFO,e)}debug(e){this.log(B.DEBUG,e)}shouldLog(e){return this.getNumericLevel(e)>=this.getNumericLevel(this._logLevel)}getNumericLevel(e){if(void 0===e)return B.NONE;if("number"==typeof e)return e;switch(e){case"1":case"DEBUG":return B.DEBUG;case"2":case"INFO":return B.INFO;case"3":case"WARN":return B.WARN;case"4":case"ERROR":default:return B.ERROR;case"5":case"NONE":return B.NONE}}};mt(pt,"_instance");let _t=pt;function gt(){return _t.getInstance()}var vt=Object.defineProperty,ft=(e,t,i)=>((e,t,i)=>t in e?vt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class St{constructor(e,t,i,s){ft(this,"_lastErrorCode","0"),ft(this,"_lastDiagnostic",""),ft(this,"_errorCodes"),ft(this,"_apiLog"),ft(this,"_getLmsErrorMessageDetails"),ft(this,"_loggingService"),this._errorCodes=e,this._apiLog=t,this._getLmsErrorMessageDetails=i,this._loggingService=s||gt()}get lastErrorCode(){return this._lastErrorCode}set lastErrorCode(e){this._lastErrorCode=e}get lastDiagnostic(){return this._lastDiagnostic}throwSCORMError(e,t,i){this._lastDiagnostic=i||"",i||(i=this._getLmsErrorMessageDetails(t,!0));const s=`SCORM Error ${t}: ${i}${e?` [Element: ${e}]`:""}`;this._apiLog("throwSCORMError",t+": "+i,B.ERROR,e),this._loggingService.error(s),this._lastErrorCode=t+""}clearSCORMError(e){void 0!==e&&e!==S&&(this._lastErrorCode="0")}handleValueAccessException(e,t,i){if(t instanceof v){const s=t;this._lastErrorCode=s.errorCode+"",this._lastDiagnostic="",this._loggingService.warn(`Validation Error ${s.errorCode}: ${s.message} [Element: ${e}]`),i=S}else if(t instanceof Error){const s=t.constructor.name;this._loggingService.error(`${s}: ${t.message} [Element: ${e}]\n${t.stack||""}`),this.throwSCORMError(e,this._errorCodes.GENERAL,`${s}: ${t.message}`),i=S}else{this._loggingService.error(`Unknown error occurred while accessing [Element: ${e}]`);try{const e=JSON.stringify(t);this._loggingService.error("Error details: "+e)}catch(e){this._loggingService.error("Could not stringify error object for details")}this.throwSCORMError(e,this._errorCodes.GENERAL,"Unknown error"),i=S}return i}get errorCodes(){return this._errorCodes}}var bt=Object.defineProperty,yt=(e,t,i)=>((e,t,i)=>t in e?bt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Ct{constructor(e){yt(this,"listenerMap",new Map),yt(this,"listenerCount",0),yt(this,"apiLog"),this.apiLog=e}parseListenerName(e){if(!e)return null;const t=e.split("."),i=t[0];let s=null;return t.length>1&&(s=e.replace(i+".","")),{functionName:i??e,CMIElement:s}}on(e,t){if(!t)return;const i=e.split(" ");for(const e of i){const i=this.parseListenerName(e);if(!i)continue;const{functionName:s,CMIElement:r}=i,n=this.listenerMap.get(s)??[];n.push({functionName:s,CMIElement:r,callback:t}),this.listenerMap.set(s,n),this.listenerCount++,this.apiLog("on","Added event listener: "+this.listenerCount,B.INFO,s)}}off(e,t){if(!t)return;const i=e.split(" ");for(const e of i){const i=this.parseListenerName(e);if(!i)continue;const{functionName:s,CMIElement:r}=i,n=this.listenerMap.get(s);if(!n)continue;const o=n.findIndex(e=>e.CMIElement===r&&e.callback===t);-1!==o&&(n.splice(o,1),this.listenerCount--,0===n.length&&this.listenerMap.delete(s),this.apiLog("off","Removed event listener: "+this.listenerCount,B.INFO,s))}}clear(e){const t=e.split(" ");for(const e of t){const t=this.parseListenerName(e);if(!t)continue;const{functionName:i,CMIElement:s}=t;if(this.listenerMap.has(i)){const e=this.listenerMap.get(i),t=null===s?[]:e.filter(e=>e.CMIElement!==s);this.listenerCount-=e.length-t.length,0===t.length?this.listenerMap.delete(i):this.listenerMap.set(i,t)}}}processListeners(e,t,i){this.apiLog(e,i,B.INFO,t);const s=this.listenerMap.get(e);if(s)for(const r of s){const s=!!r.CMIElement;let n=!1;if(t&&r.CMIElement)if(r.CMIElement.endsWith("*")){const e=r.CMIElement.slice(0,-1);n=t.startsWith(e)}else n=r.CMIElement===t;s&&!n||(this.apiLog("processListeners","Processing listener: "+r.functionName,B.DEBUG,t),e.startsWith("Sequence")||"CommitError"===e?r.callback(i):"CommitSuccess"===e?r.callback():r.callback(t,i))}}reset(){this.listenerMap.clear(),this.listenerCount=0}}var At=Object.defineProperty,Et=(e,t,i)=>((e,t,i)=>t in e?At(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class wt{constructor(e,t,i){this.apiLog=i,Et(this,"settings"),Et(this,"error_codes"),Et(this,"storeName","scorm_again_offline_data"),Et(this,"syncQueue","scorm_again_sync_queue"),Et(this,"isOnline",navigator.onLine),Et(this,"syncInProgress",!1),Et(this,"boundOnlineStatusChangeHandler"),Et(this,"boundCustomNetworkStatusHandler"),this.settings=e,this.error_codes=t,this.boundOnlineStatusChangeHandler=this.handleOnlineStatusChange.bind(this),this.boundCustomNetworkStatusHandler=this.handleCustomNetworkStatus.bind(this),window.addEventListener("online",this.boundOnlineStatusChangeHandler),window.addEventListener("offline",this.boundOnlineStatusChangeHandler),window.addEventListener("scorm-again:network-status",this.boundCustomNetworkStatusHandler)}handleOnlineStatusChange(){const e=this.isOnline;this.isOnline=navigator.onLine,!e&&this.isOnline?(this.apiLog("OfflineStorageService","Device is back online, attempting to sync...",B.INFO),this.syncOfflineData().then(e=>{e?this.apiLog("OfflineStorageService","Sync completed successfully",B.INFO):this.apiLog("OfflineStorageService","Sync failed",B.ERROR)},e=>{this.apiLog("OfflineStorageService","Error during sync: "+e,B.ERROR)})):e&&!this.isOnline&&this.apiLog("OfflineStorageService","Device is offline, data will be stored locally",B.INFO)}handleCustomNetworkStatus(e){if(!(e instanceof CustomEvent))return void this.apiLog("OfflineStorageService","Invalid network status event received",B.WARN);const{online:t}=e.detail;if("boolean"!=typeof t)return void this.apiLog("OfflineStorageService","Invalid online status value in custom event",B.WARN);const i=this.isOnline;this.isOnline=t,this.apiLog("OfflineStorageService","Network status updated via custom event: "+(t?"online":"offline"),B.INFO),!i&&this.isOnline?(this.apiLog("OfflineStorageService","Device is back online, attempting to sync...",B.INFO),this.syncOfflineData().then(e=>{e?this.apiLog("OfflineStorageService","Sync completed successfully",B.INFO):this.apiLog("OfflineStorageService","Sync failed",B.ERROR)},e=>{this.apiLog("OfflineStorageService","Error during sync: "+e,B.ERROR)})):i&&!this.isOnline&&this.apiLog("OfflineStorageService","Device is offline, data will be stored locally",B.INFO)}storeOffline(e,t){try{const i={id:`${e}_${Date.now()}_${Math.random().toString(36).substring(2,9)}`,courseId:e,timestamp:Date.now(),data:t,syncAttempts:0},s=this.getFromStorage(this.syncQueue)||[];return s.push(i),this.saveToStorage(this.syncQueue,s),this.saveToStorage(`${this.storeName}_${e}`,t),this.apiLog("OfflineStorageService","Stored data offline for course "+e,B.INFO),{result:f,errorCode:0}}catch(t){const i=(t instanceof Error?t.message:t+"").includes("storage quota");return this.apiLog("OfflineStorageService",i?"storage quota exceeded - cannot store offline data for course "+e:"Error storing offline data: "+t,B.ERROR),{result:S,errorCode:this.error_codes.GENERAL??0}}}async getOfflineData(e){try{return this.getFromStorage(`${this.storeName}_${e}`)||null}catch(e){return this.apiLog("OfflineStorageService","Error retrieving offline data: "+e,B.ERROR),null}}async syncOfflineData(){if(this.syncInProgress||!this.isOnline)return!1;this.syncInProgress=!0;try{const e=this.getFromStorage(this.syncQueue)||[];if(0===e.length)return this.syncInProgress=!1,!0;this.apiLog("OfflineStorageService",`Found ${e.length} items to sync`,B.INFO);const t=[];for(const i of e){const e=this.settings.maxSyncAttempts??5;if(e>i.syncAttempts)try{const e=await this.sendDataToLMS(i.data);!0===e.result||e.result===f?this.apiLog("OfflineStorageService","Successfully synced item "+i.id,B.INFO):(i.syncAttempts++,t.push(i),this.apiLog("OfflineStorageService",`Failed to sync item ${i.id}, attempt #${i.syncAttempts}`,B.WARN))}catch(e){i.syncAttempts++,t.push(i),this.apiLog("OfflineStorageService",`Error syncing item ${i.id}: ${e}`,B.ERROR)}else this.apiLog("OfflineStorageService",`Removing abandoned item ${i.id} after ${e} failed sync attempts`,B.WARN)}return this.saveToStorage(this.syncQueue,t),this.apiLog("OfflineStorageService",`Sync completed. ${e.length-t.length} items synced, ${t.length} items remaining`,B.INFO),this.syncInProgress=!1,!0}catch(e){return this.apiLog("OfflineStorageService","Error during sync process: "+e,B.ERROR),this.syncInProgress=!1,!1}}async sendDataToLMS(e){if(!this.settings.lmsCommitUrl)return{result:S,errorCode:this.error_codes.GENERAL||101};try{const t=this.settings.requestHandler(e),i={method:"POST",mode:this.settings.fetchMode,body:JSON.stringify(t),headers:{...this.settings.xhrHeaders,"Content-Type":this.settings.commitRequestDataType}};this.settings.xhrWithCredentials&&(i.credentials="include");const s=await fetch(this.settings.lmsCommitUrl,i),result="function"==typeof this.settings.responseHandler?await this.settings.responseHandler(s):await s.json();return 200>s.status||s.status>299||!0!==result.result&&result.result!==f?(Object.hasOwnProperty.call(result,"errorCode")||(result.errorCode=this.error_codes.GENERAL),result):(Object.hasOwnProperty.call(result,"errorCode")||(result.errorCode=0),result)}catch(e){return this.apiLog("OfflineStorageService","Error sending data to LMS: "+e,B.ERROR),{result:S,errorCode:this.error_codes.GENERAL||101}}}isDeviceOnline(){return this.isOnline}getFromStorage(e){const t=localStorage.getItem(e);if(t)try{return JSON.parse(t)}catch(e){return null}return null}saveToStorage(e,t){try{localStorage.setItem(e,JSON.stringify(t))}catch(e){if(e instanceof DOMException&&"QuotaExceededError"===e.name)throw Error("storage quota exceeded - localStorage is full",{cause:e});throw e}}async hasPendingOfflineData(e){return(this.getFromStorage(this.syncQueue)||[]).some(t=>t.courseId===e)}updateSettings(e){this.settings=e}destroy(){window.removeEventListener("online",this.boundOnlineStatusChangeHandler),window.removeEventListener("offline",this.boundOnlineStatusChangeHandler),window.removeEventListener("scorm-again:network-status",this.boundCustomNetworkStatusHandler)}}const Mt=l((e,t,i,s,r,n)=>{if("string"!=typeof t)return!1;const o=RegExp(i),a=t.match(o);if(n&&""===t)return!0;if(!a||""===a[0])throw new r(e,s);return!0},(e,t,i,s,r,n)=>`${e}:${"string"==typeof t?t:`[${typeof t}]`}:${i}:${s}:${n||!1}`),Ot=l((e,t,i,s,r)=>{const n=i.split("#");if(isNaN(t=+t))throw new r(e,s);const o=n[0],a=n[1],c=void 0!==a&&""!==a&&"*"!==a;if(void 0!==o&&""!==o&&+o>t)throw new r(e,s);if(c&&t>+a)throw new r(e,s);return!0},(e,t,i,s,r)=>`${e}:${t}:${i}:${s}`);function Rt(e,t,i,s){return Mt(e,t,i,j.TYPE_MISMATCH,O,s)}function Tt(e,t,i){return Ot(e,t,i,j.VALUE_OUT_OF_RANGE,O)}var jt=Object.defineProperty,It=(e,t,i)=>((e,t,i)=>t in e?jt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i),Nt=(e=>(e.SATISFIED="satisfied",e.NOT_SATISFIED="notSatisfied",e.COMPLETED="completed",e.INCOMPLETE="incomplete",e))(Nt||{}),xt=(e=>(e.ALL="all",e.ANY="any",e.NONE="none",e.AT_LEAST_COUNT="atLeastCount",e.AT_LEAST_PERCENT="atLeastPercent",e))(xt||{});class qt extends d{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"always",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Map;super("rollupCondition"),It(this,"_condition","always"),It(this,"_parameters",new Map),this._condition=e,this._parameters=t}reset(){this._initialized=!1}get condition(){return this._condition}set condition(e){this._condition=e}get parameters(){return this._parameters}set parameters(e){this._parameters=e}evaluate(e){switch(this._condition){case"satisfied":return!0===e.objectiveSatisfiedStatus||e.successStatus===P;case"objectiveStatusKnown":return e.objectiveSatisfiedStatusKnown;case"objectiveMeasureKnown":return e.objectiveMeasureStatus;case"objectiveMeasureGreaterThan":{const t=this._parameters.get("threshold")||0;return e.objectiveMeasureStatus&&e.objectiveNormalizedMeasure>t}case"objectiveMeasureLessThan":{const t=this._parameters.get("threshold")||0;return e.objectiveMeasureStatus&&t>e.objectiveNormalizedMeasure}case"completed":return e.isCompleted;case"progressKnown":return e.completionStatus!==H;case"attempted":return e.attemptCount>0;case"notAttempted":return 0===e.attemptCount;case"always":return!0;default:return!1}}toJSON(){this.jsonString=!0;const result={condition:this._condition,parameters:Object.fromEntries(this._parameters)};return this.jsonString=!1,result}}class Dt extends d{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"satisfied",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"all",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;super("rollupRule"),It(this,"_conditions",[]),It(this,"_action","satisfied"),It(this,"_consideration","all"),It(this,"_minimumCount",0),It(this,"_minimumPercent",0),this._action=e,this._consideration=t,this._minimumCount=i,this._minimumPercent=s}reset(){this._initialized=!1,this._conditions=[]}get conditions(){return this._conditions}addCondition(e){if(!(e instanceof qt))throw new O(this._cmi_element+".conditions",j.TYPE_MISMATCH);this._conditions.push(e)}removeCondition(e){const t=this._conditions.indexOf(e);return-1!==t&&(this._conditions.splice(t,1),!0)}get action(){return this._action}set action(e){this._action=e}get consideration(){return this._consideration}set consideration(e){this._consideration=e}get minimumCount(){return this._minimumCount}set minimumCount(e){0>e||(this._minimumCount=e)}get minimumPercent(){return this._minimumPercent}set minimumPercent(e){0>e||e>100||(this._minimumPercent=e)}evaluate(e){if(0===e.length)return!1;const t=e.filter(e=>this._conditions.every(t=>t.evaluate(e)));switch(this._consideration){case"all":return t.length===e.length;case"any":return t.length>0;case"none":return 0===t.length;case"atLeastCount":return t.length>=this._minimumCount;case"atLeastPercent":return t.length/e.length*100>=this._minimumPercent;default:return!1}}toJSON(){this.jsonString=!0;const result={conditions:this._conditions,action:this._action,consideration:this._consideration,minimumCount:this._minimumCount,minimumPercent:this._minimumPercent};return this.jsonString=!1,result}}class Lt extends d{constructor(){super("rollupRules"),It(this,"_rules",[])}reset(){this._initialized=!1,this._rules=[]}get rules(){return this._rules}addRule(e){if(!(e instanceof Dt))throw new O(this._cmi_element+".rules",j.TYPE_MISMATCH);this._rules.push(e)}removeRule(e){const t=this._rules.indexOf(e);return-1!==t&&(this._rules.splice(t,1),!0)}processRollup(e){if(!e||0===e.children.length)return;const t=e.getAvailableChildren();let i=!1,s=!1;if(e.sequencingControls.rollupObjectiveSatisfied&&null!==this._objectiveRollupUsingMeasure(e,t)&&(s=!0),!s)for(const r of this._rules)if(r.evaluate(t))switch(r.action){case"satisfied":e.successStatus=P,s=!0;break;case"notSatisfied":e.successStatus=z,s=!0;break;case"completed":e.completionStatus=k,e.isCompleted=!0,i=!0;break;case"incomplete":e.completionStatus=V,e.isCompleted=!1,i=!0}i||this._defaultCompletionRollup(e,t),s||this._defaultSuccessRollup(e,t)}_defaultCompletionRollup(e,t){t.every(e=>e.isCompleted)?(e.completionStatus=k,e.isCompleted=!0):t.some(e=>e.completionStatus===V)&&(e.completionStatus=V,e.isCompleted=!1)}_objectiveRollupUsingMeasure(e,t){if(0>=e.sequencingControls.objectiveMeasureWeight)return null;let i=0,s=0,r=!1;for(const e of t)if(e.sequencingControls.rollupObjectiveSatisfied&&e.objectiveMeasureStatus&&!0===e.objectiveMeasureStatus){const t=e.sequencingControls.objectiveMeasureWeight;t>0&&(s+=e.objectiveNormalizedMeasure*t,i+=t,r=!0)}if(!r||0===i)return null;const n=s/i;return e.objectiveNormalizedMeasure=n,e.objectiveMeasureStatus=!0,e.scaledPassingScore>n?(e.successStatus=z,e.objectiveSatisfiedStatus=!1,!1):(e.successStatus=P,e.objectiveSatisfiedStatus=!0,!0)}_defaultSuccessRollup(e,t){t.every(e=>e.successStatus===P)?e.successStatus=P:t.some(e=>e.successStatus===z)&&(e.successStatus=z)}toJSON(){this.jsonString=!0;const result={rules:this._rules};return this.jsonString=!1,result}}var Pt=Object.defineProperty,zt=(e,t,i)=>((e,t,i)=>t in e?Pt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Ft{constructor(id){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};zt(this,"_id"),zt(this,"_description"),zt(this,"_satisfiedByMeasure"),zt(this,"_minNormalizedMeasure"),zt(this,"_mapInfo"),zt(this,"_isPrimary"),zt(this,"_satisfiedStatus",!1),zt(this,"_satisfiedStatusKnown",!1),zt(this,"_measureStatus",!1),zt(this,"_normalizedMeasure",0),zt(this,"_progressMeasure",0),zt(this,"_progressMeasureStatus",!1),zt(this,"_completionStatus",H),zt(this,"_progressStatus",!1),zt(this,"_satisfiedStatusDirty",!1),zt(this,"_normalizedMeasureDirty",!1),zt(this,"_completionStatusDirty",!1),zt(this,"_progressMeasureDirty",!1),this._id=id,this._description=e.description??null,this._satisfiedByMeasure=e.satisfiedByMeasure??!1,this._minNormalizedMeasure=e.minNormalizedMeasure??null,this._mapInfo=e.mapInfo?[...e.mapInfo]:[],this._isPrimary=e.isPrimary??!1}get id(){return this._id}get description(){return this._description}get satisfiedByMeasure(){return this._satisfiedByMeasure}set satisfiedByMeasure(e){this._satisfiedByMeasure=e}get minNormalizedMeasure(){return this._minNormalizedMeasure}set minNormalizedMeasure(e){this._minNormalizedMeasure=e}get mapInfo(){return this._mapInfo}set mapInfo(e){this._mapInfo=[...e]}get isPrimary(){return this._isPrimary}set isPrimary(e){this._isPrimary=e}get satisfiedStatus(){return this._satisfiedStatus}set satisfiedStatus(e){this._satisfiedStatus!==e&&(this._satisfiedStatus=e,this._satisfiedStatusDirty=!0)}get satisfiedStatusKnown(){return this._satisfiedStatusKnown}set satisfiedStatusKnown(e){this._satisfiedStatusKnown=e}get measureStatus(){return this._measureStatus}set measureStatus(e){this._measureStatus=e}get normalizedMeasure(){return this._normalizedMeasure}set normalizedMeasure(e){this._normalizedMeasure!==e&&(this._normalizedMeasure=e,this._normalizedMeasureDirty=!0)}get progressMeasure(){return this._progressMeasure}set progressMeasure(e){this._progressMeasure!==e&&(this._progressMeasure=e,this._progressMeasureDirty=!0)}get progressMeasureStatus(){return this._progressMeasureStatus}set progressMeasureStatus(e){this._progressMeasureStatus=e}get completionStatus(){return this._completionStatus}set completionStatus(e){this._completionStatus!==e&&(this._completionStatus=e,this._completionStatusDirty=!0)}get progressStatus(){return this._progressStatus}set progressStatus(e){this._progressStatus=e}isDirty(e){switch(e){case"satisfiedStatus":return this._satisfiedStatusDirty;case"normalizedMeasure":return this._normalizedMeasureDirty;case"completionStatus":return this._completionStatusDirty;case"progressMeasure":return this._progressMeasureDirty}}clearDirty(e){switch(e){case"satisfiedStatus":this._satisfiedStatusDirty=!1;break;case"normalizedMeasure":this._normalizedMeasureDirty=!1;break;case"completionStatus":this._completionStatusDirty=!1;break;case"progressMeasure":this._progressMeasureDirty=!1}}clearAllDirty(){this._satisfiedStatusDirty=!1,this._normalizedMeasureDirty=!1,this._completionStatusDirty=!1,this._progressMeasureDirty=!1}initializeFromCMI(e,t,i){this._satisfiedStatus=e,this._satisfiedStatusDirty=!0,this._normalizedMeasure=t,this._normalizedMeasureDirty=!0,this._measureStatus=i}resetState(){this._satisfiedStatus=!1,this._satisfiedStatusKnown=!1,this._measureStatus=!1,this._normalizedMeasure=0,this._progressMeasure=0,this._progressMeasureStatus=!1,this._completionStatus=H,this._progressStatus=!1,this.clearAllDirty()}updateFromActivity(e){this._satisfiedStatus!==e.objectiveSatisfiedStatus&&(this._satisfiedStatus=e.objectiveSatisfiedStatus,this._satisfiedStatusDirty=!0),this._satisfiedStatusKnown=e.objectiveSatisfiedStatusKnown,this._measureStatus=e.objectiveMeasureStatus,this._normalizedMeasure!==e.objectiveNormalizedMeasure&&(this._normalizedMeasure=e.objectiveNormalizedMeasure,this._normalizedMeasureDirty=!0),this._progressMeasure!==e.progressMeasure&&(this._progressMeasure=e.progressMeasure,this._progressMeasureDirty=!0),this._progressMeasureStatus=e.progressMeasureStatus,this._completionStatus!==e.completionStatus&&(this._completionStatus=e.completionStatus,this._completionStatusDirty=!0)}applyToActivity(e){this._isPrimary&&e.setPrimaryObjectiveState(this._satisfiedStatus,this._measureStatus,this._normalizedMeasure,this._progressMeasure,this._progressMeasureStatus,this._completionStatus)}}class kt extends d{constructor(){let id=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";super("activity"),zt(this,"_id",""),zt(this,"_title",""),zt(this,"_children",[]),zt(this,"_parent",null),zt(this,"_isVisible",!0),zt(this,"_isActive",!1),zt(this,"_isSuspended",!1),zt(this,"_isCompleted",!1),zt(this,"_completionStatus",H),zt(this,"_successStatus",F),zt(this,"_attemptCount",0),zt(this,"_attemptCompletionAmount",0),zt(this,"_attemptAbsoluteDuration","PT0H0M0S"),zt(this,"_attemptExperiencedDuration","PT0H0M0S"),zt(this,"_activityAbsoluteDuration","PT0H0M0S"),zt(this,"_activityExperiencedDuration","PT0H0M0S"),zt(this,"_attemptAbsoluteDurationValue","PT0H0M0S"),zt(this,"_attemptExperiencedDurationValue","PT0H0M0S"),zt(this,"_activityAbsoluteDurationValue","PT0H0M0S"),zt(this,"_activityExperiencedDurationValue","PT0H0M0S"),zt(this,"_activityStartTimestampUtc",null),zt(this,"_attemptStartTimestampUtc",null),zt(this,"_activityEndedDate",null),zt(this,"_objectiveSatisfiedStatus",!1),zt(this,"_objectiveSatisfiedStatusKnown",!1),zt(this,"_objectiveMeasureStatus",!1),zt(this,"_objectiveNormalizedMeasure",0),zt(this,"_scaledPassingScore",.7),zt(this,"_objectiveSatisfiedStatusDirty",!1),zt(this,"_objectiveNormalizedMeasureDirty",!1),zt(this,"_objectiveMeasureStatusDirty",!1),zt(this,"_progressMeasure",0),zt(this,"_progressMeasureStatus",!1),zt(this,"_location",""),zt(this,"_attemptAbsoluteStartTime",""),zt(this,"_learnerPrefs",null),zt(this,"_activityAttemptActive",!1),zt(this,"_isHiddenFromChoice",!1),zt(this,"_isAvailable",!0),zt(this,"_hideLmsUi",[]),zt(this,"_auxiliaryResources",[]),zt(this,"_attemptLimit",null),zt(this,"_attemptAbsoluteDurationLimit",null),zt(this,"_activityAbsoluteDurationLimit",null),zt(this,"_timeLimitAction",null),zt(this,"_timeLimitDuration",null),zt(this,"_beginTimeLimit",null),zt(this,"_endTimeLimit",null),zt(this,"_launchData",""),zt(this,"_credit","credit"),zt(this,"_maxTimeAllowed",""),zt(this,"_completionThreshold",""),zt(this,"_sequencingControls"),zt(this,"_sequencingRules"),zt(this,"_rollupRules"),zt(this,"_processedChildren",null),zt(this,"_isNewAttempt",!1),zt(this,"_primaryObjective",null),zt(this,"_objectives",[]),zt(this,"_rollupConsiderations",{requiredForSatisfied:"always",requiredForNotSatisfied:"always",requiredForCompleted:"always",requiredForIncomplete:"always",measureSatisfactionIfActive:!0}),zt(this,"_requiredForSatisfied","always"),zt(this,"_requiredForNotSatisfied","always"),zt(this,"_requiredForCompleted","always"),zt(this,"_requiredForIncomplete","always"),zt(this,"_wasSkipped",!1),zt(this,"_attemptProgressStatus",!1),zt(this,"_wasAutoCompleted",!1),zt(this,"_wasAutoSatisfied",!1),zt(this,"_completedByMeasure",!1),zt(this,"_minProgressMeasure",1),zt(this,"_progressWeight",1),zt(this,"_attemptCompletionAmountStatus",!1),this._id=id,this._title=e,this._sequencingControls=new Ge,this._sequencingRules=new Re,this._rollupRules=new Lt,this._primaryObjective=null,this._objectives=[]}initialize(){super.initialize();for(const e of this._children)e.initialize()}reset(){this._initialized=!1,this._isActive=!1,this._isSuspended=!1,this._isCompleted=!1,this._completionStatus=H,this._successStatus=F,this._attemptCount=0,this._attemptCompletionAmount=0,this._attemptAbsoluteDuration="PT0H0M0S",this._attemptExperiencedDuration="PT0H0M0S",this._activityAbsoluteDuration="PT0H0M0S",this._activityExperiencedDuration="PT0H0M0S",this._attemptAbsoluteDurationValue="PT0H0M0S",this._attemptExperiencedDurationValue="PT0H0M0S",this._activityAbsoluteDurationValue="PT0H0M0S",this._activityExperiencedDurationValue="PT0H0M0S",this._activityStartTimestampUtc=null,this._attemptStartTimestampUtc=null,this._activityEndedDate=null,this._objectiveSatisfiedStatus=!1,this._objectiveSatisfiedStatusKnown=!1,this._objectiveMeasureStatus=!1,this._objectiveNormalizedMeasure=0,this._progressMeasure=0,this._progressMeasureStatus=!1,this._location="",this._attemptAbsoluteStartTime="",this._learnerPrefs=null,this._activityAttemptActive=!1,this._primaryObjective&&(this._primaryObjective.resetState(),this._primaryObjective.updateFromActivity(this));for(const e of this._objectives)e.resetState();for(const e of this._children)e.reset();this._wasSkipped=!1,this._attemptProgressStatus=!1,this._wasAutoCompleted=!1,this._wasAutoSatisfied=!1,this._completedByMeasure=!1,this._minProgressMeasure=1,this._progressWeight=1,this._attemptCompletionAmountStatus=!1,this.clearAllObjectiveDirty()}get id(){return this._id}set id(id){Rt(this._cmi_element+".id",id,ce)&&(this._id=id)}get title(){return this._title}set title(e){Rt(this._cmi_element+".title",e,ie)&&(this._title=e)}get children(){return this._children}addChild(e){if(!(e instanceof kt))throw new O(this._cmi_element+".children",j.TYPE_MISMATCH);e._parent=this,this._children.push(e)}setChildOrder(e){if(0===e.length)return;const t=new Map(this._children.map(e=>[e.id,e])),i=[];for(const id of e){const e=t.get(id);e&&(i.push(e),t.delete(id))}if(t.size>0)for(const e of this._children)t.has(e.id)&&(i.push(e),t.delete(e.id));i.length===this._children.length&&this._children.splice(0,this._children.length,...i)}removeChild(e){const t=this._children.indexOf(e);return-1!==t&&(this._children.splice(t,1),e._parent=null,!0)}get parent(){return this._parent}get isVisible(){return this._isVisible}set isVisible(e){this._isVisible=e}get isActive(){return this._isActive}set isActive(e){this._isActive=e}get isSuspended(){return this._isSuspended}set isSuspended(e){this._isSuspended=e}get isCompleted(){return this._isCompleted}set isCompleted(e){this._isCompleted=e,this._completionStatus=e?k:V}get completionStatus(){return this._completionStatus}set completionStatus(e){this._completionStatus=e,this._isCompleted=e===k,this.updatePrimaryObjectiveFromActivity()}get successStatus(){return this._successStatus}set successStatus(e){this._successStatus=e}get attemptCount(){return this._attemptCount}set attemptCount(e){this._attemptCount=e}get attemptCompletionAmount(){return this._attemptCompletionAmount}set attemptCompletionAmount(e){this._attemptCompletionAmount=e}incrementAttemptCount(){this._attemptCount++,this._isNewAttempt=!0;const e=this._sequencingControls;"onEachNewAttempt"!==e.selectionTiming&&"onEachNewAttempt"!==e.randomizationTiming||(this._processedChildren=null)}get objectiveSatisfiedStatus(){return this._objectiveSatisfiedStatus}set objectiveSatisfiedStatus(e){this._objectiveSatisfiedStatus!==e&&(this._objectiveSatisfiedStatus=e,this._objectiveSatisfiedStatusDirty=!0),this._objectiveSatisfiedStatusKnown=!0,this._successStatus=e?P:z,this.updatePrimaryObjectiveFromActivity()}get objectiveSatisfiedStatusKnown(){return this._objectiveSatisfiedStatusKnown}set objectiveSatisfiedStatusKnown(e){this._objectiveSatisfiedStatusKnown=e}get objectiveMeasureStatus(){return this._objectiveMeasureStatus}set objectiveMeasureStatus(e){this._objectiveMeasureStatus!==e&&(this._objectiveMeasureStatus=e,this._objectiveMeasureStatusDirty=!0),this.updatePrimaryObjectiveFromActivity()}get objectiveNormalizedMeasure(){return this._objectiveNormalizedMeasure}set objectiveNormalizedMeasure(e){this._objectiveNormalizedMeasure!==e&&(this._objectiveNormalizedMeasure=e,this._objectiveNormalizedMeasureDirty=!0),this.updatePrimaryObjectiveFromActivity()}get scaledPassingScore(){return this._scaledPassingScore}set scaledPassingScore(e){-1>e||e>1||(this._scaledPassingScore=e)}get progressMeasure(){return this._progressMeasure}set progressMeasure(e){this._progressMeasure=e,this.updatePrimaryObjectiveFromActivity()}get progressMeasureStatus(){return this._progressMeasureStatus}set progressMeasureStatus(e){this._progressMeasureStatus=e,this.updatePrimaryObjectiveFromActivity()}get location(){return this._location}set location(location){this._location=location}get attemptAbsoluteStartTime(){return this._attemptAbsoluteStartTime}set attemptAbsoluteStartTime(e){this._attemptAbsoluteStartTime=e}get learnerPrefs(){return this._learnerPrefs}set learnerPrefs(e){this._learnerPrefs=e}get activityAttemptActive(){return this._activityAttemptActive}set activityAttemptActive(e){this._activityAttemptActive=e}get isHiddenFromChoice(){return this._isHiddenFromChoice}set isHiddenFromChoice(e){this._isHiddenFromChoice=e}get isAvailable(){return this._isAvailable}set isAvailable(e){this._isAvailable=e}get attemptLimit(){return this._attemptLimit}set attemptLimit(e){this._attemptLimit=e}hasAttemptLimitExceeded(){return null!==this._attemptLimit&&this._attemptCount>=this._attemptLimit}get timeLimitDuration(){return this._timeLimitDuration}set timeLimitDuration(e){this._timeLimitDuration=e}get timeLimitAction(){return this._timeLimitAction}set timeLimitAction(e){this._timeLimitAction=e}get beginTimeLimit(){return this._beginTimeLimit}set beginTimeLimit(e){this._beginTimeLimit=e}get endTimeLimit(){return this._endTimeLimit}set endTimeLimit(e){this._endTimeLimit=e}get attemptAbsoluteDurationLimit(){return this._attemptAbsoluteDurationLimit}set attemptAbsoluteDurationLimit(e){if(null!==e&&!n(e,ne))throw new O(this._cmi_element+".attemptAbsoluteDurationLimit",j.TYPE_MISMATCH);this._attemptAbsoluteDurationLimit=e}get attemptExperiencedDuration(){return this._attemptExperiencedDuration}set attemptExperiencedDuration(e){if(!n(e,ne))throw new O(this._cmi_element+".attemptExperiencedDuration",j.TYPE_MISMATCH);this._attemptExperiencedDuration=e}get activityAbsoluteDurationLimit(){return this._activityAbsoluteDurationLimit}set activityAbsoluteDurationLimit(e){if(null!==e&&!n(e,ne))throw new O(this._cmi_element+".activityAbsoluteDurationLimit",j.TYPE_MISMATCH);this._activityAbsoluteDurationLimit=e}get activityExperiencedDuration(){return this._activityExperiencedDuration}set activityExperiencedDuration(e){if(!n(e,ne))throw new O(this._cmi_element+".activityExperiencedDuration",j.TYPE_MISMATCH);this._activityExperiencedDuration=e}get attemptAbsoluteDuration(){return this._attemptAbsoluteDurationLimit||"PT0H0M0S"}set attemptAbsoluteDuration(e){this._attemptAbsoluteDurationLimit=e}get activityAbsoluteDuration(){return this._activityAbsoluteDurationLimit||"PT0H0M0S"}set activityAbsoluteDuration(e){this._activityAbsoluteDurationLimit=e}get attemptAbsoluteDurationValue(){return this._attemptAbsoluteDurationValue}set attemptAbsoluteDurationValue(e){if(!n(e,ne))throw new O(this._cmi_element+".attemptAbsoluteDurationValue",j.TYPE_MISMATCH);this._attemptAbsoluteDurationValue=e}get attemptExperiencedDurationValue(){return this._attemptExperiencedDurationValue}set attemptExperiencedDurationValue(e){if(!n(e,ne))throw new O(this._cmi_element+".attemptExperiencedDurationValue",j.TYPE_MISMATCH);this._attemptExperiencedDurationValue=e}get activityAbsoluteDurationValue(){return this._activityAbsoluteDurationValue}set activityAbsoluteDurationValue(e){if(!n(e,ne))throw new O(this._cmi_element+".activityAbsoluteDurationValue",j.TYPE_MISMATCH);this._activityAbsoluteDurationValue=e}get activityExperiencedDurationValue(){return this._activityExperiencedDurationValue}set activityExperiencedDurationValue(e){if(!n(e,ne))throw new O(this._cmi_element+".activityExperiencedDurationValue",j.TYPE_MISMATCH);this._activityExperiencedDurationValue=e}get activityStartTimestampUtc(){return this._activityStartTimestampUtc}set activityStartTimestampUtc(timestamp){this._activityStartTimestampUtc=timestamp}get attemptStartTimestampUtc(){return this._attemptStartTimestampUtc}set attemptStartTimestampUtc(timestamp){this._attemptStartTimestampUtc=timestamp}get activityEndedDate(){return this._activityEndedDate}set activityEndedDate(e){this._activityEndedDate=e}get sequencingControls(){return this._sequencingControls}set sequencingControls(e){this._sequencingControls=e}get sequencingRules(){return this._sequencingRules}set sequencingRules(e){this._sequencingRules=e}get rollupRules(){return this._rollupRules}set rollupRules(e){this._rollupRules=e}get rollupConsiderations(){return{...this._rollupConsiderations}}set rollupConsiderations(e){this._rollupConsiderations={...e}}applyRollupConsiderations(e){this._rollupConsiderations={...this._rollupConsiderations,...e}}get requiredForSatisfied(){return this._requiredForSatisfied}set requiredForSatisfied(e){this._requiredForSatisfied=e}get requiredForNotSatisfied(){return this._requiredForNotSatisfied}set requiredForNotSatisfied(e){this._requiredForNotSatisfied=e}get requiredForCompleted(){return this._requiredForCompleted}set requiredForCompleted(e){this._requiredForCompleted=e}get requiredForIncomplete(){return this._requiredForIncomplete}set requiredForIncomplete(e){this._requiredForIncomplete=e}get wasSkipped(){return this._wasSkipped}set wasSkipped(e){this._wasSkipped=e}get attemptProgressStatus(){return this._attemptProgressStatus}set attemptProgressStatus(e){this._attemptProgressStatus=e}get wasAutoCompleted(){return this._wasAutoCompleted}set wasAutoCompleted(e){this._wasAutoCompleted=e}get wasAutoSatisfied(){return this._wasAutoSatisfied}set wasAutoSatisfied(e){this._wasAutoSatisfied=e}get completedByMeasure(){return this._completedByMeasure}set completedByMeasure(e){this._completedByMeasure=e}get minProgressMeasure(){return this._minProgressMeasure}set minProgressMeasure(e){if(0>e||e>1)throw new O(this._cmi_element+".minProgressMeasure",j.TYPE_MISMATCH);this._minProgressMeasure=e}get progressWeight(){return this._progressWeight}set progressWeight(e){if(0>e)throw new O(this._cmi_element+".progressWeight",j.TYPE_MISMATCH);this._progressWeight=e}get attemptCompletionAmountStatus(){return this._attemptCompletionAmountStatus}set attemptCompletionAmountStatus(e){this._attemptCompletionAmountStatus=e}get primaryObjective(){return this._primaryObjective}set primaryObjective(e){this._primaryObjective=e,this._primaryObjective&&(this._primaryObjective.isPrimary=!0,null!==this._primaryObjective.minNormalizedMeasure&&(this._scaledPassingScore=this._primaryObjective.minNormalizedMeasure??this._scaledPassingScore),this._primaryObjective.updateFromActivity(this)),this.syncPrimaryObjectiveCollection()}get objectives(){return this._objectives.filter(e=>e.id!==this._primaryObjective?.id)}set objectives(objectives){this._objectives=[...objectives],this.syncPrimaryObjectiveCollection()}addObjective(e){this._objectives.find(t=>t.id===e.id)||this._objectives.push(e)}syncPrimaryObjectiveCollection(){if(!this._primaryObjective)return void(this._objectives=this._objectives.filter(e=>!e.isPrimary));const e=this._objectives.findIndex(e=>e.id===this._primaryObjective?.id);0>e?this._objectives=[this._primaryObjective,...this._objectives]:this._objectives[e]=this._primaryObjective}getObjectiveById(e){if(this._primaryObjective?.id===e)return{objective:this._primaryObjective,isPrimary:!0};const t=this._objectives.find(t=>t.id===e);return t?{objective:t,isPrimary:!1}:null}getAllObjectives(){const objectives=[];this._primaryObjective&&objectives.push(this._primaryObjective);const e=this._objectives.filter(e=>e!==this._primaryObjective&&e.id!==this._primaryObjective?.id);return objectives.concat(e)}updatePrimaryObjectiveFromActivity(){this._primaryObjective&&this._primaryObjective.updateFromActivity(this)}isObjectiveDirty(e){switch(e){case"satisfiedStatus":return this._objectiveSatisfiedStatusDirty;case"normalizedMeasure":return this._objectiveNormalizedMeasureDirty;case"measureStatus":return this._objectiveMeasureStatusDirty}}clearObjectiveDirty(e){switch(e){case"satisfiedStatus":this._objectiveSatisfiedStatusDirty=!1;break;case"normalizedMeasure":this._objectiveNormalizedMeasureDirty=!1;break;case"measureStatus":this._objectiveMeasureStatusDirty=!1}}clearAllObjectiveDirty(){this._objectiveSatisfiedStatusDirty=!1,this._objectiveNormalizedMeasureDirty=!1,this._objectiveMeasureStatusDirty=!1}setPrimaryObjectiveState(e,t,i,s,r,n){this._objectiveSatisfiedStatus!==e&&(this._objectiveSatisfiedStatus=e,this._objectiveSatisfiedStatusDirty=!0),this._objectiveSatisfiedStatusKnown=!0,this._objectiveMeasureStatus!==t&&(this._objectiveMeasureStatus=t,this._objectiveMeasureStatusDirty=!0),this._objectiveNormalizedMeasure!==i&&(this._objectiveNormalizedMeasure=i,this._objectiveNormalizedMeasureDirty=!0),this._progressMeasure=s,this._progressMeasureStatus=r,this._completionStatus=n,this._primaryObjective&&(this._primaryObjective.satisfiedStatus=e,this._primaryObjective.measureStatus=t,this._primaryObjective.normalizedMeasure=i,this._primaryObjective.progressMeasure=s,this._primaryObjective.progressMeasureStatus=r,this._primaryObjective.completionStatus=n)}getObjectiveStateSnapshot(){return{primary:this._primaryObjective?{id:this._primaryObjective.id,satisfiedStatus:this.objectiveSatisfiedStatus,measureStatus:this.objectiveMeasureStatus,normalizedMeasure:this.objectiveNormalizedMeasure,progressMeasure:this.progressMeasure??0,progressMeasureStatus:this.progressMeasureStatus,progressStatus:this._primaryObjective.progressStatus,completionStatus:this.completionStatus,satisfiedByMeasure:this._primaryObjective.satisfiedByMeasure,minNormalizedMeasure:this._primaryObjective.minNormalizedMeasure}:null,objectives:this._objectives.map(e=>({id:e.id,satisfiedStatus:e.satisfiedStatus,measureStatus:e.measureStatus,normalizedMeasure:e.normalizedMeasure,progressMeasure:e.progressMeasure,progressMeasureStatus:e.progressMeasureStatus,progressStatus:e.progressStatus,completionStatus:e.completionStatus,satisfiedByMeasure:e.satisfiedByMeasure,minNormalizedMeasure:e.minNormalizedMeasure}))}}applyObjectiveStateSnapshot(e){if(e.primary){const t=this.getObjectiveById(e.primary.id);if(t&&t.isPrimary){const i=e.primary;t.objective.satisfiedByMeasure=i.satisfiedByMeasure??t.objective.satisfiedByMeasure,t.objective.minNormalizedMeasure=void 0!==i.minNormalizedMeasure?i.minNormalizedMeasure:t.objective.minNormalizedMeasure,this.setPrimaryObjectiveState(i.satisfiedStatus,i.measureStatus,i.normalizedMeasure,i.progressMeasure,i.progressMeasureStatus,i.completionStatus)}}for(const t of e.objectives){const e=this.getObjectiveById(t.id);if(e&&!e.isPrimary){const i=e.objective;i.satisfiedStatus=t.satisfiedStatus,i.measureStatus=t.measureStatus,i.normalizedMeasure=t.normalizedMeasure,i.progressMeasure=t.progressMeasure,i.progressMeasureStatus=t.progressMeasureStatus,i.completionStatus=t.completionStatus,i.satisfiedByMeasure=t.satisfiedByMeasure??i.satisfiedByMeasure,i.minNormalizedMeasure=void 0!==t.minNormalizedMeasure?t.minNormalizedMeasure:i.minNormalizedMeasure}}}getAvailableChildren(){return 0===this._children.length?[]:null!==this._processedChildren?this._processedChildren:this._children}setProcessedChildren(e){this._processedChildren=e}resetProcessedChildren(){this._processedChildren=null}get isNewAttempt(){return this._isNewAttempt}set isNewAttempt(e){this._isNewAttempt=e}get launchData(){return this._launchData}set launchData(e){this._launchData=e}get credit(){return this._credit}set credit(credit){this._credit=credit}get maxTimeAllowed(){return this._maxTimeAllowed}set maxTimeAllowed(e){this._maxTimeAllowed=e}get completionThreshold(){return this._completionThreshold}set completionThreshold(e){this._completionThreshold=e}getSuspensionState(){return{id:this._id,title:this._title,isVisible:this._isVisible,isActive:this._isActive,isSuspended:this._isSuspended,isCompleted:this._isCompleted,completionStatus:this._completionStatus,successStatus:this._successStatus,attemptCount:this._attemptCount,attemptCompletionAmount:this._attemptCompletionAmount,attemptAbsoluteDuration:this._attemptAbsoluteDuration,attemptExperiencedDuration:this._attemptExperiencedDuration,activityAbsoluteDuration:this._activityAbsoluteDuration,activityExperiencedDuration:this._activityExperiencedDuration,attemptAbsoluteDurationValue:this._attemptAbsoluteDurationValue,attemptExperiencedDurationValue:this._attemptExperiencedDurationValue,activityAbsoluteDurationValue:this._activityAbsoluteDurationValue,activityExperiencedDurationValue:this._activityExperiencedDurationValue,activityStartTimestampUtc:this._activityStartTimestampUtc,attemptStartTimestampUtc:this._attemptStartTimestampUtc,objectiveSatisfiedStatus:this._objectiveSatisfiedStatus,objectiveSatisfiedStatusKnown:this._objectiveSatisfiedStatusKnown,objectiveMeasureStatus:this._objectiveMeasureStatus,objectiveNormalizedMeasure:this._objectiveNormalizedMeasure,scaledPassingScore:this._scaledPassingScore,progressMeasure:this._progressMeasure,progressMeasureStatus:this._progressMeasureStatus,location:this._location,attemptAbsoluteStartTime:this._attemptAbsoluteStartTime,activityAttemptActive:this._activityAttemptActive,isHiddenFromChoice:this._isHiddenFromChoice,isAvailable:this._isAvailable,rollupConsiderations:{...this._rollupConsiderations},wasSkipped:this._wasSkipped,attemptProgressStatus:this._attemptProgressStatus,wasAutoCompleted:this._wasAutoCompleted,wasAutoSatisfied:this._wasAutoSatisfied,completedByMeasure:this._completedByMeasure,minProgressMeasure:this._minProgressMeasure,progressWeight:this._progressWeight,attemptCompletionAmountStatus:this._attemptCompletionAmountStatus,processedChildren:this._processedChildren?this._processedChildren.map(e=>e.id):null,isNewAttempt:this._isNewAttempt,selectionCountStatus:this._sequencingControls.selectionCountStatus,reorderChildren:this._sequencingControls.reorderChildren,primaryObjective:this._primaryObjective?{id:this._primaryObjective.id,satisfiedStatus:this._primaryObjective.satisfiedStatus,measureStatus:this._primaryObjective.measureStatus,normalizedMeasure:this._primaryObjective.normalizedMeasure,progressMeasure:this._primaryObjective.progressMeasure,progressMeasureStatus:this._primaryObjective.progressMeasureStatus,completionStatus:this._primaryObjective.completionStatus,satisfiedByMeasure:this._primaryObjective.satisfiedByMeasure,minNormalizedMeasure:this._primaryObjective.minNormalizedMeasure,progressStatus:this._primaryObjective.progressStatus,mapInfo:this._primaryObjective.mapInfo}:null,objectives:this._objectives.map(e=>({id:e.id,satisfiedStatus:e.satisfiedStatus,measureStatus:e.measureStatus,normalizedMeasure:e.normalizedMeasure,progressMeasure:e.progressMeasure,progressMeasureStatus:e.progressMeasureStatus,completionStatus:e.completionStatus,satisfiedByMeasure:e.satisfiedByMeasure,minNormalizedMeasure:e.minNormalizedMeasure,progressStatus:e.progressStatus,mapInfo:e.mapInfo})),children:this._children.map(e=>e.getSuspensionState())}}restoreSuspensionState(e){if(e){if(this._isVisible=e.isVisible??this._isVisible,this._isActive=e.isActive??this._isActive,this._isSuspended=e.isSuspended??this._isSuspended,this._isCompleted=e.isCompleted??this._isCompleted,this._completionStatus=e.completionStatus??this._completionStatus,this._successStatus=e.successStatus??this._successStatus,this._attemptCount=e.attemptCount??this._attemptCount,this._attemptCompletionAmount=e.attemptCompletionAmount??this._attemptCompletionAmount,this._attemptAbsoluteDuration=e.attemptAbsoluteDuration??this._attemptAbsoluteDuration,this._attemptExperiencedDuration=e.attemptExperiencedDuration??this._attemptExperiencedDuration,this._activityAbsoluteDuration=e.activityAbsoluteDuration??this._activityAbsoluteDuration,this._activityExperiencedDuration=e.activityExperiencedDuration??this._activityExperiencedDuration,this._attemptAbsoluteDurationValue=e.attemptAbsoluteDurationValue??this._attemptAbsoluteDurationValue,this._attemptExperiencedDurationValue=e.attemptExperiencedDurationValue??this._attemptExperiencedDurationValue,this._activityAbsoluteDurationValue=e.activityAbsoluteDurationValue??this._activityAbsoluteDurationValue,this._activityExperiencedDurationValue=e.activityExperiencedDurationValue??this._activityExperiencedDurationValue,this._activityStartTimestampUtc=e.activityStartTimestampUtc??this._activityStartTimestampUtc,this._attemptStartTimestampUtc=e.attemptStartTimestampUtc??this._attemptStartTimestampUtc,this._objectiveSatisfiedStatus=e.objectiveSatisfiedStatus??this._objectiveSatisfiedStatus,this._objectiveSatisfiedStatusKnown=e.objectiveSatisfiedStatusKnown??this._objectiveSatisfiedStatusKnown,this._objectiveMeasureStatus=e.objectiveMeasureStatus??this._objectiveMeasureStatus,this._objectiveNormalizedMeasure=e.objectiveNormalizedMeasure??this._objectiveNormalizedMeasure,this._scaledPassingScore=e.scaledPassingScore??this._scaledPassingScore,this._progressMeasure=e.progressMeasure??this._progressMeasure,this._progressMeasureStatus=e.progressMeasureStatus??this._progressMeasureStatus,this._location=e.location??this._location,this._attemptAbsoluteStartTime=e.attemptAbsoluteStartTime??this._attemptAbsoluteStartTime,this._activityAttemptActive=e.activityAttemptActive??this._activityAttemptActive,this._isHiddenFromChoice=e.isHiddenFromChoice??this._isHiddenFromChoice,this._isAvailable=e.isAvailable??this._isAvailable,e.rollupConsiderations&&(this._rollupConsiderations={...e.rollupConsiderations}),this._wasSkipped=e.wasSkipped??this._wasSkipped,this._attemptProgressStatus=e.attemptProgressStatus??this._attemptProgressStatus,this._wasAutoCompleted=e.wasAutoCompleted??this._wasAutoCompleted,this._wasAutoSatisfied=e.wasAutoSatisfied??this._wasAutoSatisfied,this._completedByMeasure=e.completedByMeasure??this._completedByMeasure,this._minProgressMeasure=e.minProgressMeasure??this._minProgressMeasure,this._progressWeight=e.progressWeight??this._progressWeight,this._attemptCompletionAmountStatus=e.attemptCompletionAmountStatus??this._attemptCompletionAmountStatus,this._isNewAttempt=e.isNewAttempt??this._isNewAttempt,void 0!==e.selectionCountStatus&&(this._sequencingControls.selectionCountStatus=e.selectionCountStatus),void 0!==e.reorderChildren&&(this._sequencingControls.reorderChildren=e.reorderChildren),e.processedChildren){const t=new Map(this._children.map(e=>[e.id,e]));this._processedChildren=e.processedChildren.map(id=>t.get(id)).filter(e=>void 0!==e)}else this._processedChildren=null;if(e.primaryObjective&&this._primaryObjective&&(this._primaryObjective.satisfiedStatus=e.primaryObjective.satisfiedStatus??this._primaryObjective.satisfiedStatus,this._primaryObjective.measureStatus=e.primaryObjective.measureStatus??this._primaryObjective.measureStatus,this._primaryObjective.normalizedMeasure=e.primaryObjective.normalizedMeasure??this._primaryObjective.normalizedMeasure,this._primaryObjective.progressMeasure=e.primaryObjective.progressMeasure??this._primaryObjective.progressMeasure,this._primaryObjective.progressMeasureStatus=e.primaryObjective.progressMeasureStatus??this._primaryObjective.progressMeasureStatus,this._primaryObjective.completionStatus=e.primaryObjective.completionStatus??this._primaryObjective.completionStatus,this._primaryObjective.progressStatus=e.primaryObjective.progressStatus??this._primaryObjective.progressStatus),e.objectives)for(const t of e.objectives){const e=this._objectives.find(e=>e.id===t.id);e&&(e.satisfiedStatus=t.satisfiedStatus??e.satisfiedStatus,e.measureStatus=t.measureStatus??e.measureStatus,e.normalizedMeasure=t.normalizedMeasure??e.normalizedMeasure,e.progressMeasure=t.progressMeasure??e.progressMeasure,e.progressMeasureStatus=t.progressMeasureStatus??e.progressMeasureStatus,e.completionStatus=t.completionStatus??e.completionStatus,e.progressStatus=t.progressStatus??e.progressStatus)}if(e.children&&Array.isArray(e.children))for(let t=0;e.children.length>t&&this._children.length>t;t++){const i=e.children[t],s=this._children.find(e=>e.id===i.id);s&&s.restoreSuspensionState(i)}}}toJSON(){this.jsonString=!0;const result={id:this._id,title:this._title,isVisible:this._isVisible,isActive:this._isActive,isSuspended:this._isSuspended,isCompleted:this._isCompleted,completionStatus:this._completionStatus,successStatus:this._successStatus,attemptCount:this._attemptCount,attemptCompletionAmount:this._attemptCompletionAmount,attemptAbsoluteDuration:this._attemptAbsoluteDuration,attemptExperiencedDuration:this._attemptExperiencedDuration,activityAbsoluteDuration:this._activityAbsoluteDuration,activityExperiencedDuration:this._activityExperiencedDuration,objectiveSatisfiedStatus:this._objectiveSatisfiedStatus,objectiveSatisfiedStatusKnown:this._objectiveSatisfiedStatusKnown,objectiveMeasureStatus:this._objectiveMeasureStatus,objectiveNormalizedMeasure:this._objectiveNormalizedMeasure,rollupConsiderations:{...this._rollupConsiderations},wasSkipped:this._wasSkipped,completedByMeasure:this._completedByMeasure,minProgressMeasure:this._minProgressMeasure,progressWeight:this._progressWeight,attemptCompletionAmountStatus:this._attemptCompletionAmountStatus,hideLmsUi:[...this._hideLmsUi],auxiliaryResources:this._auxiliaryResources.map(e=>({...e})),children:this._children.map(e=>e.toJSON())};return this.jsonString=!1,result}get auxiliaryResources(){return this._auxiliaryResources.map(e=>({...e}))}set auxiliaryResources(e){const t=[],i=new Set;for(const s of e||[]){if(!s)continue;const e="string"==typeof s.resourceId?s.resourceId.trim():"",r="string"==typeof s.purpose?s.purpose.trim():"";e&&!i.has(e)&&(i.add(e),t.push({resourceId:e,purpose:r}))}this._auxiliaryResources=t}addAuxiliaryResource(e){this.auxiliaryResources=[...this._auxiliaryResources,e]}captureRollupStatus(){return{measureStatus:this._objectiveMeasureStatus,normalizedMeasure:this._objectiveNormalizedMeasure,objectiveProgressStatus:null!=this._objectiveSatisfiedStatus,objectiveSatisfiedStatus:this._objectiveSatisfiedStatus,attemptProgressStatus:this._completionStatus!==H,attemptCompletionStatus:this._completionStatus===k}}static compareRollupStatus(e,t){return e.measureStatus===t.measureStatus&&1e-4>Math.abs(e.normalizedMeasure-t.normalizedMeasure)&&e.objectiveProgressStatus===t.objectiveProgressStatus&&e.objectiveSatisfiedStatus===t.objectiveSatisfiedStatus&&e.attemptProgressStatus===t.attemptProgressStatus&&e.attemptCompletionStatus===t.attemptCompletionStatus}get hideLmsUi(){return[...this._hideLmsUi]}set hideLmsUi(e){const t=new Set(be),i=new Set,s=[];for(const r of e)t.has(r)&&!i.has(r)&&(i.add(r),s.push(r));this._hideLmsUi=s}}class Vt{checkChildForRollupSubprocess(e,t,i){if(!1===e.sequencingControls.tracked)return!1;let s=!1;if("measure"===t||"objective"===t){if(!e.sequencingControls.rollupObjectiveSatisfied)return!1;s=!0;const t=e.requiredForSatisfied,r=e.requiredForNotSatisfied;"satisfied"===i&&"ifNotSuspended"===t||"notSatisfied"===i&&"ifNotSuspended"===r?(!e.attemptProgressStatus||e.attemptCount>0&&e.isSuspended)&&(s=!1):"satisfied"===i&&"ifAttempted"===t||"notSatisfied"===i&&"ifAttempted"===r?e.attemptProgressStatus&&0!==e.attemptCount||(s=!1):("satisfied"===i&&"ifNotSkipped"===t||"notSatisfied"===i&&"ifNotSkipped"===r)&&e.wasSkipped&&(s=!1)}if("progress"===t){if(!e.sequencingControls.rollupProgressCompletion)return!1;s=!0;const t=e.requiredForCompleted,r=e.requiredForIncomplete;"completed"===i&&"ifNotSuspended"===t||"incomplete"===i&&"ifNotSuspended"===r?(!e.attemptProgressStatus||e.attemptCount>0&&e.isSuspended)&&(s=!1):"completed"===i&&"ifAttempted"===t||"incomplete"===i&&"ifAttempted"===r?e.attemptProgressStatus&&0!==e.attemptCount||(s=!1):("completed"===i&&"ifNotSkipped"===t||"incomplete"===i&&"ifNotSkipped"===r)&&e.wasSkipped&&(s=!1)}return!(s&&!e.isAvailable)&&s}filterChildrenForRequirement(e,t,mode,i){return e.filter(e=>this.shouldIncludeChildForRollup(e,t,mode,i))}shouldIncludeChildForRollup(e,t,mode,i){return!(!this.checkChildForRollupSubprocess(e,t,mode)||"objective"===t&&!i.measureSatisfactionIfActive&&(e.activityAttemptActive||e.isActive))}isChildSatisfiedForRollup(e){return!0===e.objectiveSatisfiedStatus||!1!==e.objectiveSatisfiedStatus&&e.successStatus===P}isChildCompletedForRollup(e){return!("completed"!==e.completionStatus&&!e.isCompleted)}getTrackableChildren(e){return e.children.filter(e=>!1!==e.sequencingControls.tracked)}}var Ht=Object.defineProperty;class Bt{constructor(e){var t;((e,t,i)=>{t in e?Ht(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i})(this,"childFilter"+"",t),this.childFilter=e}evaluateRollupRule(e,t){const i=e.getAvailableChildren();let s=0,r=0;for(const e of i){let i=!1;switch(t.action){case Nt.SATISFIED:i=this.childFilter.checkChildForRollupSubprocess(e,"objective","satisfied");break;case Nt.NOT_SATISFIED:i=this.childFilter.checkChildForRollupSubprocess(e,"objective","notSatisfied");break;case Nt.COMPLETED:i=this.childFilter.checkChildForRollupSubprocess(e,"progress","completed");break;case Nt.INCOMPLETE:i=this.childFilter.checkChildForRollupSubprocess(e,"progress","incomplete")}i&&(s++,this.evaluateRollupConditionsSubprocess(e,t)&&r++)}return t.consideration===xt.ALL?s>0&&r===s:null!==t.minimumCount?r>=t.minimumCount:null!==t.minimumPercent?(s>0?r/s:0)>=t.minimumPercent:s>0&&r===s}evaluateRollupConditionsSubprocess(e,t){if(0===t.conditions.length)return!0;switch(t.consideration){case xt.ALL:return t.conditions.every(t=>t.evaluate(e));case xt.ANY:return t.conditions.some(t=>t.evaluate(e));case xt.NONE:return!t.conditions.some(t=>t.evaluate(e));case xt.AT_LEAST_COUNT:case xt.AT_LEAST_PERCENT:return t.conditions.every(t=>t.evaluate(e));default:return!1}}evaluateRulesForAction(e,t,i){const s=t.filter(e=>e.action===i);if(0===s.length)return null;for(const t of s)if(this.evaluateRollupRule(e,t))return!0;return!1}}var Ut=Object.defineProperty,$t=(e,t,i)=>((e,t,i)=>t in e?Ut(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Gt{constructor(e,t){$t(this,"childFilter"),$t(this,"eventCallback"),this.childFilter=e,this.eventCallback=t||null}measureRollupProcess(e){if(!e.sequencingControls.rollupObjectiveSatisfied)return[];const t=e.getAvailableChildren();if(0===t.length)return[];const i=e.rollupConsiderations,s=t.filter(e=>!(!this.childFilter.checkChildForRollupSubprocess(e,"measure")||!e.objectiveMeasureStatus||null===e.objectiveNormalizedMeasure||!i.measureSatisfactionIfActive&&(e.activityAttemptActive||e.isActive)));if(0===s.length)return e.objectiveMeasureStatus=!1,[];const r=this.calculateComplexWeightedMeasure(e,s,{enableThresholdBias:!1});return e.objectiveNormalizedMeasure=r,e.objectiveMeasureStatus=!0,this.identifyActivityClusters(s)}completionMeasureRollupProcess(e){const t=e.getAvailableChildren();if(0===t.length)return;const i=t.filter(e=>e.attemptCompletionAmountStatus);if(0===i.length)return void(e.attemptCompletionAmountStatus=!1);let s=0,r=0;for(const e of i)s+=e.attemptCompletionAmount*e.progressWeight,r+=e.progressWeight;r>0&&(e.attemptCompletionAmount=s/r,e.attemptCompletionAmountStatus=!0)}calculateComplexWeightedMeasure(e,t,i){let s=0,r=0;const n=[],o=i?.enableThresholdBias??!0;for(const e of t)if(this.childFilter.checkChildForRollupSubprocess(e,"measure")&&e.objectiveMeasureStatus&&null!==e.objectiveNormalizedMeasure){const t=this.calculateAdjustedWeight(e,e.sequencingControls.objectiveMeasureWeight,o);s+=e.objectiveNormalizedMeasure*t,r+=t,n.push({childId:e.id,measure:e.objectiveNormalizedMeasure,weight:t})}return this.eventCallback?.("complex_weighting_calculated",{activityId:e.id,weightingDetails:n,totalWeight:r,totalWeightedMeasure:s,result:r>0?s/r:0}),r>0?s/r:0}calculateAdjustedWeight(e,t){let i=2>=arguments.length||void 0===arguments[2]||arguments[2],s=t;return"completed"!==e.completionStatus&&(s*=.8),e.attemptCount>1&&(s*=Math.max(.5,1-.1*(e.attemptCount-1))),e.hasAttemptLimitExceeded()&&(s*=.6),i&&e.objectiveMeasureStatus&&(s*=(e.scaledPassingScore??.7)>e.objectiveNormalizedMeasure?.95:1.05),Math.max(0,s)}identifyActivityClusters(e){const t=[];for(const i of e)i.children.length>0&&i.sequencingControls.flow&&t.push(i);return t}}var Yt=Object.defineProperty,Wt=(e,t,i)=>((e,t,i)=>t in e?Yt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Jt{constructor(e,t,i){Wt(this,"childFilter"),Wt(this,"ruleEvaluator"),Wt(this,"eventCallback"),this.childFilter=e,this.ruleEvaluator=t,this.eventCallback=i||null}objectiveRollupProcess(e){const t=this.objectiveRollupUsingRules(e,e.rollupRules.rules);if(null!==t)return e.objectiveSatisfiedStatus=t,void this.syncPrimaryObjectiveFromActivity(e);const i=this.objectiveRollupUsingMeasure(e);if(null!==i)return e.objectiveSatisfiedStatus=i,void this.syncPrimaryObjectiveFromActivity(e);e.objectiveSatisfiedStatus=this.objectiveRollupUsingDefault(e),this.syncPrimaryObjectiveFromActivity(e)}objectiveRollupUsingRules(e,t){const i=t.filter(e=>e.action===Nt.SATISFIED),s=t.filter(e=>e.action===Nt.NOT_SATISFIED);for(const t of i)if(this.ruleEvaluator.evaluateRollupRule(e,t))return!0;for(const t of s)if(this.ruleEvaluator.evaluateRollupRule(e,t))return!1;return null}objectiveRollupUsingMeasure(e){return e.objectiveMeasureStatus&&null!==e.scaledPassingScore?e.objectiveNormalizedMeasure>=e.scaledPassingScore:null}objectiveRollupUsingDefault(e){const t=e.getAvailableChildren();if(0===t.length)return!1;const i=e.rollupConsiderations,s=t.filter(e=>!(!this.childFilter.checkChildForRollupSubprocess(e,"objective","satisfied")||!this.childFilter.checkChildForRollupSubprocess(e,"objective","notSatisfied")||!i.measureSatisfactionIfActive&&(e.activityAttemptActive||e.isActive)));return 0!==s.length&&!s.some(e=>!this.childFilter.isChildSatisfiedForRollup(e))&&s.every(e=>this.childFilter.isChildSatisfiedForRollup(e))}syncPrimaryObjectiveFromActivity(e){e.primaryObjective&&(e.primaryObjective.satisfiedStatus=e.objectiveSatisfiedStatus,e.primaryObjective.satisfiedStatusKnown=e.objectiveSatisfiedStatusKnown,e.primaryObjective.measureStatus=e.objectiveMeasureStatus,e.primaryObjective.normalizedMeasure=e.objectiveNormalizedMeasure,e.primaryObjective.progressMeasure=e.progressMeasure,e.primaryObjective.progressMeasureStatus=e.progressMeasureStatus,e.primaryObjective.completionStatus=e.completionStatus)}}var Kt=Object.defineProperty,Xt=(e,t,i)=>((e,t,i)=>t in e?Kt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Qt{constructor(e,t,i,s){Xt(this,"childFilter"),Xt(this,"ruleEvaluator"),Xt(this,"objectiveProcessor"),Xt(this,"eventCallback"),this.childFilter=e,this.ruleEvaluator=t,this.objectiveProcessor=i,this.eventCallback=s||null}activityProgressRollupProcess(e){if(this.activityProgressRollupUsingMeasure(e))return;const t=e.rollupRules,i=t.rules.filter(e=>e.action===Nt.COMPLETED),s=t.rules.filter(e=>e.action===Nt.INCOMPLETE);for(const t of i)if(this.ruleEvaluator.evaluateRollupRule(e,t))return e.completionStatus=k,void this.objectiveProcessor.syncPrimaryObjectiveFromActivity(e);for(const t of s)if(this.ruleEvaluator.evaluateRollupRule(e,t))return e.completionStatus=V,void this.objectiveProcessor.syncPrimaryObjectiveFromActivity(e);const r=e.getAvailableChildren().filter(e=>this.childFilter.checkChildForRollupSubprocess(e,"progress","completed")&&this.childFilter.checkChildForRollupSubprocess(e,"progress","incomplete"));return 0===r.length||r.some(e=>!this.childFilter.isChildCompletedForRollup(e))?(e.completionStatus=V,void this.objectiveProcessor.syncPrimaryObjectiveFromActivity(e)):(e.completionStatus=k,void this.objectiveProcessor.syncPrimaryObjectiveFromActivity(e))}activityProgressRollupUsingMeasure(e){return!!e.completedByMeasure&&(e.attemptCompletionAmountStatus?(e.completionStatus=e.minProgressMeasure>e.attemptCompletionAmount?V:k,this.objectiveProcessor.syncPrimaryObjectiveFromActivity(e),!0):(e.completionStatus=H,this.objectiveProcessor.syncPrimaryObjectiveFromActivity(e),!0))}}var Zt=Object.defineProperty;class ei{constructor(e){var t;((e,t,i)=>{t in e?Zt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i})(this,"eventCallback"+"",t),this.eventCallback=e||null}durationRollupProcess(e){if(0===e.children.length)return;const t=e.getAvailableChildren();if(0===t.length)return;let s=null,n=null,o=null,a=null,c=0,l=0;for(const i of t){i.activityStartTimestampUtc&&(s&&i.activityStartTimestampUtc>=s||(s=i.activityStartTimestampUtc)),i.activityEndedDate&&(o&&o>=i.activityEndedDate||(o=i.activityEndedDate));const t="PT0H0M0S"!==i.activityExperiencedDurationValue?i.activityExperiencedDurationValue:i.activityExperiencedDuration;if(t&&"PT0H0M0S"!==t&&(c+=r(t,ne)),!e.attemptStartTimestampUtc||i.attemptStartTimestampUtc&&i.attemptStartTimestampUtc>=e.attemptStartTimestampUtc){i.attemptStartTimestampUtc&&(n&&i.attemptStartTimestampUtc>=n||(n=i.attemptStartTimestampUtc)),i.activityEndedDate&&(a&&a>=i.activityEndedDate||(a=i.activityEndedDate));const e="PT0H0M0S"!==i.attemptExperiencedDurationValue?i.attemptExperiencedDurationValue:i.attemptExperiencedDuration;e&&"PT0H0M0S"!==e&&(l+=r(e,ne))}}if(null!==s){if(e.activityStartTimestampUtc=s,!e.attemptStartTimestampUtc&&n&&(e.attemptStartTimestampUtc=n),e.activityEndedDate=o,o&&e.activityStartTimestampUtc){const t=new Date(e.activityStartTimestampUtc),s=o.getTime()-t.getTime();e.activityAbsoluteDurationValue=i(Math.max(0,s/1e3))}if(a&&e.attemptStartTimestampUtc){const t=new Date(e.attemptStartTimestampUtc),s=a.getTime()-t.getTime();e.attemptAbsoluteDurationValue=i(Math.max(0,s/1e3))}e.activityExperiencedDurationValue=i(c),e.attemptExperiencedDurationValue=i(l),this.eventCallback?.("duration_rollup_completed",{activityId:e.id,activityAbsoluteDuration:e.activityAbsoluteDurationValue,attemptAbsoluteDuration:e.attemptAbsoluteDurationValue,activityExperiencedDuration:e.activityExperiencedDurationValue,attemptExperiencedDuration:e.attemptExperiencedDurationValue,childCount:t.length})}}}var ti=Object.defineProperty,ii=(e,t,i)=>((e,t,i)=>t in e?ti(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class si{constructor(e,t,i,s){ii(this,"measureProcessor"),ii(this,"objectiveProcessor"),ii(this,"progressProcessor"),ii(this,"eventCallback"),ii(this,"processingClusters",new Set),this.measureProcessor=e,this.objectiveProcessor=t,this.progressProcessor=i,this.eventCallback=s||null}processCrossClusterDependencies(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(10>i)if(this.processingClusters.has(e.id))this.eventCallback?.("cross_cluster_skip_reentrant",{activityId:e.id});else try{this.processingClusters.add(e.id),this.eventCallback?.("cross_cluster_processing_started",{activityId:e.id,clusterCount:t.length,depth:i});const s=new Map;for(const e of t)this.analyzeCrossClusterDependencies(e,s);const r=this.resolveDependencyOrder(s);for(const e of r){const s=t.find(t=>t.id===e);s&&this.processClusterRollup(s,i)}this.eventCallback?.("cross_cluster_processing_completed",{activityId:e.id,processedClusters:r.length,dependencyMap:Array.from(s.entries())})}catch(t){this.eventCallback?.("cross_cluster_processing_error",{activityId:e.id,error:t instanceof Error?t.message:t+""})}finally{this.processingClusters.delete(e.id)}else this.eventCallback?.("cross_cluster_max_depth_reached",{activityId:e.id,depth:i,maxDepth:10})}identifyActivityClusters(e){const t=[];for(const i of e)i.children.length>0&&i.sequencingControls.flow&&t.push(i);return t}analyzeCrossClusterDependencies(e,t){t.set(e.id,[])}resolveDependencyOrder(e){const t=[],i=new Set,s=id=>{if(t.includes(id))return;if(i.has(id))return void this.eventCallback?.("circular_dependency_detected",{activityId:id});i.add(id);const r=e.get(id)||[];for(const e of r)s(e);i.delete(id),t.push(id)};for(const id of Array.from(e.keys()))s(id);return t}processClusterRollup(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const i=this.measureProcessor.measureRollupProcess(e);e.sequencingControls.rollupObjectiveSatisfied&&this.objectiveProcessor.objectiveRollupProcess(e),e.sequencingControls.rollupProgressCompletion&&this.progressProcessor.activityProgressRollupProcess(e),i.length>1&&this.processCrossClusterDependencies(e,i,t+1)}}var ri=Object.defineProperty;class ni{constructor(e){var t;((e,t,i)=>{t in e?ri(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i})(this,"eventCallback"+"",t),this.eventCallback=e||null}processGlobalObjectiveMapping(e,t){try{this.eventCallback?.("global_objective_processing_started",{activityId:e.id,globalObjectiveCount:t.size});const i=[];this.collectActivitiesRecursive(e,i);for(const e of i)this.syncGlobalObjectivesWritePhase(e,t);for(const e of i)this.syncGlobalObjectivesReadPhase(e,t);this.eventCallback?.("global_objective_processing_completed",{activityId:e.id,processedObjectives:t.size})}catch(t){this.eventCallback?.("global_objective_processing_error",{activityId:e.id,error:t instanceof Error?t.message:t+""})}}collectActivitiesRecursive(e,result){result.push(e);for(const t of e.children)this.collectActivitiesRecursive(t,result)}syncGlobalObjectivesWritePhase(e,t){const objectives=e.getAllObjectives();for(const i of objectives){const s=i.mapInfo.length>0?i.mapInfo:[this.createDefaultMapInfo(i)];for(const r of s){const s=this.ensureGlobalObjectiveEntry(t,r.targetObjectiveID||i.id,i);r.writeSatisfiedStatus&&i.measureStatus&&i.isDirty("satisfiedStatus")&&(s.satisfiedStatus=i.satisfiedStatus,s.satisfiedStatusKnown=!0,i.clearDirty("satisfiedStatus")),r.writeNormalizedMeasure&&i.measureStatus&&i.isDirty("normalizedMeasure")&&(s.normalizedMeasure=i.normalizedMeasure,s.normalizedMeasureKnown=!0,i.clearDirty("normalizedMeasure"),s.satisfiedByMeasure||i.satisfiedByMeasure)&&(s.satisfiedStatus=i.normalizedMeasure>=(i.minNormalizedMeasure??e.scaledPassingScore??.7),s.satisfiedStatusKnown=!0,i.clearDirty("satisfiedStatus")),r.writeCompletionStatus&&i.completionStatus!==H&&i.isDirty("completionStatus")&&(s.completionStatus=i.completionStatus,s.completionStatusKnown=!0,i.clearDirty("completionStatus")),r.writeProgressMeasure&&i.progressMeasureStatus&&i.isDirty("progressMeasure")&&(s.progressMeasure=i.progressMeasure,s.progressMeasureKnown=!0,i.clearDirty("progressMeasure")),r.updateAttemptData&&this.updateActivityAttemptData(e,s,i)}}}syncGlobalObjectivesReadPhase(e,t){const objectives=e.getAllObjectives();for(const i of objectives){const s=i.mapInfo.length>0?i.mapInfo:[this.createDefaultMapInfo(i)];for(const r of s){const s=t.get(r.targetObjectiveID||i.id);if(!s)continue;const n=i.isPrimary;r.readSatisfiedStatus&&s.satisfiedStatusKnown&&(i.satisfiedStatus=s.satisfiedStatus,i.measureStatus=!0),r.readNormalizedMeasure&&s.normalizedMeasureKnown&&(i.normalizedMeasure=s.normalizedMeasure,i.measureStatus=!0,s.satisfiedByMeasure||i.satisfiedByMeasure)&&(i.satisfiedStatus=s.normalizedMeasure>=(i.minNormalizedMeasure??e.scaledPassingScore??.7)),r.readProgressMeasure&&s.progressMeasureKnown&&(i.progressMeasure=s.progressMeasure,i.progressMeasureStatus=!0),r.readCompletionStatus&&s.completionStatusKnown&&(i.completionStatus=s.completionStatus),n&&i.applyToActivity(e),this.eventCallback?.("objective_synchronized",{activityId:e.id,objectiveId:i.id,globalState:s,synchronizationTime:(new Date).toISOString()})}}}synchronizeGlobalObjectives(e,t){const objectives=e.getAllObjectives();for(const i of objectives){const s=i.mapInfo.length>0?i.mapInfo:[this.createDefaultMapInfo(i)];for(const r of s){const s=this.ensureGlobalObjectiveEntry(t,r.targetObjectiveID||i.id,i);this.syncObjectiveState(e,i,r,s)}}}syncObjectiveState(e,t,i,s){try{const r=this.getLocalObjectiveState(e,t,t.isPrimary);i.readSatisfiedStatus&&s.satisfiedStatusKnown&&(t.satisfiedStatus=s.satisfiedStatus,t.measureStatus=!0),i.readNormalizedMeasure&&s.normalizedMeasureKnown&&(t.normalizedMeasure=s.normalizedMeasure,t.measureStatus=!0,s.satisfiedByMeasure||t.satisfiedByMeasure)&&(t.satisfiedStatus=s.normalizedMeasure>=(t.minNormalizedMeasure??e.scaledPassingScore??.7)),i.readProgressMeasure&&s.progressMeasureKnown&&(t.progressMeasure=s.progressMeasure,t.progressMeasureStatus=!0),i.readCompletionStatus&&s.completionStatusKnown&&(t.completionStatus=s.completionStatus),t.isPrimary&&t.applyToActivity(e),i.writeSatisfiedStatus&&t.measureStatus&&(s.satisfiedStatus=t.satisfiedStatus,s.satisfiedStatusKnown=!0),i.writeNormalizedMeasure&&t.measureStatus&&(s.normalizedMeasure=t.normalizedMeasure,s.normalizedMeasureKnown=!0,s.satisfiedByMeasure||t.satisfiedByMeasure)&&(s.satisfiedStatus=t.normalizedMeasure>=(t.minNormalizedMeasure??e.scaledPassingScore??.7),s.satisfiedStatusKnown=!0),i.writeCompletionStatus&&t.completionStatus!==H&&(s.completionStatus=t.completionStatus,s.completionStatusKnown=!0),i.writeProgressMeasure&&t.progressMeasureStatus&&(s.progressMeasure=t.progressMeasure,s.progressMeasureKnown=!0),i.updateAttemptData&&this.updateActivityAttemptData(e,s,t),this.eventCallback?.("objective_synchronized",{activityId:e.id,objectiveId:t.id,localState:r,globalState:s,synchronizationTime:(new Date).toISOString()})}catch(i){this.eventCallback?.("objective_sync_error",{activityId:e.id,objectiveId:t.id,error:i instanceof Error?i.message:i+"",timestamp:(new Date).toISOString()})}}ensureGlobalObjectiveEntry(e,t,i){return e.has(t)||e.set(t,{id:t,satisfiedStatus:i.satisfiedStatus,satisfiedStatusKnown:i.satisfiedStatusKnown,normalizedMeasure:i.normalizedMeasure,normalizedMeasureKnown:i.measureStatus,progressMeasure:i.progressMeasure,progressMeasureKnown:i.progressMeasureStatus,completionStatus:i.completionStatus,completionStatusKnown:i.completionStatus!==H,satisfiedByMeasure:i.satisfiedByMeasure,minNormalizedMeasure:i.minNormalizedMeasure}),e.get(t)}createDefaultMapInfo(e){return{targetObjectiveID:e.id,readSatisfiedStatus:!1,writeSatisfiedStatus:!0,readNormalizedMeasure:!1,writeNormalizedMeasure:!0,readCompletionStatus:!1,writeCompletionStatus:!0,readProgressMeasure:!1,writeProgressMeasure:!0,updateAttemptData:e.isPrimary}}getLocalObjectiveState(e,t,i){return i?{id:t.id,satisfiedStatus:e.objectiveSatisfiedStatus,measureStatus:e.objectiveMeasureStatus,normalizedMeasure:e.objectiveNormalizedMeasure,progressMeasure:e.progressMeasure,progressMeasureStatus:e.progressMeasureStatus,completionStatus:e.completionStatus,scaledPassingScore:e.scaledPassingScore}:{id:t.id,satisfiedStatus:t.satisfiedStatus,measureStatus:t.measureStatus,normalizedMeasure:t.normalizedMeasure,progressMeasure:t.progressMeasure,progressMeasureStatus:t.progressMeasureStatus,completionStatus:t.completionStatus,scaledPassingScore:t.minNormalizedMeasure}}updateActivityAttemptData(e,t,i){try{if(!i.isPrimary&&!t.updateAttemptData)return;const s=e.rollupRules.rules.some(e=>"completed"===e.action||"incomplete"===e.action);t.satisfiedStatusKnown&&t.satisfiedStatus&&(s||e.completionStatus!==H&&e.completionStatus!==V||(e.completionStatus=k),"unknown"===e.successStatus&&(e.successStatus="passed")),t.attemptCount&&t.attemptCount>e.attemptCount&&(e.attemptCount=t.attemptCount),t.progressMeasureKnown&&void 0!==t.progressMeasure&&(e.attemptCompletionAmount=t.progressMeasure),t.attemptAbsoluteDuration&&(e.attemptAbsoluteDuration=t.attemptAbsoluteDuration),t.attemptExperiencedDuration&&(e.attemptExperiencedDuration=t.attemptExperiencedDuration),t.activityAbsoluteDuration&&(e.activityAbsoluteDuration=t.activityAbsoluteDuration),t.activityExperiencedDuration&&(e.activityExperiencedDuration=t.activityExperiencedDuration),void 0!==t.location&&(e.location=t.location),void 0!==t.suspendData&&(e.isSuspended=t.suspendData.length>0)}catch(t){this.eventCallback?.("attempt_data_update_error",{activityId:e.id,error:t instanceof Error?t.message:t+"",timestamp:(new Date).toISOString()})}}}var oi=Object.defineProperty,ai=(e,t,i)=>((e,t,i)=>t in e?oi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class ci{constructor(e,t){ai(this,"rollupStateLog",[]),ai(this,"childFilter"),ai(this,"eventCallback"),this.childFilter=e,this.eventCallback=t||null}validateRollupStateConsistency(e){try{this.eventCallback?.("rollup_validation_started",{activityId:e.id,timestamp:(new Date).toISOString()});const t=[];return this.validateActivityRollupState(e,t),t.length>0?(this.eventCallback?.("rollup_state_inconsistencies",{activityId:e.id,inconsistencies:t,count:t.length}),!1):(this.eventCallback?.("rollup_validation_completed",{activityId:e.id,result:"consistent"}),!0)}catch(t){return this.eventCallback?.("rollup_validation_error",{activityId:e.id,error:t instanceof Error?t.message:t+""}),!1}}validateActivityRollupState(e,t){const i=e.id;e.objectiveMeasureStatus&&null===e.objectiveNormalizedMeasure&&t.push(`Activity ${i}: measure status true but normalized measure is null`),e.objectiveMeasureStatus&&null!==e.scaledPassingScore&&"unknown"!==e.successStatus&&e.objectiveSatisfiedStatus!==e.objectiveNormalizedMeasure>=e.scaledPassingScore&&t.push(`Activity ${i}: satisfaction status inconsistent with measure`);const s=e.sequencingControls,r=e.getAvailableChildren();if(r.length>0&&s.rollupObjectiveSatisfied){const s=r.filter(e=>this.childFilter.checkChildForRollupSubprocess(e,"objective","satisfied")&&this.childFilter.isChildSatisfiedForRollup(e)),n=r.filter(e=>this.childFilter.checkChildForRollupSubprocess(e,"objective","notSatisfied")&&!this.childFilter.isChildSatisfiedForRollup(e));s.length>0&&0===n.length&&!1===e.objectiveSatisfiedStatus&&0===e.rollupRules.rules.length&&t.push(`Activity ${i}: all children satisfied but parent is not satisfied (no rollup rules to override)`)}if(r.length>0&&s.rollupProgressCompletion){const s=r.filter(e=>this.childFilter.checkChildForRollupSubprocess(e,"progress","completed")&&this.childFilter.isChildCompletedForRollup(e)),n=r.filter(e=>this.childFilter.checkChildForRollupSubprocess(e,"progress","incomplete")&&!this.childFilter.isChildCompletedForRollup(e));s.length>0&&0===n.length&&"completed"!==e.completionStatus&&0===e.rollupRules.rules.length&&t.push(`Activity ${i}: all children completed but parent is incomplete (no rollup rules to override)`)}for(const e of r)this.validateActivityRollupState(e,t);this.rollupStateLog.push({activity:i,timestamp:(new Date).toISOString(),state:{measureStatus:e.objectiveMeasureStatus,measure:e.objectiveNormalizedMeasure,satisfiedStatus:e.objectiveSatisfiedStatus,completionStatus:e.completionStatus}})}getRollupStateLog(){return[...this.rollupStateLog]}clearRollupStateLog(){this.rollupStateLog=[]}}var li=Object.defineProperty,ui=(e,t,i)=>((e,t,i)=>t in e?li(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class hi{constructor(e){ui(this,"childFilter"),ui(this,"ruleEvaluator"),ui(this,"measureProcessor"),ui(this,"objectiveProcessor"),ui(this,"progressProcessor"),ui(this,"durationProcessor"),ui(this,"globalObjectiveSynchronizer"),ui(this,"stateValidator"),ui(this,"crossClusterProcessor"),ui(this,"eventCallback"),this.eventCallback=e||null,this.childFilter=new Vt,this.ruleEvaluator=new Bt(this.childFilter),this.measureProcessor=new Gt(this.childFilter,e),this.objectiveProcessor=new Jt(this.childFilter,this.ruleEvaluator,e),this.progressProcessor=new Qt(this.childFilter,this.ruleEvaluator,this.objectiveProcessor,e),this.durationProcessor=new ei(e),this.globalObjectiveSynchronizer=new ni(e),this.stateValidator=new ci(this.childFilter,e),this.crossClusterProcessor=new si(this.measureProcessor,this.objectiveProcessor,this.progressProcessor,e)}overallRollupProcess(e){const t=[];let i=e.parent,s=!1,r=!0;for(;i;){if(i.children.length>0&&this.durationProcessor.durationRollupProcess(i),!s){const e=i.captureRollupStatus();if(i.sequencingControls.rollupObjectiveSatisfied||i.sequencingControls.rollupProgressCompletion){if(i.children.length>0){const e=this.measureProcessor.measureRollupProcess(i);this.measureProcessor.completionMeasureRollupProcess(i),e.length>1&&this.crossClusterProcessor.processCrossClusterDependencies(i,e)}i.sequencingControls.rollupObjectiveSatisfied&&this.objectiveProcessor.objectiveRollupProcess(i),i.sequencingControls.rollupProgressCompletion&&this.progressProcessor.activityProgressRollupProcess(i)}const n=i.captureRollupStatus();r||!kt.compareRollupStatus(e,n)||(this.eventCallback?.("rollup_optimization_activated",{activityId:i.id,depth:t.length}),s=!0),!r&&kt.compareRollupStatus(e,n)||t.push(i)}i=i.parent,r=!1}return t}validateRollupStateConsistency(e){return this.stateValidator.validateRollupStateConsistency(e)}processGlobalObjectiveMapping(e,t){this.globalObjectiveSynchronizer.processGlobalObjectiveMapping(e,t)}calculateComplexWeightedMeasure(e,t,i){return this.measureProcessor.calculateComplexWeightedMeasure(e,t,i)}processCrossClusterDependencies(e,t){this.crossClusterProcessor.processCrossClusterDependencies(e,t)}getChildFilter(){return this.childFilter}getRuleEvaluator(){return this.ruleEvaluator}getMeasureProcessor(){return this.measureProcessor}getObjectiveProcessor(){return this.objectiveProcessor}getProgressProcessor(){return this.progressProcessor}getDurationProcessor(){return this.durationProcessor}getGlobalObjectiveSynchronizer(){return this.globalObjectiveSynchronizer}getStateValidator(){return this.stateValidator}getCrossClusterProcessor(){return this.crossClusterProcessor}}var di=Object.defineProperty;const mi=[k,V,H],pi=[P,z,F];function _i(e){return e&&mi.includes(e)?e:null}function gi(e){return e&&pi.includes(e)?e:null}class vi{constructor(e){var t;((e,t,i)=>{t in e?di(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i})(this,"context"+"",t),this.context=e}transferRteData(e){if(!this.context.getCMIData)return;const t=this.context.getCMIData();t&&(this.transferPrimaryObjective(e,t),this.transferNonPrimaryObjectives(e,t),this.context.fireEvent("onRteDataTransfer",{activityId:e.id,timestamp:(new Date).toISOString()}))}transferPrimaryObjective(e,t){const i=_i(t.completion_status);i&&i!==H&&(e.completionStatus=i,e.attemptProgressStatus=!0);let s=!1,r=!1,n=!1,o=0;const a=gi(t.success_status);if(a&&a!==F&&(r=a===P,s=!0,e.objectiveSatisfiedStatus=r,e.objectiveSatisfiedStatusKnown=!0,e.successStatus=a,e.objectiveMeasureStatus=!0),t.score){const i=this.normalizeScore(t.score);null!==i&&(o=i,n=!0,e.objectiveNormalizedMeasure=o,e.objectiveMeasureStatus=!0)}if(e.primaryObjective&&(s||n)&&(e.primaryObjective.initializeFromCMI(s?r:e.primaryObjective.satisfiedStatus,n?o:e.primaryObjective.normalizedMeasure,s||n),s&&(e.primaryObjective.satisfiedStatusKnown=!0,e.primaryObjective.progressStatus=!0)),t.progress_measure&&""!==t.progress_measure){const i=parseFloat(t.progress_measure);isNaN(i)||(e.progressMeasure=i,e.progressMeasureStatus=!0,e.primaryObjective&&(e.primaryObjective.progressMeasure=i,e.primaryObjective.progressMeasureStatus=!0))}}transferNonPrimaryObjectives(e,t){if(t.objectives&&0!==t.objectives.length)for(const i of t.objectives){if(!i.id)continue;const t=e.getObjectiveById(i.id);if(!t||t.isPrimary)continue;const s=t.objective;let r=!1,n=!1,o=!1,a=0;const c=gi(i.success_status);c&&c!==F&&(n=c===P,r=!0,s.progressStatus=!0);const l=_i(i.completion_status);if(l&&l!==H&&(s.completionStatus=l),i.score){const e=this.normalizeScore(i.score);null!==e&&(a=e,o=!0)}if((r||o)&&s.initializeFromCMI(r?n:s.satisfiedStatus,o?a:s.normalizedMeasure,o),i.progress_measure&&""!==i.progress_measure){const e=parseFloat(i.progress_measure);isNaN(e)||(s.progressMeasure=e,s.progressMeasureStatus=!0)}}}normalizeScore(score){if(score.scaled&&""!==score.scaled){const e=parseFloat(score.scaled);if(!isNaN(e))return e}if(score.raw&&""!==score.raw&&score.min&&""!==score.min&&score.max&&""!==score.max){const e=parseFloat(score.raw),t=parseFloat(score.min),i=parseFloat(score.max);if(!isNaN(e)&&!isNaN(t)&&!isNaN(i)&&i>t)return Math.max(-1,Math.min(1,(e-t)/(i-t)))}return null}}var fi=Object.defineProperty,Si=(e,t,i)=>((e,t,i)=>t in e?fi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class bi{constructor(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,n=arguments.length>5?arguments[5]:void 0;Si(this,"activityTree"),Si(this,"sequencingProcess"),Si(this,"rollupProcess"),Si(this,"globalObjectiveMap"),Si(this,"eventCallback"),Si(this,"getCMIData"),Si(this,"is4thEdition"),Si(this,"invalidateCacheCallback",null),Si(this,"_rteDataTransferService"),this.activityTree=e,this.sequencingProcess=t,this.rollupProcess=i,this.globalObjectiveMap=s,this.eventCallback=r,this.getCMIData=n?.getCMIData||null,this.is4thEdition=n?.is4thEdition||!1,this._rteDataTransferService=new vi({getCMIData:this.getCMIData,fireEvent:(e,t)=>this.fireEvent(e,t)})}setInvalidateCacheCallback(e){this.invalidateCacheCallback=e}processTerminationRequest(request){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],t=arguments.length>2?arguments[2]:void 0;const i=this.activityTree.currentActivity;if(!i)return{terminationRequest:request,sequencingRequest:null,exception:"TB.2.3-1",valid:!1};if((request===xe.EXIT||request===xe.ABANDON)&&!i.isActive)return{terminationRequest:request,sequencingRequest:null,exception:"TB.2.3-2",valid:!1};if(this.fireEvent("onTerminationRequestProcessing",{request:request,hasSequencingRequest:e,currentActivity:i.id,exitType:t}),"logout"===t)return this.fireEvent("onSequencingDebug",{message:"cmi.exit='logout' detected, treating as EXIT_ALL",activityId:i.id}),this.handleExitAll(i);switch(request){case xe.EXIT:return this.handleExit(i,e);case xe.EXIT_ALL:return this.handleExitAll(i);case xe.ABANDON:return this.handleAbandon(i,e);case xe.ABANDON_ALL:return this.handleAbandonAll(i);case xe.SUSPEND_ALL:return this.handleSuspendAll(i);default:return{terminationRequest:request,sequencingRequest:null,exception:"TB.2.3-7",valid:!1}}}handleExitTermination(e,t){return this.handleExit(e,t)}handleExit(e,t){e.children.length>0&&this.terminateDescendants(e),this.endAttempt(e);const i=this.evaluateExitRules(e);if("EXIT_ALL"===i.action)return this.handleExitAll(e);let s,r;"EXIT_PARENT"===i.action&&e.parent&&(this.activityTree.currentActivity=e.parent,this.endAttempt(this.activityTree.currentActivity));do{if(s=!1,r=this.evaluatePostConditions(this.activityTree.currentActivity||e),r.terminationRequest===xe.EXIT_ALL)return this.fireEvent("onPostConditionExitAll",{activity:(this.activityTree.currentActivity||e).id}),this.handleExitAll(this.activityTree.root);if(r.terminationRequest===xe.EXIT_PARENT){const t=this.activityTree.currentActivity||e;if(!t.parent)return{terminationRequest:xe.EXIT_PARENT,sequencingRequest:null,exception:"TB.2.3-4",valid:!1};this.activityTree.currentActivity=t.parent,this.endAttempt(this.activityTree.currentActivity),s=!0,this.fireEvent("onPostConditionExitParent",{fromActivity:t.id,toActivity:this.activityTree.currentActivity.id})}if(!s&&(this.activityTree.currentActivity||e)===this.activityTree.root&&r.sequencingRequest!==xe.RETRY)return{terminationRequest:xe.EXIT,sequencingRequest:xe.EXIT,exception:null,valid:!0}}while(s);if(!t&&!r.sequencingRequest){const t=this.activityTree.currentActivity||e;t.parent&&this.activityTree.setCurrentActivityWithoutActivation(t.parent)}return{terminationRequest:xe.EXIT,sequencingRequest:r.sequencingRequest,exception:null,valid:!0}}handleExitAll(e){return this.activityTree.root&&this.handleMultiLevelExit(this.activityTree.root),this.activityTree.root&&this.endAttempt(this.activityTree.root),this.activityTree.currentActivity=null,this.cleanupSuspendedActivity(),{terminationRequest:xe.EXIT_ALL,sequencingRequest:xe.EXIT,exception:null,valid:!0}}handleAbandon(e,t){return e.isActive=!1,t||(this.activityTree.currentActivity=e.parent),{terminationRequest:xe.ABANDON,sequencingRequest:null,exception:null,valid:!0}}handleAbandonAll(e){const t=[];let i=e;for(;null!==i;)t.push(i),i=i.parent;if(0===t.length)return{terminationRequest:xe.ABANDON_ALL,sequencingRequest:null,exception:"TB.2.3-6",valid:!1};for(const e of t)e.isActive=!1;return this.activityTree.currentActivity=null,this.cleanupSuspendedActivity(),{terminationRequest:xe.ABANDON_ALL,sequencingRequest:null,exception:null,valid:!0}}handleSuspendAll(e){const t=this.processSuspendAllRequest(e);return t.valid?{terminationRequest:xe.SUSPEND_ALL,sequencingRequest:xe.EXIT,exception:null,valid:!0}:t}processSuspendAllRequest(e){const t=this.activityTree.root;if(!e||!t)return this.fireEvent("onSuspendError",{exception:"TB.2.3-1",message:"No current activity to suspend",activity:e?.id}),{terminationRequest:xe.SUSPEND_ALL,sequencingRequest:null,exception:"TB.2.3-1",valid:!1};if(e===t&&!e.isActive&&!e.isSuspended)return this.fireEvent("onSuspendError",{exception:"TB.2.3-3",message:"Nothing to suspend (root activity)",activity:e.id}),{terminationRequest:xe.SUSPEND_ALL,sequencingRequest:null,exception:"TB.2.3-3",valid:!1};this.activityTree.suspendedActivity=e;const i=e,s=[];let r=i;for(;null!==r;)s.push(r),r=r.parent;if(0===s.length)return this.fireEvent("onSuspendError",{exception:"TB.2.3-5",message:"Activity path is empty",activity:i?.id}),{terminationRequest:xe.SUSPEND_ALL,sequencingRequest:null,exception:"TB.2.3-5",valid:!1};for(const e of s)e.isActive=!1,e.isSuspended=!0;return this.activityTree.currentActivity=t,t.isActive=!1,this.fireEvent("onActivitySuspended",{activity:i?.id,suspendedPath:s.map(e=>e.id),pathLength:s.length,timestamp:(new Date).toISOString()}),{terminationRequest:xe.SUSPEND_ALL,sequencingRequest:null,exception:null,valid:!0}}evaluateExitRules(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;t++;const i=e.sequencingRules.exitConditionRules;for(const s of i){let i;if(i="all"===s.conditionCombination?s.conditions.every(t=>t.evaluate(e)):s.conditions.some(t=>t.evaluate(e)),i){if(s.action===Ee.EXIT_PARENT)return{action:"EXIT_PARENT",recursionDepth:t};if(s.action===Ee.EXIT_ALL)return{action:"EXIT_ALL",recursionDepth:t}}}return{action:null,recursionDepth:t}}evaluatePostConditions(e){const t=this.sequencingProcess.evaluatePostConditionRules(e);return(t.sequencingRequest||t.terminationRequest)&&this.fireEvent("onPostConditionEvaluated",{activity:e.id,sequencingRequest:t.sequencingRequest,terminationRequest:t.terminationRequest,timestamp:(new Date).toISOString()}),t}handleMultiLevelExit(e){this.processExitAtLevel(e,0),this.terminateAll(e)}processExitAtLevel(e,t){const i=this.evaluateExitRules(e,0);i.action&&this.fireEvent("onMultiLevelExitAction",{activity:e.id,level:t,action:i.action});for(const i of e.children)this.processExitAtLevel(i,t+1)}cleanupSuspendedActivity(){const e=this.activityTree.suspendedActivity;if(e){let t=e;const i=[];for(;t;)t.isSuspended&&(t.isSuspended=!1,i.push(t.id)),t=t.parent;this.activityTree.suspendedActivity=null,this.fireEvent("onSuspendedActivityCleanup",{cleanedActivities:i,originalSuspendedActivity:e.id})}}terminateAll(e){for(const t of e.children)this.terminateAll(t);e.isActive&&this.endAttempt(e)}terminateDescendants(e){for(const t of e.children){t.children.length>0&&this.terminateDescendants(t);const e=this.exitActionRulesSubprocess(t);t.isActive&&("EXIT_ALL"===e&&this.terminateDescendants(t),this.endAttempt(t))}}exitActionRulesSubprocess(e){const t=e.sequencingRules.exitConditionRules;for(const i of t){let t;if(t="all"===i.conditionCombination?i.conditions.every(t=>t.evaluate(e)):i.conditions.some(t=>t.evaluate(e)),t){if(i.action===Ee.EXIT_PARENT)return"EXIT_PARENT";if(i.action===Ee.EXIT_ALL)return"EXIT_ALL"}}return null}clearSuspendedActivity(){if(this.activityTree.suspendedActivity){let e=this.activityTree.suspendedActivity;for(;e;)e.isSuspended=!1,e=e.parent;this.activityTree.suspendedActivity=null}}endAttempt(e){if(e.isActive){if(this._rteDataTransferService.transferRteData(e),e.isActive=!1,e.activityAttemptActive=!1,0===e.children.length){if(!e.isSuspended&&(e.sequencingControls.completionSetByContent||e.attemptProgressStatus||(e.attemptProgressStatus=!0,e.completionStatus="completed",e.wasAutoCompleted=!0,this.fireEvent("onAutoCompletion",{activityId:e.id,timestamp:(new Date).toISOString()})),!e.sequencingControls.objectiveSetByContent)){const t=e.primaryObjective;t&&(t.progressStatus||(t.progressStatus=!0,t.satisfiedStatus=!0,e.objectiveSatisfiedStatus=!0,e.successStatus="passed",e.wasAutoSatisfied=!0,this.fireEvent("onAutoSatisfaction",{activityId:e.id,timestamp:(new Date).toISOString()})))}}else{const t=e.children.some(e=>e.isSuspended);e.isSuspended=t}"unknown"===e.completionStatus&&(e.completionStatus="incomplete"),"unknown"===e.successStatus&&e.objectiveSatisfiedStatus&&(e.successStatus=e.objectiveSatisfiedStatus?"passed":"failed"),this.rollupProcess.processGlobalObjectiveMapping(this.activityTree.root||e,this.globalObjectiveMap),this.rollupProcess.overallRollupProcess(e),this.invalidateCacheCallback&&this.invalidateCacheCallback(),this.activityTree.root&&this.rollupProcess.validateRollupStateConsistency(this.activityTree.root),Ye.applySelectionAndRandomization(e,!1)}}fireEvent(e,t){try{this.eventCallback&&this.eventCallback(e,t)}catch(t){console.warn(`Failed to fire sequencing event ${e}: ${t}`)}}}var yi=Object.defineProperty,Ci=(e,t,i)=>((e,t,i)=>t in e?yi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Ai{constructor(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;Ci(this,"valid"),Ci(this,"targetActivity"),Ci(this,"exception"),this.valid=e,this.targetActivity=t,this.exception=i}}const Ei=class e{constructor(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,n=arguments.length>5?arguments[5]:void 0;Ci(this,"activityTree"),Ci(this,"rollupProcess"),Ci(this,"globalObjectiveMap"),Ci(this,"adlNav"),Ci(this,"eventCallback"),Ci(this,"now"),Ci(this,"defaultHideLmsUi"),Ci(this,"defaultAuxiliaryResources"),Ci(this,"_deliveryInProgress",!1),Ci(this,"contentDelivered",!1),Ci(this,"checkActivityCallback",null),Ci(this,"invalidateCacheCallback",null),Ci(this,"updateNavigationValidityCallback",null),Ci(this,"clearSuspendedActivityCallback",null),this.activityTree=e,this.rollupProcess=t,this.globalObjectiveMap=i,this.adlNav=s,this.eventCallback=r,this.now=n?.now||(()=>new Date),this.defaultHideLmsUi=n?.defaultHideLmsUi?[...n.defaultHideLmsUi]:[],this.defaultAuxiliaryResources=n?.defaultAuxiliaryResources?n.defaultAuxiliaryResources.map(e=>({...e})):[]}setCheckActivityCallback(e){this.checkActivityCallback=e}setInvalidateCacheCallback(e){this.invalidateCacheCallback=e}setUpdateNavigationValidityCallback(e){this.updateNavigationValidityCallback=e}setClearSuspendedActivityCallback(e){this.clearSuspendedActivityCallback=e}isDeliveryInProgress(){return this._deliveryInProgress}hasContentBeenDelivered(){return this.contentDelivered}resetContentDelivered(){this.contentDelivered=!1}setContentDelivered(e){this.contentDelivered=e}processDeliveryRequest(e){if(this.fireEvent("onDeliveryRequestProcessing",{activity:e.id,timestamp:(new Date).toISOString()}),e.children.length>0)return new Ai(!1,null,"DB.1.1-1");const t=this.getActivityPath(e,!0);if(0===t.length)return new Ai(!1,null,"DB.1.1-2");for(const e of t)if(this.checkActivityCallback&&!this.checkActivityCallback(e))return new Ai(!1,null,"DB.1.1-3");return new Ai(!0,e)}contentDeliveryEnvironmentProcess(e){this._deliveryInProgress=!0;try{const t=e.isSuspended;this.activityTree.suspendedActivity&&this.clearSuspendedActivityCallback&&this.clearSuspendedActivityCallback();const i=this.getActivityPath(e,!0);for(const e of i)e.isActive||(t||e.isSuspended?e.isSuspended=!1:e.incrementAttemptCount(),e.isActive=!0,Ye.applySelectionAndRandomization(e,1>=e.attemptCount));this.activityTree.currentActivity=e,this.initializeForDelivery(e),this.setupAttemptTracking(e),this.contentDelivered=!0,this.adlNav&&this.updateNavigationValidityCallback&&this.updateNavigationValidityCallback(),this.fireDeliveryEvent(e)}finally{this._deliveryInProgress=!1}}initializeForDelivery(e){"unknown"===e.completionStatus&&0===e.children.length&&(e.completionStatus="not attempted"),null===e.objectiveSatisfiedStatus&&(e.objectiveSatisfiedStatus=!1),null===e.progressMeasure&&(e.progressMeasure=0,e.progressMeasureStatus=!1),null===e.objectiveNormalizedMeasure&&(e.objectiveNormalizedMeasure=0,e.objectiveMeasureStatus=!1),e.attemptAbsoluteDuration="PT0H0M0S",e.attemptExperiencedDuration="PT0H0M0S",e.isAvailable=!0}setupAttemptTracking(e){e.wasSkipped=!1,e.attemptAbsoluteStartTime=this.now().toISOString(),e.location||(e.location=""),e.activityAttemptActive=!0,e.learnerPrefs||(e.learnerPrefs={audioCaptioning:"0",audioLevel:"1",deliverySpeed:"1",language:""})}fireDeliveryEvent(e){try{this.eventCallback&&this.eventCallback("onActivityDelivery",e),console.debug(`Activity delivered: ${e.id} - ${e.title}`)}catch(e){console.warn("Failed to fire activity delivery event: "+e)}}getEffectiveHideLmsUi(t){const i=new Set;for(const e of this.defaultHideLmsUi)i.add(e);let s=t;for(;s;){for(const e of s.hideLmsUi)i.add(e);s=s.parent}return e.HIDE_LMS_UI_ORDER.filter(e=>i.has(e))}getEffectiveAuxiliaryResources(e){const t=new Map;for(const e of this.defaultAuxiliaryResources)e.resourceId&&t.set(e.resourceId,{...e});const i=[];let s=e;for(;s;)i.push(s),s=s.parent;for(const e of i.reverse())for(const i of e.auxiliaryResources)i.resourceId&&t.set(i.resourceId,{...i});return Array.from(t.values())}getContentActivityData(e){return{hideLmsUi:this.getEffectiveHideLmsUi(e),auxiliaryResources:this.getEffectiveAuxiliaryResources(e),location:e.location||"",credit:e.credit||"credit",launchData:e.launchData||"",maxTimeAllowed:e.attemptAbsoluteDurationLimit||"",completionThreshold:e.completionThreshold?.toString()||"",timeLimitAction:e.timeLimitAction||"continue,no message"}}getActivityPath(e){let t=1>=arguments.length||void 0===arguments[1]||arguments[1];const i=[];let s=e;for(;null!==s;)i.unshift(s),s=s.parent;return!t&&i.length>0&&i.pop(),i}fireEvent(e,t){try{this.eventCallback&&this.eventCallback(e,t)}catch(t){console.warn(`Failed to fire sequencing event ${e}: ${t}`)}}};Ci(Ei,"HIDE_LMS_UI_ORDER",[...be]);let wi=Ei;var Mi=Object.defineProperty,Oi=(e,t,i)=>((e,t,i)=>t in e?Mi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Ri{constructor(e,t){Oi(this,"activityTree"),Oi(this,"sequencingProcess"),Oi(this,"cache",null),Oi(this,"isDirty",!0),this.activityTree=e,this.sequencingProcess=t}predictContinueEnabled(){return this.ensureCacheValid(),this.cache?.continueEnabled??!1}predictPreviousEnabled(){return this.ensureCacheValid(),this.cache?.previousEnabled??!1}predictChoiceEnabled(e){return this.ensureCacheValid(),this.cache?.choiceEnabledMap.get(e)??!1}getAvailableChoices(){return this.ensureCacheValid(),Array.from(this.cache?.availableChoices??[])}getAllPredictions(){return this.ensureCacheValid(),{continueEnabled:this.cache?.continueEnabled??!1,previousEnabled:this.cache?.previousEnabled??!1,availableChoices:Array.from(this.cache?.availableChoices??[])}}invalidateCache(){this.isDirty=!0}updateCache(){this.isDirty=!0,this.ensureCacheValid()}ensureCacheValid(){const e=this.calculateTreeStateHash();!this.isDirty&&this.cache&&this.cache.treeStateHash===e||(this.recalculateCache(e),this.isDirty=!1)}recalculateCache(e){const t=this.activityTree.currentActivity;this.cache={continueEnabled:!1,previousEnabled:!1,availableChoices:new Set,choiceEnabledMap:new Map,treeStateHash:e},t?(this.cache.continueEnabled=this.predictContinueInternal(t),this.cache.previousEnabled=this.predictPreviousInternal(t),this.calculateAvailableChoices()):this.calculateAvailableChoicesFromRoot()}predictContinueInternal(e){return!!e.parent&&!!e.parent.sequencingControls.flow&&this.hasAvailableNextActivity(e)}hasAvailableNextActivity(e){const t=e.parent;if(!t)return!1;const i=t.children,s=i.indexOf(e);if(-1===s)return!1;if(i.length-1>s)for(let e=s+1;i.length>e;e++){const t=i[e];if(t&&this.isActivityPotentiallyDeliverableForward(t))return!0}return!(!t.parent||!t.sequencingControls.flow)&&this.hasAvailableNextActivity(t)}predictPreviousInternal(e){return!!e.parent&&!!e.parent.sequencingControls.flow&&!e.parent.sequencingControls.forwardOnly&&this.hasAvailablePreviousActivity(e)}hasAvailablePreviousActivity(e){const t=e.parent;if(!t)return!1;const i=t.children,s=i.indexOf(e);if(-1===s)return!1;if(s>0)for(let e=s-1;e>=0;e--){const t=i[e];if(t&&this.isActivityPotentiallyDeliverableBackward(t))return!0}return!(!t.parent||!t.sequencingControls.flow||t.sequencingControls.forwardOnly)&&this.hasAvailablePreviousActivity(t)}calculateAvailableChoicesFromRoot(){}calculateAvailableChoices(){this.cache&&this.activityTree.root&&this.recursivelyCheckChoiceAvailability(this.activityTree.root)}recursivelyCheckChoiceAvailability(e){if(!this.cache)return;const t=this.sequencingProcess.validateNavigationRequest(xe.CHOICE,e.id,this.activityTree.currentActivity).valid;if(this.cache.choiceEnabledMap.set(e.id,t),t&&this.cache.availableChoices.add(e.id),e.children)for(const t of e.children)this.recursivelyCheckChoiceAvailability(t)}isActivityPotentiallyDeliverableForward(e){if(e.isHiddenFromChoice||!e.isAvailable)return!1;if(0===e.children.length)return!!e.isVisible&&this.sequencingProcess.canActivityBeDelivered(e);for(const t of e.children)if(this.isActivityPotentiallyDeliverableForward(t))return!0;return!1}isActivityPotentiallyDeliverableBackward(e){if(e.isHiddenFromChoice||!e.isAvailable)return!1;if(0===e.children.length)return e.isVisible;for(const t of e.children)if(this.isActivityPotentiallyDeliverableBackward(t))return!0;return!1}calculateTreeStateHash(){const e=this.activityTree.currentActivity,t=this.activityTree.suspendedActivity;return[e?.id??"none",t?.id??"none",this.getActivityTreeStateSignature()].join("|")}getActivityTreeStateSignature(){if(!this.activityTree.root)return"empty";const e=[];return this.collectActivitySignatures(this.activityTree.root,e),e.join(":")}collectActivitySignatures(e,t){if(t.push(e.id+(e.isActive?"A":"-")+(e.isSuspended?"S":"-")+e.completionStatus+e.successStatus+e.attemptCount),e.children)for(const i of e.children)this.collectActivitySignatures(i,t)}}var Ti=Object.defineProperty,ji=(e,t,i)=>((e,t,i)=>t in e?Ti(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i),Ii=(e=>(e.START="start",e.RESUME_ALL="resumeAll",e.CONTINUE="continue",e.PREVIOUS="previous",e.CHOICE="choice",e.JUMP="jump",e.EXIT="exit",e.EXIT_ALL="exitAll",e.ABANDON="abandon",e.ABANDON_ALL="abandonAll",e.SUSPEND_ALL="suspendAll",e.NOT_VALID="_none_",e))(Ii||{});class Ni{constructor(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;ji(this,"valid"),ji(this,"terminationRequest"),ji(this,"sequencingRequest"),ji(this,"targetActivityId"),ji(this,"exception"),this.valid=e,this.terminationRequest=t,this.sequencingRequest=i,this.targetActivityId=s,this.exception=r}}class xi{constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;ji(this,"activityTree"),ji(this,"sequencingProcess"),ji(this,"adlNav"),ji(this,"eventCallback"),ji(this,"navigationLookAhead"),ji(this,"getEffectiveHideLmsUiCallback",null),this.activityTree=e,this.sequencingProcess=t,this.adlNav=i,this.eventCallback=s,this.navigationLookAhead=new Ri(e,t)}setGetEffectiveHideLmsUiCallback(e){this.getEffectiveHideLmsUiCallback=e}getNavigationLookAhead(){return this.navigationLookAhead}validateRequest(request){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.fireEvent("onNavigationRequestProcessing",{request:request,targetActivityId:e});const t=this.activityTree.currentActivity;switch(request){case"start":return this.validateStartRequest(t);case"resumeAll":return this.validateResumeRequest(t);case"continue":return this.validateContinueRequest(t);case"previous":return this.validatePreviousRequest(t);case"choice":return this.validateChoiceRequest(t,e);case"jump":return this.validateJumpRequest(e);case"exit":return this.validateExitRequest(t);case"exitAll":return this.validateExitAllRequest(t);case"abandon":return this.validateAbandonRequest(t);case"abandonAll":return this.validateAbandonAllRequest(t);case"suspendAll":return this.validateSuspendAllRequest(t);default:return new Ni(!1,null,null,null,"NB.2.1-18")}}validateStartRequest(e){return null!==e?new Ni(!1,null,null,null,"NB.2.1-1"):new Ni(!0,null,xe.START,null)}validateResumeRequest(e){return null!==e?new Ni(!1,null,null,null,"NB.2.1-2"):null===this.activityTree.suspendedActivity?new Ni(!1,null,null,null,"NB.2.1-3"):new Ni(!0,null,xe.RESUME_ALL,null)}validateContinueRequest(e){return e?e.parent&&e.parent.sequencingControls.flow?new Ni(!0,e.isActive?xe.EXIT:null,xe.CONTINUE,null):new Ni(!1,null,null,null,"NB.2.1-5"):new Ni(!1,null,null,null,"NB.2.1-4")}validatePreviousRequest(e){if(!e)return new Ni(!1,null,null,null,"NB.2.1-6");if(!e.parent||!e.parent.sequencingControls.flow)return new Ni(!1,null,null,null,"NB.2.1-7");const t=this.validateForwardOnlyConstraints(e);return t.valid?new Ni(!0,e.isActive?xe.EXIT:null,xe.PREVIOUS,null):new Ni(!1,null,null,null,t.exception)}validateChoiceRequest(e,t){if(!t)return new Ni(!1,null,null,null,"NB.2.1-9");const i=this.activityTree.getActivity(t);if(!i)return new Ni(!1,null,null,null,"NB.2.1-10");const s=this.validateChoicePath(e,i);return s.valid?new Ni(!0,e?.isActive?xe.EXIT:null,xe.CHOICE,t):new Ni(!1,null,null,null,s.exception)}validateJumpRequest(e){return e?new Ni(!0,null,xe.JUMP,e):new Ni(!1,null,null,null,"NB.2.1-12")}validateExitRequest(e){return e?new Ni(!0,e===this.activityTree.root?xe.EXIT_ALL:xe.EXIT,null,null):new Ni(!1,null,null,null,"NB.2.1-13")}validateExitAllRequest(e){return e?new Ni(!0,xe.EXIT_ALL,null,null):new Ni(!1,null,null,null,"NB.2.1-14")}validateAbandonRequest(e){return e?new Ni(!0,xe.ABANDON,null,null):new Ni(!1,null,null,null,"NB.2.1-15")}validateAbandonAllRequest(e){return e?new Ni(!0,xe.ABANDON_ALL,null,null):new Ni(!1,null,null,null,"NB.2.1-16")}validateSuspendAllRequest(e){return e?new Ni(!0,xe.SUSPEND_ALL,null,null):new Ni(!1,null,null,null,"NB.2.1-17")}validateChoicePath(e,t){if(t.isHiddenFromChoice)return{valid:!1,exception:"NB.2.1-11"};if(!t.isAvailable)return{valid:!1,exception:"NB.2.1-11"};if(this.isActivityDisabled(t))return{valid:!1,exception:"NB.2.1-11"};if(e){const i=this.findCommonAncestor(e,t);if(!i)return{valid:!1,exception:"NB.2.1-11"};let s=e;for(;s&&s!==i;){if(!0===s.isActive&&s.sequencingControls&&!1===s.sequencingControls.choiceExit&&t!==s&&!this.activityContains(s,t))return{valid:!1,exception:"NB.2.1-11"};s=s.parent}const r=this.validateConstrainChoice(e,t,i);if(!r.valid)return r;const n=this.validateChoiceSet(e,t,i);if(!n.valid)return n}let i=t;for(;i;){if(i.parent&&!i.parent.sequencingControls.choice)return{valid:!1,exception:"NB.2.1-11"};i=i.parent}return{valid:!0,exception:null}}validateForwardOnlyConstraints(e){if(e.parent?.sequencingControls.forwardOnly)return{valid:!1,exception:"NB.2.1-8"};let t=e.parent?.parent;for(;t;){if(t.sequencingControls.forwardOnly)return{valid:!1,exception:"NB.2.1-8"};t=t.parent}return{valid:!0,exception:null}}validateConstrainChoice(e,t,i){let s=i;for(;s;){if(s.sequencingControls?.constrainChoice||s.sequencingControls?.preventActivation){const i=this.findChildContaining(s,e);if(!i)return{valid:!1,exception:"NB.2.1-11"};if(t===s)return{valid:!1,exception:"NB.2.1-11"};const r=this.findChildContaining(s,t);if(!r)return{valid:!1,exception:"NB.2.1-11"};if(s.sequencingControls?.constrainChoice&&r!==i)return{valid:!1,exception:"NB.2.1-11"};if(s.sequencingControls?.preventActivation&&r!==i&&this.requiresNewActivation(r,t))return{valid:!1,exception:"NB.2.1-11"}}s=s.parent}return this.validateAncestors(i,e,t)}validateChoiceSet(e,t,i){if(!this.activityContains(i,t)&&t!==i)return{valid:!1,exception:"NB.2.1-11"};let s=t;for(;s&&s!==i;){if(!s.isAvailable||s.isHiddenFromChoice||this.isActivityDisabled(s))return{valid:!1,exception:"NB.2.1-11"};s=s.parent}return{valid:!0,exception:null}}isActivityDisabled(e){if(!e.isAvailable)return!0;if(e.isHiddenFromChoice)return!0;const t=this.evaluatePreConditionRulesForChoice(e);return!!t&&(t===Ee.DISABLED||t===Ee.HIDE_FROM_CHOICE||t===Ee.STOP_FORWARD_TRAVERSAL)}findChildContaining(e,t){for(const i of e.children){if(i===t)return i;if(this.activityContains(i,t))return i}return null}activityContains(e,t){let i=t;for(;i;){if(i===e)return!0;i=i.parent}return!1}findCommonAncestor(e,t){const i=[];let s=e;for(;s;)i.push(s),s=s.parent;for(s=t;s;){if(i.includes(s))return s;s=s.parent}return null}validateAncestors(e,t,i){const s=e.children;if(!s||0===s.length)return{valid:!0,exception:null};const r=this.findChildContaining(e,t),n=this.findChildContaining(e,i);if(!r||!n)return{valid:!1,exception:"NB.2.1-11"};const o=s.indexOf(r),a=s.indexOf(n);if(e.sequencingControls.forwardOnly&&o>a)return{valid:!1,exception:"NB.2.1-8"};const c=s.findIndex(e=>e?.sequencingControls.stopForwardTraversal);if(r.sequencingControls.stopForwardTraversal&&a>o)return{valid:!1,exception:"NB.2.1-11"};if(-1!==c&&a>c)return{valid:!1,exception:"NB.2.1-11"};if(a>o&&e.sequencingControls.forwardOnly)for(let e=o+1;a>e;e++){const t=s[e];if(t){if(t.sequencingControls.stopForwardTraversal)return{valid:!1,exception:"NB.2.1-11"};if(this.isActivityMandatory(t)&&!this.isActivityCompleted(t))return{valid:!1,exception:"NB.2.1-11"}}}return{valid:!0,exception:null}}requiresNewActivation(e,t){return!this.branchHasActiveAttempt(e)&&!t.activityAttemptActive&&!t.isActive}branchHasActiveAttempt(e){if(e.activityAttemptActive||e.isActive)return!0;for(const t of e.children)if(this.branchHasActiveAttempt(t))return!0;return!1}isActivityMandatory(e){if(!e.isAvailable||e.isHiddenFromChoice)return!1;const t=this.evaluatePreConditionRulesForChoice(e);return t!==Ee.SKIP&&t!==Ee.DISABLED&&t!==Ee.HIDE_FROM_CHOICE&&t!==Ee.STOP_FORWARD_TRAVERSAL&&!this.isActivityDisabled(e)&&!1!==e.mandatory}isActivityCompleted(e){if(!e.isAvailable||e.isHiddenFromChoice)return!0;const t=this.evaluatePreConditionRulesForChoice(e);return t===Ee.SKIP||t===Ee.DISABLED||t===Ee.HIDE_FROM_CHOICE||t===Ee.STOP_FORWARD_TRAVERSAL||!!this.isActivityDisabled(e)||"completed"===e.completionStatus||"passed"===e.successStatus||"passed"===e.successStatus}evaluatePreConditionRulesForChoice(e){if(!e.sequencingRules)return null;return e.sequencingRules.evaluatePreConditionRules(e)||null}updateNavigationValidity(){if(!this.adlNav||!this.activityTree.currentActivity)return;this.navigationLookAhead.invalidateCache();const e=this.navigationLookAhead.predictContinueEnabled();try{this.adlNav.request_valid.continue=e?"true":"false"}catch(e){}const t=this.navigationLookAhead.predictPreviousEnabled();try{this.adlNav.request_valid.previous=t?"true":"false"}catch(e){}const i=this.activityTree.getAllActivities(),s={},r={};for(const e of i){const t=this.validateRequest("choice",e.id);s[e.id]=t.valid?"true":"false";const i=this.validateRequest("jump",e.id);r[e.id]=i.valid?"true":"false"}try{this.adlNav.request_valid.choice=s}catch(e){}try{this.adlNav.request_valid.jump=r}catch(e){}const n=this.getEffectiveHideLmsUiCallback?this.getEffectiveHideLmsUiCallback(this.activityTree.currentActivity):[];this.fireEvent("onNavigationValidityUpdate",{continue:e,previous:t,choice:s,jump:r,hideLmsUi:n})}getAllPredictions(){return this.navigationLookAhead.getAllPredictions()}predictContinueEnabled(){return this.navigationLookAhead.predictContinueEnabled()}predictPreviousEnabled(){return this.navigationLookAhead.predictPreviousEnabled()}predictChoiceEnabled(e){return this.navigationLookAhead.predictChoiceEnabled(e)}getAvailableChoices(){return this.navigationLookAhead.getAvailableChoices()}invalidateCache(){this.navigationLookAhead.invalidateCache()}fireEvent(e,t){try{this.eventCallback&&this.eventCallback(e,t)}catch(t){console.warn(`Failed to fire sequencing event ${e}: ${t}`)}}}var qi=Object.defineProperty,Di=(e,t,i)=>((e,t,i)=>t in e?qi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Li{constructor(e){Di(this,"globalObjectiveMap",new Map),Di(this,"eventCallback",null),this.eventCallback=e||null}initialize(e){try{this.globalObjectiveMap.clear(),e&&this.collectObjectives(e),this.fireEvent("onGlobalObjectiveMapInitialized",{objectiveCount:this.globalObjectiveMap.size,timestamp:(new Date).toISOString()})}catch(e){this.fireEvent("onGlobalObjectiveMapError",{error:e instanceof Error?e.message:e+"",timestamp:(new Date).toISOString()})}}collectObjectives(e){const objectives=e.getAllObjectives();if(0===objectives.length){const t=e.id+"_default_objective";this.globalObjectiveMap.has(t)||this.globalObjectiveMap.set(t,{id:t,satisfiedStatus:e.objectiveSatisfiedStatus,satisfiedStatusKnown:e.objectiveMeasureStatus,normalizedMeasure:e.objectiveNormalizedMeasure,normalizedMeasureKnown:e.objectiveMeasureStatus,progressMeasure:e.progressMeasure,progressMeasureKnown:e.progressMeasureStatus,completionStatus:e.completionStatus,completionStatusKnown:e.completionStatus!==H,readSatisfiedStatus:!0,writeSatisfiedStatus:!0,readNormalizedMeasure:!0,writeNormalizedMeasure:!0,readCompletionStatus:!0,writeCompletionStatus:!0,readProgressMeasure:!0,writeProgressMeasure:!0,satisfiedByMeasure:null!==e.scaledPassingScore,minNormalizedMeasure:e.scaledPassingScore,updateAttemptData:!0})}for(const e of objectives){const t=e.mapInfo.length>0?e.mapInfo:[{targetObjectiveID:e.id,readSatisfiedStatus:!0,writeSatisfiedStatus:!0,readNormalizedMeasure:!0,writeNormalizedMeasure:!0,readProgressMeasure:!0,writeProgressMeasure:!0,readCompletionStatus:!0,writeCompletionStatus:!0,updateAttemptData:e.isPrimary}];for(const i of t){const t=i.targetObjectiveID||e.id;this.globalObjectiveMap.has(t)||this.globalObjectiveMap.set(t,{id:t,satisfiedStatus:e.satisfiedStatus,satisfiedStatusKnown:e.measureStatus,normalizedMeasure:e.normalizedMeasure,normalizedMeasureKnown:e.measureStatus,progressMeasure:e.progressMeasure,progressMeasureKnown:e.progressMeasureStatus,completionStatus:e.completionStatus,completionStatusKnown:e.completionStatus!==H,readSatisfiedStatus:i.readSatisfiedStatus??!1,writeSatisfiedStatus:i.writeSatisfiedStatus??!1,readNormalizedMeasure:i.readNormalizedMeasure??!1,writeNormalizedMeasure:i.writeNormalizedMeasure??!1,readProgressMeasure:i.readProgressMeasure??!1,writeProgressMeasure:i.writeProgressMeasure??!1,readCompletionStatus:i.readCompletionStatus??!1,writeCompletionStatus:i.writeCompletionStatus??!1,readRawScore:i.readRawScore??!1,writeRawScore:i.writeRawScore??!1,readMinScore:i.readMinScore??!1,writeMinScore:i.writeMinScore??!1,readMaxScore:i.readMaxScore??!1,writeMaxScore:i.writeMaxScore??!1,satisfiedByMeasure:e.satisfiedByMeasure,minNormalizedMeasure:e.minNormalizedMeasure,updateAttemptData:i.updateAttemptData??e.isPrimary})}}for(const t of e.children)this.collectObjectives(t)}getMap(){return this.globalObjectiveMap}getSnapshot(){return this.serialize()}restoreSnapshot(e){this.restore(e)}updateObjective(e,t){try{this.globalObjectiveMap.set(e,{...this.globalObjectiveMap.get(e),...t,lastUpdated:(new Date).toISOString()}),this.fireEvent("onGlobalObjectiveUpdated",{objectiveId:e,data:t,timestamp:(new Date).toISOString()})}catch(t){this.fireEvent("onGlobalObjectiveUpdateError",{objectiveId:e,error:t instanceof Error?t.message:t+"",timestamp:(new Date).toISOString()})}}synchronize(e,t){e&&t.processGlobalObjectiveMapping(e,this.globalObjectiveMap)}getObjective(e){return this.globalObjectiveMap.get(e)}hasObjective(e){return this.globalObjectiveMap.has(e)}getObjectiveIds(){return Array.from(this.globalObjectiveMap.keys())}getObjectiveCount(){return this.globalObjectiveMap.size}clear(){this.globalObjectiveMap.clear(),this.fireEvent("onGlobalObjectiveMapCleared",{timestamp:(new Date).toISOString()})}serialize(){const e={};return this.globalObjectiveMap.forEach((t,id)=>{e[id]={...t}}),e}restore(e){if(this.globalObjectiveMap.clear(),e){for(const[id,t]of Object.entries(e))this.globalObjectiveMap.set(id,{...t});this.fireEvent("onGlobalObjectiveMapRestored",{objectiveCount:this.globalObjectiveMap.size,timestamp:(new Date).toISOString()})}}fireEvent(e,t){try{this.eventCallback&&this.eventCallback(e,t)}catch(t){console.warn(`Failed to fire global objective event ${e}: ${t}`)}}}var Pi=Object.defineProperty,zi=(e,t,i)=>((e,t,i)=>t in e?Pi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Fi{constructor(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;zi(this,"activityTree"),zi(this,"globalObjectiveService"),zi(this,"rollupProcess"),zi(this,"adlNav"),zi(this,"eventCallback"),zi(this,"getEffectiveHideLmsUiCallback",null),zi(this,"getEffectiveAuxiliaryResourcesCallback",null),zi(this,"contentDeliveredGetter",null),zi(this,"contentDeliveredSetter",null),this.activityTree=e,this.globalObjectiveService=t,this.rollupProcess=i,this.adlNav=s,this.eventCallback=r}setGetEffectiveHideLmsUiCallback(e){this.getEffectiveHideLmsUiCallback=e}setGetEffectiveAuxiliaryResourcesCallback(e){this.getEffectiveAuxiliaryResourcesCallback=e}setContentDeliveredAccessors(e,t){this.contentDeliveredGetter=e,this.contentDeliveredSetter=t}getState(){return{version:"1.0",timestamp:(new Date).toISOString(),contentDelivered:!!this.contentDeliveredGetter&&this.contentDeliveredGetter(),currentActivity:this.activityTree.currentActivity?.id||null,suspendedActivity:this.activityTree.suspendedActivity?.id||null,activityStates:this.serializeActivities(),navigationState:this.getNavigationState(),globalObjectiveMap:this.globalObjectiveService.getSnapshot()}}restoreState(e){try{if(!e||"1.0"!==e.version)return console.warn("Incompatible sequencing state version"),!1;if(this.contentDeliveredSetter&&this.contentDeliveredSetter(e.contentDelivered||!1),e.globalObjectiveMap&&this.globalObjectiveService.restoreSnapshot(e.globalObjectiveMap),e.activityStates&&this.deserializeActivities(e.activityStates),e.currentActivity){const t=this.activityTree.getActivity(e.currentActivity);t&&(this.activityTree.currentActivity=t,t.isActive=!0)}if(e.suspendedActivity){const t=this.activityTree.getActivity(e.suspendedActivity);t&&(this.activityTree.suspendedActivity=t,t.isSuspended=!0)}return e.navigationState&&this.restoreNavigationState(e.navigationState),this.activityTree.root&&this.globalObjectiveService.synchronize(this.activityTree.root,this.rollupProcess),console.debug("Sequencing state restored successfully"),!0}catch(e){return console.error("Failed to restore sequencing state: "+e),!1}}serializeActivities(){const e={},t=i=>{e[i.id]={id:i.id,title:i.title,isActive:i.isActive,isSuspended:i.isSuspended,isCompleted:i.isCompleted,completionStatus:i.completionStatus,successStatus:i.successStatus,attemptCount:i.attemptCount,attemptCompletionAmount:i.attemptCompletionAmount,attemptAbsoluteDuration:i.attemptAbsoluteDuration,attemptExperiencedDuration:i.attemptExperiencedDuration,activityAbsoluteDuration:i.activityAbsoluteDuration,activityExperiencedDuration:i.activityExperiencedDuration,objectiveSatisfiedStatus:i.objectiveSatisfiedStatus,objectiveMeasureStatus:i.objectiveMeasureStatus,objectiveNormalizedMeasure:i.objectiveNormalizedMeasure,progressMeasure:i.progressMeasure,progressMeasureStatus:i.progressMeasureStatus,isAvailable:i.isAvailable,isHiddenFromChoice:i.isHiddenFromChoice,location:i.location,attemptAbsoluteStartTime:i.attemptAbsoluteStartTime,objectives:i.getObjectiveStateSnapshot(),auxiliaryResources:i.auxiliaryResources,selectionRandomizationState:{selectionCountStatus:i.sequencingControls.selectionCountStatus,reorderChildren:i.sequencingControls.reorderChildren,childOrder:i.children.map(e=>e.id),selectedChildIds:i.children.filter(e=>e.isAvailable).map(e=>e.id),hiddenFromChoiceChildIds:i.children.filter(e=>e.isHiddenFromChoice).map(e=>e.id)}};for(const e of i.children)t(e)};return this.activityTree.root&&t(this.activityTree.root),e}deserializeActivities(e){const t=i=>{const s=e[i.id];s&&(i.isActive=s.isActive||!1,i.isSuspended=s.isSuspended||!1,i.isCompleted=s.isCompleted||!1,i.completionStatus=s.completionStatus||"unknown",i.successStatus=s.successStatus||"unknown",i.attemptCount=s.attemptCount||0,i.attemptCompletionAmount=s.attemptCompletionAmount||0,i.attemptAbsoluteDuration=s.attemptAbsoluteDuration||"PT0H0M0S",i.attemptExperiencedDuration=s.attemptExperiencedDuration||"PT0H0M0S",i.activityAbsoluteDuration=s.activityAbsoluteDuration||"PT0H0M0S",i.activityExperiencedDuration=s.activityExperiencedDuration||"PT0H0M0S",i.objectiveSatisfiedStatus=s.objectiveSatisfiedStatus||!1,i.objectiveMeasureStatus=s.objectiveMeasureStatus||!1,i.objectiveNormalizedMeasure=s.objectiveNormalizedMeasure||0,i.progressMeasure=s.progressMeasure??0,i.progressMeasureStatus=s.progressMeasureStatus||!1,i.isAvailable=!1!==s.isAvailable,i.isHiddenFromChoice=!0===s.isHiddenFromChoice,i.location=s.location||"",i.attemptAbsoluteStartTime=s.attemptAbsoluteStartTime||"",Array.isArray(s.auxiliaryResources)&&(i.auxiliaryResources=s.auxiliaryResources),s.objectives&&i.applyObjectiveStateSnapshot(s.objectives));for(const e of i.children)t(e);if(s?.selectionRandomizationState){const e=s.selectionRandomizationState,t=i.sequencingControls;void 0!==e.selectionCountStatus&&(t.selectionCountStatus=e.selectionCountStatus),void 0!==e.reorderChildren&&(t.reorderChildren=e.reorderChildren),e.childOrder&&e.childOrder.length>0&&i.setChildOrder(e.childOrder);const r=Array.isArray(e.selectedChildIds)?new Set(e.selectedChildIds):null,n=Array.isArray(e.hiddenFromChoiceChildIds)?new Set(e.hiddenFromChoiceChildIds):null;if(r||n)for(const e of i.children){if(r){const t=r.has(e.id);e.isAvailable=t,n||(e.isHiddenFromChoice=!t)}n&&(e.isHiddenFromChoice=n.has(e.id))}i.setProcessedChildren(i.children.filter(e=>e.isAvailable))}else i.resetProcessedChildren()};this.activityTree.root&&t(this.activityTree.root)}getNavigationState(){if(!this.adlNav)return null;const e=this.getEffectiveHideLmsUiCallback?this.getEffectiveHideLmsUiCallback(this.activityTree.currentActivity):[],t=this.getEffectiveAuxiliaryResourcesCallback?this.getEffectiveAuxiliaryResourcesCallback(this.activityTree.currentActivity):[];return{request:this.adlNav.request||"_none_",requestValid:{continue:this.adlNav.request_valid?.continue||"false",previous:this.adlNav.request_valid?.previous||"false",choice:"unknown",jump:"unknown",exit:this.adlNav.request_valid?.exit||"false",exitAll:this.adlNav.request_valid?.exitAll||"false",abandon:this.adlNav.request_valid?.abandon||"false",abandonAll:this.adlNav.request_valid?.abandonAll||"false",suspendAll:this.adlNav.request_valid?.suspendAll||"false"},hideLmsUi:e,auxiliaryResources:t}}restoreNavigationState(e){if(this.adlNav&&e)try{if(e.requestValid){const t=e.requestValid;this.adlNav.request_valid.continue=t.continue||"false",this.adlNav.request_valid.previous=t.previous||"false",this.adlNav.request_valid.exit=t.exit||"false",this.adlNav.request_valid.exitAll=t.exitAll||"false",this.adlNav.request_valid.abandon=t.abandon||"false",this.adlNav.request_valid.abandonAll=t.abandonAll||"false",this.adlNav.request_valid.suspendAll=t.suspendAll||"false"}}catch(e){console.warn("Could not fully restore navigation state: "+e)}}getSuspensionState(){const e={activityTree:this.activityTree.root?this.activityTree.root.getSuspensionState():null,currentActivityId:this.activityTree.currentActivity?.id||null,suspendedActivityId:this.activityTree.suspendedActivity?.id||null,globalObjectives:this.globalObjectiveService.getSnapshot(),timestamp:(new Date).toISOString()};return this.fireEvent("onSuspensionStateCaptured",{hasActivityTree:!!e.activityTree,currentActivityId:e.currentActivityId,suspendedActivityId:e.suspendedActivityId,globalObjectiveCount:Object.keys(e.globalObjectives).length,timestamp:e.timestamp}),e}restoreSuspensionState(e){if(e)try{if(e.globalObjectives&&this.globalObjectiveService.restoreSnapshot(e.globalObjectives),e.activityTree&&this.activityTree.root&&this.activityTree.root.restoreSuspensionState(e.activityTree),e.currentActivityId){const t=this.activityTree.getActivity(e.currentActivityId);t&&(this.activityTree.currentActivity=t)}if(e.suspendedActivityId){const t=this.activityTree.getActivity(e.suspendedActivityId);t&&(this.activityTree.suspendedActivity=t)}this.fireEvent("onSuspensionStateRestored",{currentActivityId:e.currentActivityId,suspendedActivityId:e.suspendedActivityId,globalObjectiveCount:e.globalObjectives?Object.keys(e.globalObjectives).length:0,originalTimestamp:e.timestamp,restoreTimestamp:(new Date).toISOString()})}catch(e){throw this.fireEvent("onSuspensionStateRestoreError",{error:e instanceof Error?e.message:e+"",timestamp:(new Date).toISOString()}),e}else this.fireEvent("onSuspensionStateRestoreError",{error:"No suspension state provided",timestamp:(new Date).toISOString()})}fireEvent(e,t){try{this.eventCallback&&this.eventCallback(e,t)}catch(t){console.warn(`Failed to fire state manager event ${e}: ${t}`)}}}var ki=Object.defineProperty,Vi=(e,t,i)=>((e,t,i)=>t in e?ki(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Hi{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=arguments.length>2?arguments[2]:void 0;Vi(this,"activityTree"),Vi(this,"eventCallback"),Vi(this,"now"),Vi(this,"contentDeliveredGetter",null),this.activityTree=e,this.eventCallback=t,this.now=i?.now||(()=>new Date)}setContentDeliveredGetter(e){this.contentDeliveredGetter=e}validateTreeConsistency(e){if(!this.activityTree.root)return{consistent:!1,exception:"DB.1.1-4"};if(!this.isActivityPartOfTree(e,this.activityTree.root))return{consistent:!1,exception:"DB.1.1-5"};const t=this.getActiveActivities();if(t.length>1)return this.fireEvent("onStateInconsistency",{activeActivities:t.map(e=>e.id),targetActivity:e.id}),{consistent:!1,exception:"DB.1.1-6"};let i=e;for(;i?.parent;){if(!i.parent.children.includes(i))return{consistent:!1,exception:"DB.1.1-7"};i=i.parent}return{consistent:!0,exception:null}}validateResources(e){const t=this.getRequiredResources(e);for(const e of t)if(!this.isResourceAvailable(e))return{available:!1,exception:"DB.1.1-8"};return this.checkSystemLimits().adequate?{available:!0,exception:null}:{available:!1,exception:"DB.1.1-9"}}validateConcurrentDelivery(e){return this.contentDeliveredGetter&&this.contentDeliveredGetter()&&this.activityTree.currentActivity&&this.activityTree.currentActivity!==e?{allowed:!1,exception:"DB.1.1-10"}:this.hasPendingDeliveryRequests()?{allowed:!1,exception:"DB.1.1-11"}:this.isDeliveryLocked()?{allowed:!1,exception:"DB.1.1-12"}:{allowed:!0,exception:null}}validateDependencies(e){const t=this.getPrerequisites(e);for(const i of t)if(!this.isPrerequisiteSatisfied(i,e))return{satisfied:!1,exception:"DB.1.1-13"};const i=this.getObjectiveDependencies(e);for(const e of i)if(!this.isObjectiveDependencySatisfied(e))return{satisfied:!1,exception:"DB.1.1-14"};return this.getSequencingRuleDependencies(e).satisfied?{satisfied:!0,exception:null}:{satisfied:!1,exception:"DB.1.1-15"}}checkActivity(e){return!!e.isAvailable&&!!this.checkLimitConditions(e)}checkLimitConditions(e){let result=!0,t="";if(null!==e.attemptLimit&&e.attemptLimit>0&&(e.attemptLimit>e.attemptCount||(result=!1,t="Attempt limit exceeded")),result&&e.attemptAbsoluteDurationLimit){const i=r(e.attemptAbsoluteDurationLimit,ne);i>0&&(i>r(e.attemptAbsoluteDuration||"PT0H0M0S",ne)||(result=!1,t="Attempt duration limit exceeded"))}if(result&&e.activityAbsoluteDurationLimit){const i=r(e.activityAbsoluteDurationLimit,ne);i>0&&(i>r(e.activityAbsoluteDuration||"PT0H0M0S",ne)||(result=!1,t="Activity duration limit exceeded"))}if(result&&e.beginTimeLimit){const i=this.now();new Date(e.beginTimeLimit)>i&&(result=!1,t="Not yet time to begin")}return result&&e.endTimeLimit&&this.now()>new Date(e.endTimeLimit)&&(result=!1,t="Time limit expired"),this.fireEvent("onLimitConditionCheck",{activity:e,result:result,failureReason:t,checks:{attemptLimit:e.attemptLimit,attemptCount:e.attemptCount,attemptDurationLimit:e.attemptAbsoluteDurationLimit,activityDurationLimit:e.activityAbsoluteDurationLimit,beginTimeLimit:e.beginTimeLimit,endTimeLimit:e.endTimeLimit}}),result}isActivityPartOfTree(e,t){if(e===t)return!0;for(const i of t.children)if(this.isActivityPartOfTree(e,i))return!0;return!1}getActiveActivities(){const e=[];return this.activityTree.root&&this.collectActiveActivities(this.activityTree.root,e),e}collectActiveActivities(e,t){e.isActive&&t.push(e);for(const i of e.children)this.collectActiveActivities(i,t)}getRequiredResources(e){const t=[],i=(e.title+" "+e.location).toLowerCase();return(i.includes("video")||i.includes("multimedia"))&&t.push("video-codec"),(i.includes("audio")||i.includes("sound"))&&t.push("audio-codec"),(i.includes("flash")||i.includes(".swf"))&&t.push("flash-plugin"),(i.includes("java")||i.includes("applet"))&&t.push("java-runtime"),e.children&&e.children.length>0&&t.push("high-bandwidth"),e.attemptAbsoluteDurationLimit&&this.parseDurationToMinutes(e.attemptAbsoluteDurationLimit)>60&&t.push("extended-storage"),e.attemptLimit&&e.attemptLimit>1&&t.push("persistent-storage"),t}isResourceAvailable(e){try{switch(e){case"video-codec":return!!document.createElement("video").canPlayType;case"audio-codec":return!!document.createElement("audio").canPlayType;case"flash-plugin":return navigator.plugins&&Array.from(navigator.plugins).some(e=>"Shockwave Flash"===e.name);case"java-runtime":return navigator.plugins&&Array.from(navigator.plugins).some(e=>"Java"===e.name);case"high-bandwidth":if("connection"in navigator){const e=navigator.connection;return"4g"===e.effectiveType||e.downlink>5}return!0;case"extended-storage":default:return!0;case"persistent-storage":return"localStorage"in window&&"sessionStorage"in window}}catch(e){return!1}}checkSystemLimits(){try{let e=!0;if("memory"in performance){const t=performance.memory;t.usedJSHeapSize/t.jsHeapSizeLimit>.8&&(e=!1)}if("deviceMemory"in navigator&&2>navigator.deviceMemory&&(e=!1),"hardwareConcurrency"in navigator&&2>navigator.hardwareConcurrency&&(e=!1),"connection"in navigator){const t=navigator.connection;(t.saveData||"slow-2g"===t.effectiveType)&&(e=!1)}return{adequate:e}}catch(e){return{adequate:!0}}}hasPendingDeliveryRequests(){return this.activityTree&&this.activityTree.pendingRequests?this.activityTree.pendingRequests.length>0:!("undefined"==typeof window||!window.pendingScormRequests)&&window.pendingScormRequests>0}isDeliveryLocked(){return!(!this.activityTree||!this.activityTree.navigationLocked)||(!(!this.activityTree||!this.activityTree.terminationInProgress)||(!this.checkSystemLimits().adequate||!("undefined"==typeof window||!window.scormMaintenanceMode)))}getPrerequisites(e){const t=[];if(e.sequencingRules&&e.sequencingRules.preConditionRules)for(const i of e.sequencingRules.preConditionRules)if(i.conditions&&i.conditions.length>0)for(const s of i.conditions)s.referencedObjectiveID&&s.referencedObjectiveID!==e.id&&t.push(s.referencedObjectiveID);if(e.parent&&e.sequencingControls&&!e.sequencingControls.choiceExit){const i=e.parent.children;if(i){const s=i.indexOf(e);for(let e=0;s>e;e++){const s=i[e];s&&t.push(s.id)}}}return e.prerequisiteActivities&&t.push(...e.prerequisiteActivities),Array.from(new Set(t))}isPrerequisiteSatisfied(e,t){const i=this.activityTree.getActivity(e);return!!i&&"completed"===i.completionStatus}getObjectiveDependencies(e){const t=[],objectives=e.objectives;if(objectives&&objectives.length>0)for(const e of objectives)e.globalObjectiveID&&t.push(e.globalObjectiveID),!e.satisfiedByMeasure&&e.readNormalizedMeasure&&t.push(e.id+"_measure");if(e.sequencingRules){const i=[...e.sequencingRules.preConditionRules||[],...e.sequencingRules.exitConditionRules||[],...e.sequencingRules.postConditionRules||[]];for(const s of i)if(s.conditions&&s.conditions.length>0)for(const i of s.conditions)i.objectiveReference&&i.objectiveReference!==e.id&&t.push(i.objectiveReference)}return Array.from(new Set(t))}isObjectiveDependencySatisfied(e){if(this.activityTree&&this.activityTree.globalObjectives){const t=this.activityTree.globalObjectives[e];if(t)return!0===t.satisfied&&!0===t.statusKnown}if(e.endsWith("_measure")){const t=e.replace("_measure","");if(this.activityTree&&this.activityTree.globalObjectives){const e=this.activityTree.globalObjectives[t];if(e)return!0===e.measureKnown&&e.normalizedMeasure>=0}}const t=this.activityTree.getActivity(e);return!!t&&t.objectiveSatisfiedStatus&&t.objectiveMeasureStatus}getSequencingRuleDependencies(e){let t=!0;try{if(e.sequencingRules&&e.sequencingRules.preConditionRules)for(const i of e.sequencingRules.preConditionRules)if(i.conditions&&i.conditions.length>0)for(const s of i.conditions)switch(s.conditionType||s.condition){case"activityProgressKnown":e.progressMeasureStatus||(t=!1);break;case"objectiveStatusKnown":case"objectiveSatisfied":this.isObjectiveDependencySatisfied(s.referencedObjectiveID||e.id)||(t=!1);break;case"attemptLimitExceeded":null===e.attemptLimit&&(t=!1);break;case"timeLimitExceeded":e.attemptAbsoluteDurationLimit||e.activityAbsoluteDurationLimit||(t=!1);break;case"always":case"never":break;default:t=!1}if(e.sequencingRules&&e.sequencingRules.exitConditionRules)for(const i of e.sequencingRules.exitConditionRules)if(i.conditions&&i.conditions.length>0)for(const s of i.conditions)["objectiveStatusKnown","objectiveSatisfied"].includes(s.conditionType||s.condition)&&(this.isObjectiveDependencySatisfied(s.referencedObjectiveID||e.id)||(t=!1));if(e.rollupRules&&e.rollupRules.rules)for(const i of e.rollupRules.rules)if(i.conditions&&i.conditions.length>0&&e.children&&e.children.length>0)for(const i of e.children)if(!i.isCompleted){t=!1;break}}catch(e){t=!1}return{satisfied:t}}parseDurationToMinutes(e){return r(e,ne)/60}fireEvent(e,t){try{this.eventCallback&&this.eventCallback(e,t)}catch(t){console.warn(`Failed to fire delivery validator event ${e}: ${t}`)}}}var Bi=Object.defineProperty,Ui=(e,t,i)=>((e,t,i)=>t in e?Bi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class $i{constructor(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,n=arguments.length>5?arguments[5]:void 0;Ui(this,"activityTree"),Ui(this,"sequencingProcess"),Ui(this,"rollupProcess"),Ui(this,"adlNav"),Ui(this,"eventCallback",null),Ui(this,"terminationHandler"),Ui(this,"deliveryHandler"),Ui(this,"navigationValidityService"),Ui(this,"globalObjectiveService"),Ui(this,"stateManager"),Ui(this,"deliveryValidator"),Ui(this,"navigationLookAhead"),Ui(this,"enhancedDeliveryValidation"),Ui(this,"is4thEdition"),this.activityTree=e,this.sequencingProcess=t,this.rollupProcess=i,this.adlNav=s,this.eventCallback=r,this.enhancedDeliveryValidation=!0===n?.enhancedDeliveryValidation,this.is4thEdition=n?.is4thEdition||!1,this.globalObjectiveService=new Li(r||void 0),this.globalObjectiveService.initialize(e.root);const o={};n?.now&&(o.now=n.now),this.deliveryValidator=new Hi(e,r,o);const a={};n?.getCMIData&&(a.getCMIData=n.getCMIData),void 0!==n?.is4thEdition&&(a.is4thEdition=n.is4thEdition),this.terminationHandler=new bi(e,t,i,this.globalObjectiveService.getMap(),r,a);const c={};n?.now&&(c.now=n.now),n?.defaultHideLmsUi&&(c.defaultHideLmsUi=n.defaultHideLmsUi),n?.defaultAuxiliaryResources&&(c.defaultAuxiliaryResources=n.defaultAuxiliaryResources),this.deliveryHandler=new wi(e,i,this.globalObjectiveService.getMap(),s,r,c),this.navigationValidityService=new xi(e,t,s,r),this.stateManager=new Fi(e,this.globalObjectiveService,i,s,r),this.navigationLookAhead=this.navigationValidityService.getNavigationLookAhead(),this.setupCallbacks()}setupCallbacks(){this.terminationHandler.setInvalidateCacheCallback(()=>{this.navigationLookAhead.invalidateCache()}),this.deliveryHandler.setCheckActivityCallback(e=>this.deliveryValidator.checkActivity(e)),this.deliveryHandler.setInvalidateCacheCallback(()=>{this.navigationLookAhead.invalidateCache()}),this.deliveryHandler.setUpdateNavigationValidityCallback(()=>{this.navigationValidityService.updateNavigationValidity()}),this.deliveryHandler.setClearSuspendedActivityCallback(()=>{this.terminationHandler.clearSuspendedActivity()}),this.deliveryValidator.setContentDeliveredGetter(()=>this.deliveryHandler.hasContentBeenDelivered()),this.navigationValidityService.setGetEffectiveHideLmsUiCallback(e=>this.deliveryHandler.getEffectiveHideLmsUi(e)),this.stateManager.setGetEffectiveHideLmsUiCallback(e=>this.deliveryHandler.getEffectiveHideLmsUi(e)),this.stateManager.setGetEffectiveAuxiliaryResourcesCallback(e=>this.deliveryHandler.getEffectiveAuxiliaryResources(e)),this.stateManager.setContentDeliveredAccessors(()=>this.deliveryHandler.hasContentBeenDelivered(),e=>this.deliveryHandler.setContentDelivered(e))}processNavigationRequest(e){let t=arguments.length>2?arguments[2]:void 0;const i=this.navigationValidityService.validateRequest(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:null);if(!i.valid)return new Ai(!1,null,i.exception);if(i.terminationRequest){const s=!!i.sequencingRequest,r=this.terminationHandler.processTerminationRequest(i.terminationRequest,s,t);if(!r.valid)return new Ai(!1,null,r.exception||"TB.2.3-1");if(null!==r.sequencingRequest&&(s||r.sequencingRequest!==xe.EXIT)&&(i.sequencingRequest=r.sequencingRequest),!i.sequencingRequest)return i.terminationRequest!==xe.EXIT_ALL&&i.terminationRequest!==xe.ABANDON_ALL||this.fireEvent("onSequencingSessionEnd",{reason:i.terminationRequest===xe.EXIT_ALL?"exit_all":"abandon_all",navigationRequest:e}),new Ai(!0,null)}if(i.sequencingRequest){const t=this.sequencingProcess.sequencingRequestProcess(i.sequencingRequest,i.targetActivityId);if(t.endSequencingSession)return this.fireEvent("onSequencingSessionEnd",{reason:"end_of_content",exception:t.exception,navigationRequest:e}),new Ai(!1,null,t.exception||"SESSION_ENDED");if(t.exception)return new Ai(!1,null,t.exception);if(t.deliveryRequest===qe.DELIVER&&t.targetActivity)return this.activityTree.root&&(this.rollupProcess.validateRollupStateConsistency(this.activityTree.root)||this.fireEvent("onSequencingDebug",{message:"Rollup state inconsistency detected before delivery",activityId:this.activityTree.root.id})),this.rollupProcess.processGlobalObjectiveMapping(t.targetActivity,this.globalObjectiveService.getMap()),this.processDelivery(t.targetActivity)}return new Ai(!1,null,"OP.1-1")}processDelivery(e){if(this.enhancedDeliveryValidation){const t=this.deliveryValidator.validateTreeConsistency(e);if(!t.consistent)return new Ai(!1,null,t.exception);const i=this.deliveryValidator.validateResources(e);if(!i.available)return new Ai(!1,null,i.exception);const s=this.deliveryValidator.validateConcurrentDelivery(e);if(!s.allowed)return new Ai(!1,null,s.exception);const r=this.deliveryValidator.validateDependencies(e);if(!r.satisfied)return new Ai(!1,null,r.exception)}const t=this.deliveryHandler.processDeliveryRequest(e);return t.valid&&(this.deliveryHandler.contentDeliveryEnvironmentProcess(t.targetActivity),this.navigationLookAhead.invalidateCache(),this.activityTree.root&&this.rollupProcess.validateRollupStateConsistency(this.activityTree.root)),t}hasContentBeenDelivered(){return this.deliveryHandler.hasContentBeenDelivered()}isDeliveryInProgress(){return this.deliveryHandler.isDeliveryInProgress()}resetContentDelivered(){this.deliveryHandler.resetContentDelivered()}setContentDelivered(e){this.deliveryHandler.setContentDelivered(e)}updateNavigationValidity(){this.navigationValidityService.updateNavigationValidity()}synchronizeGlobalObjectives(){this.globalObjectiveService.synchronize(this.activityTree.root,this.rollupProcess)}getGlobalObjectiveMap(){return this.globalObjectiveService.getMap()}getGlobalObjectiveMapSnapshot(){return this.globalObjectiveService.getSnapshot()}restoreGlobalObjectiveMapSnapshot(e){this.globalObjectiveService.restoreSnapshot(e)}updateGlobalObjective(e,t){this.globalObjectiveService.updateObjective(e,t)}getSequencingState(){return this.stateManager.getState()}restoreSequencingState(e){return this.stateManager.restoreState(e)}getSuspensionState(){return this.stateManager.getSuspensionState()}restoreSuspensionState(e){this.stateManager.restoreSuspensionState(e)}getNavigationLookAhead(){return this.navigationValidityService.getAllPredictions()}predictContinueEnabled(){return this.navigationValidityService.predictContinueEnabled()}predictPreviousEnabled(){return this.navigationValidityService.predictPreviousEnabled()}predictChoiceEnabled(e){return this.navigationValidityService.predictChoiceEnabled(e)}getAvailableChoices(){return this.navigationValidityService.getAvailableChoices()}invalidateNavigationCache(){this.navigationValidityService.invalidateCache()}applyDeliveryControls(e){e.sequencingControls.completionSetByContent||e.completionStatus===H&&(e.completionStatus=k,e.wasAutoCompleted=!0),e.sequencingControls.objectiveSetByContent||e.successStatus===F&&(e.successStatus=P,e.wasAutoSatisfied=!0)}getEffectiveHideLmsUi(e){return this.deliveryHandler.getEffectiveHideLmsUi(e)}getEffectiveAuxiliaryResources(e){return this.deliveryHandler.getEffectiveAuxiliaryResources(e)}getContentActivityData(e){return this.deliveryHandler.getContentActivityData(e)}terminationRequestProcess(request,e,t){return this.terminationHandler.processTerminationRequest(request,e,t)}contentDeliveryEnvironmentProcess(e){this.deliveryHandler.contentDeliveryEnvironmentProcess(e)}endAttemptProcess(e){this.terminationHandler.endAttempt(e)}handleExitTermination(e,t){return this.terminationHandler.handleExitTermination(e,t)}fireEvent(e,t){try{this.eventCallback&&this.eventCallback(e,t)}catch(t){console.warn(`Failed to fire sequencing event ${e}: ${t}`)}}}var Gi=Object.defineProperty,Yi=(e,t,i)=>((e,t,i)=>t in e?Gi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Wi{constructor(e,cmi,adl,t,i){let s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};Yi(this,"sequencing"),Yi(this,"cmi"),Yi(this,"adl"),Yi(this,"eventService"),Yi(this,"loggingService"),Yi(this,"activityDeliveryService"),Yi(this,"rollupProcess"),Yi(this,"overallSequencingProcess",null),Yi(this,"sequencingProcess",null),Yi(this,"eventListeners",{}),Yi(this,"configuration"),Yi(this,"isInitialized",!1),Yi(this,"isSequencingActive",!1),Yi(this,"lastCMIValues",new Map),Yi(this,"lastSequencingResult",null),this.sequencing=e,this.cmi=cmi,this.adl=adl,this.eventService=t,this.loggingService=i,this.configuration={autoRollupOnCMIChange:!0,autoProgressOnCompletion:!1,validateNavigationRequests:!0,enableEventSystem:!0,logLevel:"info",now:()=>new Date,...s},this.activityDeliveryService=new rt(t,i,{onDeliverActivity:e=>this.handleActivityDelivery(e),onUnloadActivity:e=>this.handleActivityUnload(e),onSequencingComplete:result=>this.handleSequencingComplete(result),onSequencingError:e=>this.handleSequencingError(e)}),this.rollupProcess=new hi,this.configuration.now&&Me.setNowProvider(this.configuration.now),this.setupCMIChangeWatchers(),this.createSequencingProcesses()}createSequencingProcesses(){try{if(this.sequencing.initialized||this.sequencing.initialize(),this.sequencing.adlNav=this.adl.nav,this.sequencing.activityTree.root){const e={};this.configuration.now&&(e.now=this.configuration.now),this.configuration.getAttemptElapsedSeconds&&(e.getAttemptElapsedSeconds=this.configuration.getAttemptElapsedSeconds),this.configuration.getActivityElapsedSeconds&&(e.getActivityElapsedSeconds=this.configuration.getActivityElapsedSeconds),this.sequencingProcess=new tt(this.sequencing.activityTree,this.sequencing.sequencingRules,this.sequencing.sequencingControls,this.adl.nav,e);const t={};this.configuration.now&&(t.now=this.configuration.now),t.defaultHideLmsUi=[...this.sequencing.hideLmsUi],this.sequencing.auxiliaryResources.length>0&&(t.defaultAuxiliaryResources=this.sequencing.auxiliaryResources.map(e=>({resourceId:e.resourceId,purpose:e.purpose}))),t.getCMIData=()=>this.getCMIDataForTransfer(),this.overallSequencingProcess=new $i(this.sequencing.activityTree,this.sequencingProcess,this.rollupProcess,this.adl.nav,(e,t)=>this.handleSequencingProcessEvent(e,t),t),this.sequencing.overallSequencingProcess=this.overallSequencingProcess,this.isInitialized=!0,this.log("info","Sequencing processes created and ready for navigation")}}catch(e){this.log("error","Failed to create sequencing processes: "+e)}}initialize(){try{return this.log("info","Initializing sequencing service for SCO session"),this.isInitialized||this.createSequencingProcesses(),this.shouldAutoStartSequencing()&&!this.isSequencingActive&&this.startSequencing(),this.initializeCMITracking(),this.fireEvent("onSequencingStart",this.sequencing.getCurrentActivity()),this.log("info","Sequencing service initialized successfully"),f}catch(e){const t="Failed to initialize sequencing service: "+e;return this.log("error",t),this.fireEvent("onSequencingError",t,"initialization"),S}}terminate(){try{return this.log("info","Terminating sequencing service"),this.triggerFinalRollup(),this.endSequencing(),this.isInitialized=!1,this.fireEvent("onSequencingEnd"),this.log("info","Sequencing service terminated successfully"),f}catch(e){const t="Failed to terminate sequencing service: "+e;return this.log("error",t),this.fireEvent("onSequencingError",t,"termination"),S}}processNavigationRequest(request,e,t){if(!this.isInitialized||!this.overallSequencingProcess)return this.log("warn",`Navigation request '${request}' ignored - sequencing not initialized`),!1;try{this.log("info",`Processing navigation request: ${request}${e?` (target: ${e})`:""}${t?` (exit: ${t})`:""}`),this.fireEvent("onNavigationRequest",request,e);const i=this.parseNavigationRequest(request);if(null===i)return this.log("warn","Invalid navigation request: "+request),!1;const s=this.overallSequencingProcess.processNavigationRequest(i,e||null,t),r={deliveryRequest:s.valid?qe.DELIVER:qe.DO_NOT_DELIVER,targetActivity:s.targetActivity,exception:s.exception||null,endSequencingSession:!1};return this.lastSequencingResult=r,s.valid&&s.targetActivity?(this.activityDeliveryService.processSequencingResult(r),this.overallSequencingProcess.updateNavigationValidity(),this.log("info",`Navigation request '${request}' resulted in activity delivery: ${s.targetActivity.id}`),!0):(s.exception?(this.log("warn",`Navigation request '${request}' failed: ${s.exception}`),this.fireEvent("onSequencingError",s.exception,"navigation")):this.log("info",`Navigation request '${request}' completed with no activity delivery`),s.valid)}catch(e){const t=`Error processing navigation request '${request}': ${e}`;return this.log("error",t),this.fireEvent("onSequencingError",t,"navigation"),!1}}triggerRollupOnCMIChange(e,t,i){if(this.configuration.autoRollupOnCMIChange&&this.isInitialized&&["cmi.completion_status","cmi.success_status","cmi.score.scaled","cmi.score.raw","cmi.score.min","cmi.score.max","cmi.progress_measure","cmi.objectives.n.success_status","cmi.objectives.n.completion_status","cmi.objectives.n.score.scaled"].some(t=>e.startsWith(t)))try{this.log("debug",`Triggering rollup due to CMI change: ${e} = ${i} (was ${t})`);const s=this.sequencing.getCurrentActivity();if(!s)return void this.log("debug","No current activity for rollup");this.updateActivityFromCMI(s),this.rollupProcess.overallRollupProcess(s),this.overallSequencingProcess&&this.overallSequencingProcess.synchronizeGlobalObjectives(),this.overallSequencingProcess&&this.overallSequencingProcess.updateNavigationValidity(),this.fireEvent("onRollupComplete",s),this.log("debug","Rollup completed for activity: "+s.id)}catch(e){const t="Error during rollup on CMI change: "+e;this.log("error",t),this.fireEvent("onSequencingError",t,"rollup")}}setEventListeners(e){this.eventListeners={...this.eventListeners,...e},this.log("debug","Sequencing event listeners updated")}updateConfiguration(e){this.configuration={...this.configuration,...e},this.log("debug","Sequencing configuration updated")}getSequencingState(){return{isInitialized:this.isInitialized,isActive:this.isSequencingActive,currentActivity:this.sequencing.getCurrentActivity(),rootActivity:this.sequencing.getRootActivity(),lastSequencingResult:this.lastSequencingResult}}getOverallSequencingProcess(){return this.overallSequencingProcess}isDeliveryInProgress(){return this.overallSequencingProcess?.isDeliveryInProgress()??!1}setupCMIChangeWatchers(){}initializeCMITracking(){this.lastCMIValues.set("cmi.completion_status",this.cmi.completion_status),this.lastCMIValues.set("cmi.success_status",this.cmi.success_status),this.lastCMIValues.set("cmi.progress_measure",this.cmi.progress_measure),this.cmi.score&&(this.lastCMIValues.set("cmi.score.scaled",this.cmi.score.scaled),this.lastCMIValues.set("cmi.score.raw",this.cmi.score.raw))}shouldAutoStartSequencing(){return!(!this.sequencing.activityTree.root||this.sequencing.getCurrentActivity())}startSequencing(){if(this.overallSequencingProcess)try{this.processNavigationRequest("start")&&(this.isSequencingActive=!0,this.log("info","Automatic sequencing started"))}catch(e){this.log("error","Failed to start automatic sequencing: "+e)}}endSequencing(){this.isSequencingActive=!1,this.activityDeliveryService.reset()}triggerFinalRollup(){try{const e=this.sequencing.getCurrentActivity();e&&(this.updateActivityFromCMI(e),this.rollupProcess.overallRollupProcess(e),this.overallSequencingProcess&&this.overallSequencingProcess.synchronizeGlobalObjectives(),this.log("info","Final rollup completed"))}catch(e){this.log("error","Error during final rollup: "+e)}}updateActivityFromCMI(e){if("unknown"!==this.cmi.completion_status&&(e.completionStatus=this.cmi.completion_status,e.attemptProgressStatus=!0),"unknown"!==this.cmi.success_status&&(e.successStatus=this.cmi.success_status,e.objectiveSatisfiedStatus="passed"===this.cmi.success_status,e.objectiveMeasureStatus=!0,e.primaryObjective&&(e.primaryObjective.progressStatus=!0)),""!==this.cmi.progress_measure){const t=parseFloat(this.cmi.progress_measure);isNaN(t)||(e.progressMeasure=t,e.progressMeasureStatus=!0)}if(this.cmi.score&&""!==this.cmi.score.scaled){const t=parseFloat(this.cmi.score.scaled);isNaN(t)||(e.objectiveNormalizedMeasure=t,e.objectiveMeasureStatus=!0,e.primaryObjective&&(e.primaryObjective.progressStatus=!0))}e.primaryObjective&&e.primaryObjective.updateFromActivity(e)}getCMIDataForTransfer(){const e={completion_status:this.cmi.completion_status,success_status:this.cmi.success_status,progress_measure:this.cmi.progress_measure,score:{scaled:this.cmi.score?.scaled||"",raw:this.cmi.score?.raw||"",min:this.cmi.score?.min||"",max:this.cmi.score?.max||""},objectives:[]};if(this.cmi.objectives&&this.cmi.objectives.childArray)for(const t of this.cmi.objectives.childArray){const i=t;i.id&&e.objectives.push({id:i.id,success_status:i.success_status,completion_status:i.completion_status,progress_measure:i.progress_measure,score:{scaled:i.score?.scaled||"",raw:i.score?.raw||"",min:i.score?.min||"",max:i.score?.max||""}})}return e}parseNavigationRequest(request){let e=request;if(e.startsWith("_")&&"_none_"!==e&&(e=e.substring(1)),request.includes("choice"))return Ii.CHOICE;if(request.includes("jump"))return Ii.JUMP;switch(e){case"start":return Ii.START;case"resumeAll":return Ii.RESUME_ALL;case"continue":return Ii.CONTINUE;case"previous":return Ii.PREVIOUS;case"exit":return Ii.EXIT;case"exitAll":return Ii.EXIT_ALL;case"abandon":return Ii.ABANDON;case"abandonAll":return Ii.ABANDON_ALL;case"suspendAll":return Ii.SUSPEND_ALL;case"_none_":return Ii.NOT_VALID;default:return null}}handleActivityDelivery(e){this.log("info",`Activity delivered: ${e.id} - ${e.title}`),this.fireEvent("onActivityDelivery",e)}handleActivityUnload(e){this.log("info",`Activity unloaded: ${e.id} - ${e.title}`),this.fireEvent("onActivityUnload",e)}handleSequencingComplete(result){this.log("debug","Sequencing completed",result)}handleSequencingError(e){this.log("error","Sequencing error: "+e),this.fireEvent("onSequencingError",e,"sequencing")}fireEvent(e){if(this.configuration.enableEventSystem){for(var t=arguments.length,i=Array(t>1?t-1:0),s=1;t>s;s++)i[s-1]=arguments[s];"onSequencingDebug"!==e&&this.fireDebugEvent(e+" fired",{eventType:e,argsLength:i.length});try{const t=this.eventListeners[e];if(t&&"function"==typeof t)try{t(...i),this.log("debug",`Internal listener for ${e} executed successfully`)}catch(t){this.log("error",`Internal listener for ${e} failed: ${t}`)}try{this.eventService.processListeners("Sequencing."+e,i[0],...i.slice(1)),this.log("debug",`Event service listeners for ${e} processed`)}catch(t){this.log("warn",`Event service failed for ${e}: ${t}`)}try{if("undefined"!=typeof window&&window.scormSequencingEvents){const t=window.scormSequencingEvents;t[e]&&"function"==typeof t[e]&&(t[e](...i),this.log("debug",`Global listener for ${e} executed`))}}catch(t){this.log("warn",`Global listener for ${e} failed: ${t}`)}}catch(t){this.log("error",`Critical error firing event ${e}: ${t}`)}}}fireDebugEvent(e,t){try{const i=this.eventListeners.onSequencingDebug;i&&"function"==typeof i&&i(e,{timestamp:(new Date).toISOString(),...t});try{this.eventService.processListeners("Sequencing.onSequencingDebug",e,{timestamp:(new Date).toISOString(),...t})}catch(e){}}catch(e){console.debug("Debug event failed: "+e)}}fireActivityAttemptStart(e){this.fireEvent("onActivityAttemptStart",e),this.fireDebugEvent("Activity attempt started",{activityId:e.id,title:e.title,attemptCount:e.attemptCount})}fireActivityAttemptEnd(e){this.fireEvent("onActivityAttemptEnd",e),this.fireDebugEvent("Activity attempt ended",{activityId:e.id,title:e.title,completionStatus:e.completionStatus,successStatus:e.successStatus})}fireLimitConditionCheck(e,result){this.fireEvent("onLimitConditionCheck",e,result),this.fireDebugEvent("Limit condition check",{activityId:e.id,result:result,attemptCount:e.attemptCount,attemptLimit:e.attemptLimit})}fireNavigationValidityUpdate(e){this.fireEvent("onNavigationValidityUpdate",e),this.fireDebugEvent("Navigation validity updated",{validity:e})}fireSequencingStateChange(e){this.fireEvent("onSequencingStateChange",e),this.fireDebugEvent("Sequencing state changed",{stateKeys:Object.keys(e)})}handleSequencingProcessEvent(e,t){try{switch(e){case"onActivityDelivery":this.fireEvent("onActivityDelivery",t);break;case"onLimitConditionCheck":this.fireLimitConditionCheck(t.activity,t.result);break;case"onActivityAttemptStart":this.fireActivityAttemptStart(t);break;case"onActivityAttemptEnd":this.fireActivityAttemptEnd(t);break;case"onNavigationValidityUpdate":this.fireNavigationValidityUpdate(t);break;case"onSequencingSessionEnd":this.fireEvent("onSequencingSessionEnd",t);break;default:this.fireDebugEvent("Sequencing process event: "+e,t)}}catch(t){this.log("error",`Error handling sequencing process event ${e}: ${t}`)}}log(e,t,i){const s=["debug","info","warn","error"],r=this.configuration.logLevel||"info";if(s.indexOf(e)>=s.indexOf(r))switch(e){case"debug":this.loggingService.debug(`[Sequencing] ${t}${i?" - "+JSON.stringify(i):""}`);break;case"info":this.loggingService.info(`[Sequencing] ${t}${i?" - "+JSON.stringify(i):""}`);break;case"warn":this.loggingService.warn(`[Sequencing] ${t}${i?" - "+JSON.stringify(i):""}`);break;case"error":this.loggingService.error(`[Sequencing] ${t}${i?" - "+JSON.stringify(i):""}`)}}}class Ji{loadFromFlattenedJSON(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=arguments.length>2?arguments[2]:void 0,s=arguments.length>3?arguments[3]:void 0,r=arguments.length>4?arguments[4]:void 0;if(!s())return void console.error("loadFromFlattenedJSON can only be called before the call to lmsInitialize.");const n=/^(cmi\.interactions\.)(\d+)\.(.*)$/,o=/^(cmi\.objectives\.)(\d+)\.(.*)$/,interactions=[],objectives=[],a=[];for(const t in e)if({}.hasOwnProperty.call(e,t)){const i=t.match(n);if(i){interactions.push({key:t,value:e[t],index:+i[2],field:i[3]||""});continue}const s=t.match(o);if(s){objectives.push({key:t,value:e[t],index:+s[2],field:s[3]||""});continue}a.push({key:t,value:e[t]})}interactions.sort((e,t)=>e.index!==t.index?e.index-t.index:"id"===e.field?-1:"id"===t.field?1:"type"===e.field?-1:"type"===t.field?1:e.field.localeCompare(t.field)),objectives.sort((e,t)=>e.index!==t.index?e.index-t.index:"id"===e.field?-1:"id"===t.field?1:e.field.localeCompare(t.field)),a.sort((e,t)=>e.key.localeCompare(t.key));const c=e=>{e.forEach(e=>{const n={};n[e.key]=e.value,this.loadFromJSON(function(e){if(Object(e)!==e||Array.isArray(e))return e;const result={},pattern=/\.?([^.[\]]+)|\[(\d+)]/g;return Object.keys(e).filter(t=>({}.hasOwnProperty.call(e,t))).forEach(t=>{let i=result,s="";const r=RegExp(pattern);Array.from({length:t.match(RegExp(pattern,"g"))?.length??0},()=>r.exec(t)).forEach(e=>{e&&(i=i[s]??(i[s]=e[2]?[]:{}),s=e[2]||e[1]||"")}),i[s]=e[t]}),result[""]??result}(n),t,i,s,r)})};c(interactions),c(objectives),c(a)}loadFromJSON(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=arguments.length>2?arguments[2]:void 0,s=arguments.length>3?arguments[3]:void 0,r=arguments.length>4?arguments[4]:void 0;if(s()){t=void 0!==t?t:"cmi",r(e);for(const n in e)if({}.hasOwnProperty.call(e,n)&&e[n]){const o=(t?t+".":"")+n,a=e[n];if(a.constructor===Array){for(let e=0;a.length>e;e++)if(a[e]){const t=a[e],n=`${o}.${e}`;t.constructor===Object?this.loadFromJSON(t,n,i,s,r):i(n,t)}}else a.constructor===Object?this.loadFromJSON(a,o,i,s,r):i(o,a)}}else console.error("loadFromJSON can only be called before the call to lmsInitialize.")}renderCMIToJSONString(cmi,e){return e?JSON.stringify({cmi:cmi}):JSON.stringify({cmi:cmi},(e,t)=>void 0===t?null:t,2)}renderCMIToJSONObject(cmi,e){return JSON.parse(this.renderCMIToJSONString(cmi,e))}getCommitObject(e,t,i,s,r,n){const o=t||e,a=i?s(e,o):r(e,o);return[B.DEBUG,"1",1,"DEBUG"].includes(n)&&(console.debug("Commit (terminated: "+(e?"yes":"no")+"): "),console.debug(a)),a}}var Ki=Object.defineProperty,Xi=(e,t,i)=>((e,t,i)=>t in e?Ki(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Qi{constructor(e,t){Xi(this,"settings"),Xi(this,"error_codes"),this.settings=e,this.error_codes=t}processHttpRequest(e,t){return arguments.length>2&&void 0!==arguments[2]&&arguments[2]?this._handleImmediateRequest(e,t):this._performSyncXHR(e,t)}_handleImmediateRequest(e,t){const i=this.settings.requestHandler(t)??t,{body:s}=this._prepareRequestBody(i),r=navigator.sendBeacon(e,new Blob([s],{type:"text/plain;charset=UTF-8"}));return{result:r?"true":"false",errorCode:r?0:this.error_codes.GENERAL_COMMIT_FAILURE||391}}_performSyncXHR(e,t){const i=this.settings.requestHandler(t)??t,{body:s,contentType:r}=this._prepareRequestBody(i),n=new XMLHttpRequest;n.open("POST",e,!1),n.setRequestHeader("Content-Type",r),Object.entries(this.settings.xhrHeaders).forEach(e=>{let[t,i]=e;n.setRequestHeader(t,i+"")}),this.settings.xhrWithCredentials&&(n.withCredentials=!0);try{return n.send(s),this.settings.xhrResponseHandler(n)}catch(e){return{result:S,errorCode:this.error_codes.GENERAL_COMMIT_FAILURE||391,errorMessage:e instanceof Error?e.message:e+""}}}_prepareRequestBody(e){return{body:e instanceof Array?e.join("&"):JSON.stringify(e),contentType:e instanceof Array?"application/x-www-form-urlencoded":this.settings.commitRequestDataType}}updateSettings(e){this.settings=e}}function Zi(e,t,i,s){return Mt(e,t,i,T.TYPE_MISMATCH,w,s)}function es(e,t,i,s){if(""===t)throw new w(e,T.VALUE_OUT_OF_RANGE);return Ot(e,t,i,T.VALUE_OUT_OF_RANGE,w)}const ts=new class{validateScore(e,t,i,s,r,n,o){return Mt(e,t,i,r,o)&&(!s||Ot(e,t,s,n,o))}validateScorm12Audio(e,t){return Zi(e,t,W)&&es(e,t,"-1#100")}validateScorm12Language(e,t){return Zi(e,t,G)}validateScorm12Speed(e,t){return Zi(e,t,W)&&es(e,t,"-100#100")}validateScorm12Text(e,t){return Zi(e,t,W)&&es(e,t,"-1#1")}validateReadOnly(e,t){if(t)throw new w(e,T.READ_ONLY_ELEMENT)}};var is=Object.defineProperty,ss=(e,t,i)=>((e,t,i)=>t in e?is(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class rs{constructor(e,t,i,s,r,n,o,a,c){if(ss(this,"_timeout"),ss(this,"_error_codes"),ss(this,"_settings",U),ss(this,"_httpService"),ss(this,"_eventService"),ss(this,"_serializationService"),ss(this,"_errorHandlingService"),ss(this,"_loggingService"),ss(this,"_offlineStorageService"),ss(this,"_cmiValueAccessService"),ss(this,"_courseId",""),ss(this,"startingData"),ss(this,"currentState"),new.target===rs)throw new TypeError("Cannot construct BaseAPI instances directly");this.currentState=0,this._error_codes=e,t&&(this.settings={...U,...t}),void 0!==t?.asyncCommit&&void 0===t.useAsynchronousCommits&&void 0===t.throttleCommits&&(console.warn("DEPRECATED: 'asyncCommit' setting is deprecated and will be removed in a future version. Use 'useAsynchronousCommits: true' and 'throttleCommits: true' instead."),t.asyncCommit&&(this.settings.useAsynchronousCommits=!0,this.settings.throttleCommits=!0)),!this.settings.useAsynchronousCommits&&this.settings.throttleCommits&&(console.warn("throttleCommits cannot be used with synchronous commits. Setting throttleCommits to false."),this.settings.throttleCommits=!1),this._loggingService=a||gt(),this._loggingService.setLogLevel(this.settings.logLevel),this._loggingService.setLogHandler(this.settings.onLogMessage?this.settings.onLogMessage:$),i?this._httpService=i:this.settings.httpService?this._httpService=this.settings.httpService:this.settings.useAsynchronousCommits?(console.warn("WARNING: useAsynchronousCommits=true is not SCORM compliant. Commit failures will not be reported to the SCO, which may cause data loss. This setting should only be used for specific legacy compatibility cases."),this._httpService=new at(this.settings,this._error_codes)):this._httpService=new Qi(this.settings,this._error_codes),this._eventService=s||new Ct((e,t,i,s)=>this.apiLog(e,t,i,s)),this._serializationService=r||new Ji,this._errorHandlingService=o||new St(this._error_codes,(e,t,i,s)=>this.apiLog(e,t,i||B.ERROR,s),(e,t)=>this.getLmsErrorMessageDetails(e,t),void 0),this.settings.enableOfflineSupport&&(this._offlineStorageService=c||new wt(this.settings,this._error_codes,(e,t,i,s)=>this.apiLog(e,t,i,s)),this.settings.courseId&&(this._courseId=this.settings.courseId),this.settings.syncOnTerminate&&this._eventService.on("BeforeTerminate",()=>{this._offlineStorageService?.isDeviceOnline()&&this._courseId&&this._offlineStorageService.hasPendingOfflineData(this._courseId).then(e=>{if(e)return this.apiLog("BeforeTerminate","Syncing pending offline data before termination",B.INFO),this._offlineStorageService?.syncOfflineData()}).then(e=>{e?this.processListeners("OfflineDataSynced"):!1===e&&this.processListeners("OfflineDataSyncFailed")}).catch(e=>{this.apiLog("BeforeTerminate","Error syncing offline data: "+e,B.ERROR),this.processListeners("OfflineDataSyncFailed")})}),this._offlineStorageService&&this._courseId&&this._offlineStorageService.getOfflineData(this._courseId).then(e=>{e&&(this.apiLog("constructor","Found offline data to restore",B.INFO),this.loadFromJSON(e.runtimeData))}).catch(e=>{this.apiLog("constructor","Error retrieving offline data: "+e,B.ERROR)})),this._cmiValueAccessService=new ht({errorCodes:this._error_codes,getLastErrorCode:()=>this.lastErrorCode,setLastErrorCode:e=>{this.lastErrorCode=e},throwSCORMError:(e,t,i)=>this.throwSCORMError(e,t,i),isInitialized:()=>this.isInitialized(),validateCorrectResponse:(e,t)=>this.validateCorrectResponse(e,t),checkForDuplicateId:(e,t)=>this._checkForDuplicateId(e,t),getChildElement:(e,t,i)=>this.getChildElement(e,t,i),apiLog:(e,t,i)=>this.apiLog(e,t,i),checkObjectHasProperty:(e,t)=>this._checkObjectHasProperty(e,t),getDataModel:()=>this})}get lastErrorCode(){return this._errorHandlingService?.lastErrorCode??"0"}set lastErrorCode(e){this._errorHandlingService&&(this._errorHandlingService.lastErrorCode=e)}get eventService(){return this._eventService}get loggingService(){return this._loggingService}commonReset(e){this.apiLog("reset","Called",B.INFO),this.settings={...this.settings,...e},this.clearScheduledCommit(),this.currentState=0,this.lastErrorCode="0",this._eventService.reset(),this.startingData={},this._offlineStorageService&&(this._offlineStorageService.updateSettings(this.settings),e?.courseId&&(this._courseId=e.courseId))}initialize(e,t,i){let s=S;return this.isInitialized()?this.throwSCORMError("api",this._error_codes.INITIALIZED,t):this.isTerminated()?this.throwSCORMError("api",this._error_codes.TERMINATED,i):(this.settings.selfReportSessionTime&&this.cmi.setStartTime(),this.currentState=1,this.lastErrorCode="0",s=f,this.processListeners(e),this.settings.enableOfflineSupport&&this._offlineStorageService&&this._courseId&&this.settings.syncOnInitialize&&this._offlineStorageService.isDeviceOnline()&&this._offlineStorageService.hasPendingOfflineData(this._courseId).then(t=>{t&&(this.apiLog(e,"Syncing pending offline data on initialization",B.INFO),this._offlineStorageService?.syncOfflineData().then(t=>{t&&(this.apiLog(e,"Successfully synced offline data",B.INFO),this.processListeners("OfflineDataSynced"))}))})),this.apiLog(e,"returned: "+s,B.INFO),this.clearSCORMError(s),s}apiLog(e,t,i,s){t=function(e,t,i){let s=e?(e+"").padEnd(20)+": ":"";return i&&(s+=i,s=s.padEnd(70)),s+=t??"",s}(e,t,s),this._loggingService.log(i,t)}get settings(){return this._settings}set settings(e){const t=this._settings;this._settings={...this._settings,...e},this._httpService?.updateSettings(this._settings),void 0!==e.logLevel&&e.logLevel!==t.logLevel&&this._loggingService?.setLogLevel(e.logLevel),void 0!==e.onLogMessage&&e.onLogMessage!==t.onLogMessage&&this._loggingService?.setLogHandler(e.onLogMessage)}terminate(e,t){let i=f,s=!1;if(this.isNotInitialized()){const e=this._error_codes.TERMINATION_BEFORE_INIT??0;this.throwSCORMError("api",e),112===e&&(i=S)}else if(t&&this.isTerminated()){const e=this._error_codes.MULTIPLE_TERMINATION??0;this.throwSCORMError("api",e),113===e&&(i=S)}else{s=!0,this.processListeners("BeforeTerminate");const result=this.storeData(!0);if((result.errorCode??0)>0)result.errorMessage&&this.apiLog("terminate","Terminate failed with error: "+result.errorMessage,B.ERROR),result.errorDetails&&this.apiLog("terminate","Error details: "+JSON.stringify(result.errorDetails),B.DEBUG),this.throwSCORMError("api",result.errorCode??0),i=S;else{this.currentState=2,t&&(this.lastErrorCode="0");const e=result?.result??f;i="boolean"==typeof e?e+"":e}this.processListeners(e)}return this.apiLog(e,"returned: "+i,B.INFO),s&&this.clearSCORMError(i),i}getValue(e,t,i){let s="";if(this.checkState(t,this._error_codes.RETRIEVE_BEFORE_INIT??0,this._error_codes.RETRIEVE_AFTER_TERM??0)){try{s=this.getCMIValue(i)}catch(e){s=this.handleValueAccessException(i,e,s)}this.processListeners(e,i)}return this.apiLog(e,": returned: "+s,B.INFO,i),void 0===s?"":("0"===this.lastErrorCode&&this.clearSCORMError(s),s)}setValue(e,t,i,s,r){void 0!==r&&(r+="");let n=S;if(this.checkState(i,this._error_codes.STORE_BEFORE_INIT??0,this._error_codes.STORE_AFTER_TERM??0)){try{n=this.setCMIValue(s,r)}catch(e){n=this.handleValueAccessException(s,e,n)}this.processListeners(e,s,r)}return void 0===n&&(n=S),this.lastErrorCode+""=="0"&&this.settings.autocommit&&this.scheduleCommit(1e3*this.settings.autocommitSeconds,t),this.apiLog(e,": "+r+": result: "+n,B.INFO,s),"0"===this.lastErrorCode&&this.clearSCORMError(n),n}commit(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.clearScheduledCommit();let i=f;if(this.isNotInitialized()){const e=this._error_codes.COMMIT_BEFORE_INIT??0;this.throwSCORMError("api",e),142===e&&(i=S)}else if(t&&this.isTerminated()){const e=this._error_codes.COMMIT_AFTER_TERM??0;this.throwSCORMError("api",e),143===e&&(i=S)}else{const result=this.storeData(!1);(result.errorCode??0)>0&&(result.errorMessage&&this.apiLog("commit","Commit failed with error: "+result.errorMessage,B.ERROR),result.errorDetails&&this.apiLog("commit","Error details: "+JSON.stringify(result.errorDetails),B.DEBUG),this.throwSCORMError("api",result.errorCode));const s=result?.result??S;i="boolean"==typeof s?s+"":s,this.apiLog(e," Result: "+i,B.DEBUG,"HttpRequest"),t&&(this.lastErrorCode="0"),this.processListeners(e),this.settings.enableOfflineSupport&&this._offlineStorageService&&this._offlineStorageService.isDeviceOnline()&&this._courseId&&this._offlineStorageService.hasPendingOfflineData(this._courseId).then(t=>{t&&(this.apiLog(e,"Syncing pending offline data",B.INFO),this._offlineStorageService?.syncOfflineData().then(t=>{t?(this.apiLog(e,"Successfully synced offline data",B.INFO),this.processListeners("OfflineDataSynced")):this.apiLog(e,"Failed to sync some offline data",B.WARN)}))})}return this.apiLog(e,"returned: "+i,B.INFO),this.isNotInitialized()||t&&this.isTerminated()||this.clearSCORMError(i),i}getLastError(e){const t=this.lastErrorCode+"";return this.processListeners(e),this.apiLog(e,"returned: "+t,B.INFO),t}getErrorString(e,t){let i="";return null!==t&&""!==t&&(i=this.getLmsErrorMessageDetails(t),this.processListeners(e)),i.length>255&&(i=i.substring(0,255)),this.apiLog(e,"returned: "+i,B.INFO),i}getDiagnostic(e,t){let i="";const s=""===t?this.lastErrorCode+"":t;if(null!==s&&""!==s){const t=this._errorHandlingService.lastDiagnostic;i=t&&s+""==this.lastErrorCode+""?t:this.getLmsErrorMessageDetails(s,!0),this.processListeners(e)}return i.length>255&&(i=i.substring(0,255)),this.apiLog(e,"returned: "+i,B.INFO),i}checkState(e,t,i){return this.isNotInitialized()?(this.throwSCORMError("api",t),!1):!e||!this.isTerminated()||(this.throwSCORMError("api",i),!1)}_checkForDuplicateId(e,t){const i=(e,t)=>{if(e&&"object"==typeof e&&t in e){const i=e[t];return i instanceof x?i:void 0}},s=(e,t,i)=>{for(let s=0;e.childArray.length>s;s++)if(s!==t){const t=e.childArray[s];if(t&&"object"==typeof t&&"id"in t&&t.id===i)return!0}return!1},r=e.match(/^cmi\.objectives\.(\d+)\.id$/);if(r&&r[1]){const e=parseInt(r[1],10),objectives=i(this.cmi,"objectives");return!!objectives&&s(objectives,e,t)}const n=e.match(/^cmi\.interactions\.(\d+)\.id$/);if(n&&n[1]){const e=parseInt(n[1],10),interactions=i(this.cmi,"interactions");return!!interactions&&s(interactions,e,t)}const o=e.match(/^cmi\.interactions\.(\d+)\.objectives\.(\d+)\.id$/);if(o&&o[1]&&o[2]){const e=parseInt(o[1],10),r=parseInt(o[2],10),interactions=i(this.cmi,"interactions");if(interactions){const n=interactions.childArray[e];if(n){const objectives=i(n,"objectives");if(objectives)return s(objectives,r,t)}}return!1}return!1}getLmsErrorMessageDetails(e){throw Error("The getLmsErrorMessageDetails method has not been implemented")}getCMIValue(e){throw Error("The getCMIValue method has not been implemented")}setCMIValue(e,t){throw Error("The setCMIValue method has not been implemented")}_commonSetCMIValue(e,t,i,s){return this._cmiValueAccessService.setCMIValue(e,t,i,s)}_commonGetCMIValue(e,t,i){return this._cmiValueAccessService.getCMIValue(e,t,i)}isInitialized(){return 1===this.currentState}isNotInitialized(){return 0===this.currentState}isTerminated(){return 2===this.currentState}on(e,t){this._eventService.on(e,t)}off(e,t){this._eventService.off(e,t)}clear(e){this._eventService.clear(e)}processListeners(e,t,i){this._eventService.processListeners(e,t,i)}throwSCORMError(e,t,i){this._errorHandlingService.throwSCORMError(e,t??0,i)}clearSCORMError(e){this._errorHandlingService.clearSCORMError(e)}loadFromFlattenedJSON(e,t){t||(t=""),this._serializationService.loadFromFlattenedJSON(e,t,(e,t)=>this.setCMIValue(e,t),()=>this.isNotInitialized(),e=>{this.startingData=e})}getFlattenedCMI(){return o(this.renderCMIToJSONObject())}loadFromJSON(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";t&&""!==t||Object.hasOwnProperty.call(e,"cmi")||Object.hasOwnProperty.call(e,"adl")||(t="cmi"),this._serializationService.loadFromJSON(e,t,(e,t)=>this.setCMIValue(e,t),()=>this.isNotInitialized(),e=>{this.startingData=e})}renderCMIToJSONString(){return this._serializationService.renderCMIToJSONString(this.cmi,this.settings.sendFullCommit)}renderCMIToJSONObject(){return this._serializationService.renderCMIToJSONObject(this.cmi,this.settings.sendFullCommit)}processHttpRequest(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return this.settings.enableOfflineSupport&&this._offlineStorageService&&!this._offlineStorageService.isDeviceOnline()&&this._courseId?(this.apiLog("processHttpRequest","Device is offline, storing data locally",B.INFO),t&&"object"==typeof t&&"cmi"in t?this._offlineStorageService.storeOffline(this._courseId,t):(this.apiLog("processHttpRequest","Invalid commit data format for offline storage",B.ERROR),{result:S,errorCode:this._error_codes.GENERAL??101})):this._httpService.processHttpRequest(e,t,i,(e,t,i,s)=>this.apiLog(e,t,i,s),(e,t,i)=>this.processListeners(e,t,i))}scheduleCommit(e,t){this._timeout||(this._timeout=new Se(this,e,t),this.apiLog("scheduleCommit","scheduled",B.DEBUG,""))}clearScheduledCommit(){this._timeout&&(this._timeout.cancel(),this._timeout=void 0,this.apiLog("clearScheduledCommit","cleared",B.DEBUG,""))}_checkObjectHasProperty(e,t){return null!=e&&"object"==typeof e&&(Object.hasOwnProperty.call(e,t)||null!=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(e),t)||t in e)}handleValueAccessException(e,t,i){return t instanceof v?(this.lastErrorCode=t.errorCode+"",""!==i&&(i=S),this.throwSCORMError(e,t.errorCode,t.errorMessage)):this.throwSCORMError(e,this._error_codes.GENERAL,t instanceof Error&&t.message?t.message:"Unknown error"),i}getCommitObject(e){return this._serializationService.getCommitObject(e,this.settings.alwaysSendTotalTime,this.settings.renderCommonCommitFields,(e,t)=>this.renderCommitObject(e,t),(e,t)=>this.renderCommitCMI(e,t),this.settings.logLevel)}}var ns=Object.defineProperty,os=(e,t,i)=>((e,t,i)=>t in e?ns(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class as extends d{constructor(e){super(e.CMIElement),os(this,"__children"),os(this,"__score_range"),os(this,"__invalid_error_code"),os(this,"__invalid_type_code"),os(this,"__invalid_range_code"),os(this,"__decimal_regex"),os(this,"__error_class"),os(this,"_raw",""),os(this,"_min",""),os(this,"_max"),this.__children=e.score_children||b,this.__score_range=!!e.score_range&&Z,this._max=e.max||""===e.max?e.max:"100",this.__invalid_error_code=e.invalidErrorCode||T.INVALID_SET_VALUE,this.__invalid_type_code=e.invalidTypeCode||T.TYPE_MISMATCH,this.__invalid_range_code=e.invalidRangeCode||T.VALUE_OUT_OF_RANGE,this.__decimal_regex=e.decimalRegex||J,this.__error_class=e.errorClass}reset(){this._initialized=!1,this._raw="",this._min=""}get _children(){return this.__children}set _children(_children){throw new this.__error_class(this._cmi_element+"._children",this.__invalid_error_code)}get raw(){return this._raw}set raw(e){ts.validateScore(this._cmi_element+".raw",e,this.__decimal_regex,this.__score_range,this.__invalid_type_code,this.__invalid_range_code,this.__error_class)&&(this._raw=e)}get min(){return this._min}set min(e){ts.validateScore(this._cmi_element+".min",e,this.__decimal_regex,this.__score_range,this.__invalid_type_code,this.__invalid_range_code,this.__error_class)&&(this._min=e)}get max(){return this._max}set max(e){ts.validateScore(this._cmi_element+".max",e,this.__decimal_regex,this.__score_range,this.__invalid_type_code,this.__invalid_range_code,this.__error_class)&&(this._max=e)}getScoreObject(){const e={};return Number.isNaN(Number.parseFloat(this.raw))||(e.raw=Number.parseFloat(this.raw)),Number.isNaN(Number.parseFloat(this.min))||(e.min=Number.parseFloat(this.min)),Number.isNaN(Number.parseFloat(this.max))||(e.max=Number.parseFloat(this.max)),e}toJSON(){this.jsonString=!0;const result={raw:this.raw,min:this.min,max:this.max};return this.jsonString=!1,result}}var cs=Object.defineProperty,ls=(e,t,i)=>((e,t,i)=>t in e?cs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class us extends d{constructor(){super("cmi.core"),ls(this,"score"),ls(this,"__children","student_id,student_name,lesson_location,credit,lesson_status,entry,score,total_time,lesson_mode,exit,session_time"),ls(this,"_student_id",""),ls(this,"_student_name",""),ls(this,"_lesson_location",""),ls(this,"_credit",""),ls(this,"_lesson_status","not attempted"),ls(this,"_entry",""),ls(this,"_total_time",""),ls(this,"_lesson_mode","normal"),ls(this,"_exit",""),ls(this,"_session_time","00:00:00"),ls(this,"_suspend_data",""),this.score=new as({CMIElement:"cmi.core.score",score_children:b,score_range:Z,invalidErrorCode:T.INVALID_SET_VALUE,invalidTypeCode:T.TYPE_MISMATCH,invalidRangeCode:T.VALUE_OUT_OF_RANGE,errorClass:w})}initialize(){super.initialize(),this.score?.initialize()}reset(){this._initialized=!1,this._exit="",this._entry="",this._session_time="00:00:00",this.score?.reset()}get _children(){return this.__children}set _children(_children){throw new w(this._cmi_element+"._children",T.INVALID_SET_VALUE)}get student_id(){return this._student_id}set student_id(student_id){if(this.initialized)throw new w(this._cmi_element+".student_id",T.READ_ONLY_ELEMENT);this._student_id=student_id}get student_name(){return this._student_name}set student_name(student_name){if(this.initialized)throw new w(this._cmi_element+".student_name",T.READ_ONLY_ELEMENT);this._student_name=student_name}get lesson_location(){return this._lesson_location}set lesson_location(lesson_location){Zi(this._cmi_element+".lesson_location",lesson_location,G,!0)&&(this._lesson_location=lesson_location)}get credit(){return this._credit}set credit(credit){if(this.initialized)throw new w(this._cmi_element+".credit",T.READ_ONLY_ELEMENT);Zi(this._cmi_element+".credit",credit,"^(credit|no-credit)$",!0)&&(this._credit=credit)}get lesson_status(){return this._lesson_status}set lesson_status(lesson_status){this.initialized?Zi(this._cmi_element+".lesson_status",lesson_status,"^(passed|completed|failed|incomplete|browsed)$")&&(this._lesson_status=lesson_status):Zi(this._cmi_element+".lesson_status",lesson_status,Q)&&(this._lesson_status=lesson_status)}get entry(){return this._entry}set entry(entry){if(this.initialized)throw new w(this._cmi_element+".entry",T.READ_ONLY_ELEMENT);Zi(this._cmi_element+".entry",entry,"^(ab-initio|resume|)$",!0)&&(this._entry=entry)}get total_time(){return this._total_time}set total_time(total_time){if(this.initialized)throw new w(this._cmi_element+".total_time",T.READ_ONLY_ELEMENT);if(Zi(this._cmi_element+".total_time",total_time,Y,!0))if(total_time){const e=s(total_time,Y);this._total_time=t(e)}else this._total_time=total_time}get lesson_mode(){return this._lesson_mode}set lesson_mode(lesson_mode){if(this.initialized)throw new w(this._cmi_element+".lesson_mode",T.READ_ONLY_ELEMENT);Zi(this._cmi_element+".lesson_mode",lesson_mode,"^(normal|browse|review)$")&&(this._lesson_mode=lesson_mode)}get exit(){if(!this.jsonString)throw new w(this._cmi_element+".exit",T.WRITE_ONLY_ELEMENT);return this._exit}set exit(exit){"normal"===exit&&(console.warn("SCORM 1.2: Received non-standard value 'normal' for cmi.core.exit; normalizing to empty string."),exit=""),Zi(this._cmi_element+".exit",exit,"^(time-out|suspend|logout|)$",!0)&&(this._exit=exit)}get session_time(){if(!this.jsonString)throw new w(this._cmi_element+".session_time",T.WRITE_ONLY_ELEMENT);return this._session_time}set session_time(session_time){if(Zi(this._cmi_element+".session_time",session_time,Y)){const e=s(session_time,Y);this._session_time=t(e)}}get suspend_data(){return this._suspend_data}set suspend_data(suspend_data){Zi(this._cmi_element+".suspend_data",suspend_data,"^[\\s\\S]{0,64000}$",!0)&&(this._suspend_data=suspend_data)}getCurrentTotalTime(e){let i=this._session_time;if(void 0!==e){const s=(new Date).getTime()-e;i=t(s/1e3)}return r=this._total_time,n=i,"string"==typeof(o=RegExp(Y))&&(o=RegExp(o)),t(s(r,o)+s(n,o));var r,n,o}toJSON(){this.jsonString=!0;const result={student_id:this.student_id,student_name:this.student_name,lesson_location:this.lesson_location,credit:this.credit,lesson_status:this.lesson_status,entry:this.entry,lesson_mode:this.lesson_mode,exit:this.exit,session_time:this.session_time,score:this.score};return this.jsonString=!1,result}}var hs=Object.defineProperty,ds=(e,t,i)=>((e,t,i)=>t in e?hs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);let ms=class extends x{constructor(){super({CMIElement:"cmi.objectives",children:y,errorCode:T.INVALID_SET_VALUE,errorClass:w})}},ps=class extends d{constructor(){super("cmi.objectives.n"),ds(this,"score"),ds(this,"_id",""),ds(this,"_status",""),this.score=new as({CMIElement:"cmi.objectives.n.score",score_children:b,score_range:Z,invalidErrorCode:T.INVALID_SET_VALUE,invalidTypeCode:T.TYPE_MISMATCH,invalidRangeCode:T.VALUE_OUT_OF_RANGE,errorClass:w})}reset(){this._initialized=!1,this._id="",this._status="",this.score?.reset()}get id(){return this._id}set id(id){Zi(this._cmi_element+".id",id,K)&&(this._id=id)}get status(){return this._status}set status(status){Zi(this._cmi_element+".status",status,Q)&&(this._status=status)}toJSON(){this.jsonString=!0;const result={id:this.id,status:this.status,score:this.score};return this.jsonString=!1,result}};var _s=Object.defineProperty,gs=(e,t,i)=>((e,t,i)=>t in e?_s(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class vs extends d{constructor(e){super("cmi.student_data"),gs(this,"__children"),gs(this,"_mastery_score",""),gs(this,"_max_time_allowed",""),gs(this,"_time_limit_action",""),this.__children=e||"mastery_score,max_time_allowed,time_limit_action"}reset(){this._initialized=!1}get _children(){return this.__children}set _children(_children){throw new w(this._cmi_element+"._children",T.INVALID_SET_VALUE)}get mastery_score(){return this._mastery_score}set mastery_score(mastery_score){if(ts.validateReadOnly(this._cmi_element+".mastery_score",this.initialized),null==mastery_score)return;let e=mastery_score;"string"!=typeof e&&(e+=""),""!==e?Zi(this._cmi_element+".mastery_score",e,J)&&es(this._cmi_element+".mastery_score",e,Z)&&(this._mastery_score=e):this._mastery_score=mastery_score}get max_time_allowed(){return this._max_time_allowed}set max_time_allowed(max_time_allowed){if(ts.validateReadOnly(this._cmi_element+".max_time_allowed",this.initialized),null==max_time_allowed)return;const e="string"==typeof max_time_allowed?max_time_allowed:max_time_allowed+"";this._max_time_allowed=""!==e?function(e,i){try{Zi(i,e,Y,!0);const r=s(e,Y);return t(r)}catch(e){}try{Zi(i,e,ne,!0);const s=r(e,ne);return t(s)}catch(e){}throw new w(i,T.TYPE_MISMATCH)}(e,this._cmi_element+".max_time_allowed"):""}get time_limit_action(){return this._time_limit_action}set time_limit_action(time_limit_action){if(ts.validateReadOnly(this._cmi_element+".time_limit_action",this.initialized),null==time_limit_action)return;const e="string"==typeof time_limit_action?time_limit_action:time_limit_action+"";Zi(this._cmi_element+".time_limit_action",e,"^(exit,message|exit,no message|continue,message|continue,no message)$",!0)&&(this._time_limit_action=e)}toJSON(){this.jsonString=!0;const result={mastery_score:this.mastery_score,max_time_allowed:this.max_time_allowed,time_limit_action:this.time_limit_action};return this.jsonString=!1,result}}var fs=Object.defineProperty,Ss=(e,t,i)=>((e,t,i)=>t in e?fs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class bs extends d{constructor(e){super("cmi.student_preference"),Ss(this,"__children"),Ss(this,"_audio",""),Ss(this,"_language",""),Ss(this,"_speed",""),Ss(this,"_text",""),this.__children=e||"audio,language,speed,text"}reset(){this._initialized=!1}get _children(){return this.__children}set _children(_children){throw new w(this._cmi_element+"._children",T.INVALID_SET_VALUE)}get audio(){return this._audio}set audio(audio){ts.validateScorm12Audio(this._cmi_element+".audio",audio)&&(this._audio=audio)}get language(){return this._language}set language(language){ts.validateScorm12Language(this._cmi_element+".language",language)&&(this._language=language)}get speed(){return this._speed}set speed(speed){ts.validateScorm12Speed(this._cmi_element+".speed",speed)&&(this._speed=speed)}get text(){return this._text}set text(text){ts.validateScorm12Text(this._cmi_element+".text",text)&&(this._text=text)}toJSON(){this.jsonString=!0;const result={audio:this.audio,language:this.language,speed:this.speed,text:this.text};return this.jsonString=!1,result}}var ys=Object.defineProperty,Cs=(e,t,i)=>((e,t,i)=>t in e?ys(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);let As=class extends x{constructor(){super({CMIElement:"cmi.interactions",children:"id,objectives,time,type,correct_responses,weighting,student_response,result,latency",errorCode:T.INVALID_SET_VALUE,errorClass:w})}},Es=class extends d{constructor(){super("cmi.interactions.n"),Cs(this,"objectives"),Cs(this,"correct_responses"),Cs(this,"_id",""),Cs(this,"_time",""),Cs(this,"_type",""),Cs(this,"_weighting",""),Cs(this,"_student_response",""),Cs(this,"_result",""),Cs(this,"_latency",""),this.objectives=new x({CMIElement:"cmi.interactions.n.objectives",errorCode:T.INVALID_SET_VALUE,errorClass:w,children:y}),this.correct_responses=new x({CMIElement:"cmi.interactions.correct_responses",errorCode:T.INVALID_SET_VALUE,errorClass:w,children:"pattern"})}initialize(){super.initialize(),this.objectives?.initialize(),this.correct_responses?.initialize()}reset(){this._initialized=!1,this._id="",this._time="",this._type="",this._weighting="",this._student_response="",this._result="",this._latency="",this.objectives?.reset(),this.correct_responses?.reset()}get id(){if(!this.jsonString)throw new w(this._cmi_element+".id",T.WRITE_ONLY_ELEMENT);return this._id}set id(id){Zi(this._cmi_element+".id",id,K)&&(this._id=id)}get time(){if(!this.jsonString)throw new w(this._cmi_element+".time",T.WRITE_ONLY_ELEMENT);return this._time}set time(time){Zi(this._cmi_element+".time",time,"^(?:[01]\\d|2[0123]):(?:[012345]\\d):(?:[012345]\\d)(\\.\\d{1,2})?$")&&(this._time=time)}get type(){if(!this.jsonString)throw new w(this._cmi_element+".type",T.WRITE_ONLY_ELEMENT);return this._type}set type(type){Zi(this._cmi_element+".type",type,"^(true-false|choice|fill-in|matching|performance|sequencing|likert|numeric)$")&&(this._type=type)}get weighting(){if(!this.jsonString)throw new w(this._cmi_element+".weighting",T.WRITE_ONLY_ELEMENT);return this._weighting}set weighting(weighting){Zi(this._cmi_element+".weighting",weighting,J)&&es(this._cmi_element+".weighting",weighting,"-100#100")&&(this._weighting=weighting)}get student_response(){if(!this.jsonString)throw new w(this._cmi_element+".student_response",T.WRITE_ONLY_ELEMENT);return this._student_response}set student_response(student_response){Zi(this._cmi_element+".student_response",student_response,X,!0)&&(this._student_response=student_response)}get result(){if(!this.jsonString)throw new w(this._cmi_element+".result",T.WRITE_ONLY_ELEMENT);return this._result}set result(result){let e=result;"incorrect"===result&&(e="wrong",console.warn("SCORM 1.2: Received non-standard value 'incorrect' for cmi.interactions.n.result; normalizing to 'wrong'.")),Zi(this._cmi_element+".result",e,"^(correct|wrong|unanticipated|neutral|([0-9]{0,3})?(\\.[0-9]*)?)$")&&(this._result=e)}get latency(){if(!this.jsonString)throw new w(this._cmi_element+".latency",T.WRITE_ONLY_ELEMENT);return this._latency}set latency(latency){if(Zi(this._cmi_element+".latency",latency,Y)){const e=s(latency,Y);this._latency=t(e)}}toJSON(){this.jsonString=!0;const result={id:this.id,time:this.time,type:this.type,weighting:this.weighting,student_response:this.student_response,result:this.result,latency:this.latency,objectives:this.objectives,correct_responses:this.correct_responses};return this.jsonString=!1,result}},ws=class extends d{constructor(){super("cmi.interactions.n.objectives.n"),Cs(this,"_id","")}reset(){this._initialized=!1,this._id=""}get id(){if(!this.jsonString)throw new w(this._cmi_element+".id",T.WRITE_ONLY_ELEMENT);return this._id}set id(id){Zi(this._cmi_element+".id",id,K)&&(this._id=id)}toJSON(){this.jsonString=!0;const result={id:this.id};return this.jsonString=!1,result}},Ms=class extends d{constructor(){super("cmi.interactions.correct_responses.n"),Cs(this,"_pattern","")}reset(){this._initialized=!1,this._pattern=""}get pattern(){if(!this.jsonString)throw new w(this._cmi_element+".pattern",T.WRITE_ONLY_ELEMENT);return this._pattern}set pattern(pattern){Zi(this._cmi_element+".pattern",pattern,X,!0)&&(this._pattern=pattern)}toJSON(){this.jsonString=!0;const result={pattern:this._pattern};return this.jsonString=!1,result}};var Os=Object.defineProperty,Rs=(e,t,i)=>((e,t,i)=>t in e?Os(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);let Ts=class extends m{constructor(e,student_data,t){super("cmi"),Rs(this,"__children",""),Rs(this,"__version","3.4"),Rs(this,"_launch_data",""),Rs(this,"_comments",""),Rs(this,"_comments_from_lms",""),Rs(this,"core"),Rs(this,"objectives"),Rs(this,"student_data"),Rs(this,"student_preference"),Rs(this,"interactions"),t&&this.initialize(),this.__children=e||"core,suspend_data,launch_data,comments,objectives,student_data,student_preference,interactions",this.core=new us,this.objectives=new ms,this.student_data=student_data||new vs,this.student_preference=new bs,this.interactions=new As}reset(){this._initialized=!1,this._launch_data="",this._comments="",this.core?.reset(),this.objectives?.reset(!0),this.interactions?.reset(!0),this.student_data?.reset(),this.student_preference?.reset()}initialize(){super.initialize(),this.core?.initialize(),this.objectives?.initialize(),this.student_data?.initialize(),this.student_preference?.initialize(),this.interactions?.initialize()}toJSON(){this.jsonString=!0;const result={suspend_data:this.suspend_data,launch_data:this.launch_data,comments:this.comments,comments_from_lms:this.comments_from_lms,core:this.core,objectives:this.objectives,student_data:this.student_data,student_preference:this.student_preference,interactions:this.interactions};return this.jsonString=!1,result}get _version(){return this.__version}set _version(_version){throw new w(this._cmi_element+"._version",T.INVALID_SET_VALUE)}get _children(){return this.__children}set _children(_children){throw new w(this._cmi_element+"._children",T.INVALID_SET_VALUE)}get suspend_data(){return this.core?.suspend_data}set suspend_data(suspend_data){this.core&&(this.core.suspend_data=suspend_data)}get launch_data(){return this._launch_data}set launch_data(launch_data){if(this.initialized)throw new w(this._cmi_element+".launch_data",T.READ_ONLY_ELEMENT);this._launch_data=launch_data}get comments(){return this._comments}set comments(comments){Zi(this._cmi_element+".comments",comments,"^[\\s\\S]{0,4096}$",!0)&&(this._comments=comments)}get comments_from_lms(){return this._comments_from_lms}set comments_from_lms(comments_from_lms){if(this.initialized)throw new w(this._cmi_element+".comments_from_lms",T.READ_ONLY_ELEMENT);this._comments_from_lms=comments_from_lms}getCurrentTotalTime(){return this.core.getCurrentTotalTime(this.start_time)}};var js=Object.defineProperty;class Is extends d{constructor(){super("cmi.nav"),((e,t,i)=>{t in e?js(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i})(this,"_event"+"","")}reset(){this._event="",this._initialized=!1}get event(){return this._event}set event(e){(""===e||Zi(this._cmi_element+".event",e,"^(_?(previous|continue|start|resumeAll|exit|exitAll|abandon|abandonAll|suspendAll|retry|retryAll)|choice|jump|_none_)$"))&&(this._event=e)}toJSON(){this.jsonString=!0;const result={event:this.event};return this.jsonString=!1,result}}var Ns=Object.defineProperty,xs=(e,t,i)=>((e,t,i)=>t in e?Ns(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);const qs=class e extends rs{constructor(t,i){const s=t?{...t}:void 0;s&&void 0===s.mastery_override&&(s.mastery_override=!0),super(T,s,i),xs(this,"statusSetByModule",!1),xs(this,"cmi"),xs(this,"nav"),xs(this,"LMSInitialize"),xs(this,"LMSFinish"),xs(this,"LMSGetValue"),xs(this,"LMSSetValue"),xs(this,"LMSCommit"),xs(this,"LMSGetLastError"),xs(this,"LMSGetErrorString"),xs(this,"LMSGetDiagnostic"),this.cmi=new Ts,this.nav=new Is,this.settings.globalStudentPreferences&&e._globalLearnerPrefs&&(""!==e._globalLearnerPrefs.audio&&(this.cmi.student_preference.audio=e._globalLearnerPrefs.audio),""!==e._globalLearnerPrefs.language&&(this.cmi.student_preference.language=e._globalLearnerPrefs.language),""!==e._globalLearnerPrefs.speed&&(this.cmi.student_preference.speed=e._globalLearnerPrefs.speed),""!==e._globalLearnerPrefs.text&&(this.cmi.student_preference.text=e._globalLearnerPrefs.text)),this.LMSInitialize=this.lmsInitialize,this.LMSFinish=this.lmsFinish,this.LMSGetValue=this.lmsGetValue,this.LMSSetValue=this.lmsSetValue,this.LMSCommit=this.lmsCommit,this.LMSGetLastError=this.lmsGetLastError,this.LMSGetErrorString=this.lmsGetErrorString,this.LMSGetDiagnostic=this.lmsGetDiagnostic}static clearGlobalPreferences(){e._globalLearnerPrefs=null}reset(e){this.commonReset(e),this.cmi?.reset(),this.nav?.reset(),this.statusSetByModule=!1}lmsInitialize(){return""!==(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"")?(this.throwSCORMError("api",this._error_codes.ARGUMENT_ERROR),S):(this.cmi.initialize(),this.cmi.core.lesson_status?this.statusSetByModule=!0:this.cmi.core.lesson_status="not attempted",this.initialize("LMSInitialize","LMS was already initialized!","LMS is already finished!"))}lmsFinish(){if(""!==(arguments.length>0&&void 0!==arguments[0]?arguments[0]:""))return this.throwSCORMError("api",this._error_codes.ARGUMENT_ERROR),S;const result=this.terminate("LMSFinish",!0);return result===f&&(""!==this.nav.event?this.processListeners("continue"===this.nav.event?"SequenceNext":"SequencePrevious"):this.settings.autoProgress&&this.processListeners("SequenceNext")),result}lmsGetValue(e){return this.getValue("LMSGetValue",!1,e)}lmsSetValue(e,t){return"cmi.core.lesson_status"===e&&(this.statusSetByModule=!0),this.setValue("LMSSetValue","LMSCommit",!1,e,t)}lmsCommit(){return""!==(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"")?(this.throwSCORMError("api",this._error_codes.ARGUMENT_ERROR),S):this.settings.throttleCommits?(this.scheduleCommit(500,"LMSCommit"),f):this.commit("LMSCommit",!1)}lmsGetLastError(){return this.getLastError("LMSGetLastError")}lmsGetErrorString(e){return this.getErrorString("LMSGetErrorString",e)}lmsGetDiagnostic(e){return this.getDiagnostic("LMSGetDiagnostic",e)}setCMIValue(e,t){const result=this._commonSetCMIValue("LMSSetValue",!1,e,t);return result===f&&this.settings.globalStudentPreferences&&("cmi.student_preference.audio"===e?this._updateGlobalPreference("audio",t):"cmi.student_preference.language"===e?this._updateGlobalPreference("language",t):"cmi.student_preference.speed"===e?this._updateGlobalPreference("speed",t):"cmi.student_preference.text"===e&&this._updateGlobalPreference("text",t)),result}_updateGlobalPreference(t,i){e._globalLearnerPrefs||(e._globalLearnerPrefs={audio:"",language:"",speed:"",text:""}),e._globalLearnerPrefs[t]=i}getCMIValue(e){return this._commonGetCMIValue("getCMIValue",!1,e)}getChildElement(e,t,i){return c(e,"cmi\\.objectives\\.\\d+")?new ps:i&&c(e,"cmi\\.interactions\\.\\d+\\.correct_responses\\.\\d+")?new Ms:i&&c(e,"cmi\\.interactions\\.\\d+\\.objectives\\.\\d+")?new ws:!i&&c(e,"cmi\\.interactions\\.\\d+")?new Es:null}validateCorrectResponse(e,t){}getLmsErrorMessageDetails(e,t){let i="No Error",s="No Error";return C[e+=""]&&(i=C[e]?.basicMessage||i,s=C[e]?.detailMessage||s),t?s:i}replaceWithAnotherScormAPI(e){this.cmi=e.cmi}renderCommitCMI(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=this.renderCMIToJSONObject();(e||t)&&(i.cmi.core.total_time=this.cmi.getCurrentTotalTime());const result=[],s=o(i);switch(this.settings.dataCommitFormat){case"flattened":return s;case"params":for(const e in s)({}).hasOwnProperty.call(s,e)&&result.push(`${e}=${s[e]}`);return result;default:return i}}renderCommitObject(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=this.renderCommitCMI(e,t),r=e||t?this.cmi.getCurrentTotalTime():"",n=s(r,Y),o=this.cmi.core.lesson_status;let a=H,c=F;o&&(a="completed"===o||"passed"===o?k:V,"passed"===o?c=P:"failed"===o&&(c=z));const l=this.cmi?.core?.score?.getScoreObject()||{},u={successStatus:c,completionStatus:a,runtimeData:i,totalTimeSeconds:n};return l&&(u.score=l),this.settings.autoPopulateCommitMetadata&&(this.settings.courseId&&(u.courseId=this.settings.courseId),this.settings.scoId&&(u.scoId=this.settings.scoId),this.cmi.core.student_id&&(u.learnerId=this.cmi.core.student_id),this.cmi.core.student_name&&(u.learnerName=this.cmi.core.student_name)),u}storeData(e){if(e){const t=this.cmi.core.lesson_status;if("browse"===this.cmi.core.lesson_mode&&""===(this.startingData?.cmi?.core?.lesson_status||"")&&"not attempted"===t)return this.cmi.core.lesson_status="browsed",this.processCommitData(e);if(this.cmi.core.lesson_status&&(this.statusSetByModule||"not attempted"!==this.cmi.core.lesson_status)||(this.cmi.core.lesson_status=this.settings.autoCompleteLessonStatus?"completed":"incomplete"),"normal"===this.cmi.core.lesson_mode&&"credit"===this.cmi.core.credit&&this.settings.mastery_override&&""!==this.cmi.student_data.mastery_score&&""!==this.cmi.core.score.raw){const e=parseFloat(this.cmi.core.score.raw),t=parseFloat(this.cmi.student_data.mastery_score);isNaN(e)||isNaN(t)||(this.cmi.core.lesson_status=t>e?"failed":"passed")}if(this.settings.score_overrides_status&&this.statusSetByModule&&"normal"===this.cmi.core.lesson_mode&&"credit"===this.cmi.core.credit&&""!==this.cmi.student_data.mastery_score&&""!==this.cmi.core.score.raw){const e=parseFloat(this.cmi.core.score.raw),t=parseFloat(this.cmi.student_data.mastery_score);isNaN(e)||isNaN(t)||(this.cmi.core.lesson_status=t>e?"failed":"passed")}}return this.processCommitData(e)}processCommitData(e){const t=this.getCommitObject(e);return"string"==typeof this.settings.lmsCommitUrl?this.processHttpRequest(this.settings.lmsCommitUrl,t,e):{result:f,errorCode:0}}};xs(qs,"_globalLearnerPrefs",null);let Scorm12API=qs;var Ds=Object.defineProperty,Ls=(e,t,i)=>((e,t,i)=>t in e?Ds(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Ps extends d{constructor(){super("cmi.learner_preference"),Ls(this,"__children",A.student_preference_children),Ls(this,"_audio_level","1"),Ls(this,"_language",""),Ls(this,"_delivery_speed","1"),Ls(this,"_audio_captioning","0")}reset(){this._initialized=!1}get _children(){return this.__children}set _children(_children){throw new O(this._cmi_element+"._children",j.READ_ONLY_ELEMENT)}get audio_level(){return this._audio_level}set audio_level(audio_level){Rt(this._cmi_element+".audio_level",audio_level,oe)&&Tt(this._cmi_element+".audio_level",audio_level,"0#999.9999999")&&(this._audio_level=audio_level)}get language(){return this._language}set language(language){Rt(this._cmi_element+".language",language,"^([a-zA-Z]{1,8}|i|x)(-[a-zA-Z0-9-]{2,8})?$|^$")&&(this._language=language)}get delivery_speed(){return this._delivery_speed}set delivery_speed(delivery_speed){if(Rt(this._cmi_element+".delivery_speed",delivery_speed,oe)&&Tt(this._cmi_element+".delivery_speed",delivery_speed,"0#999.9999999")){if(0===parseFloat(delivery_speed))throw new O(this._cmi_element+".delivery_speed",j.VALUE_OUT_OF_RANGE);this._delivery_speed=delivery_speed}}get audio_captioning(){return this._audio_captioning}set audio_captioning(audio_captioning){Rt(this._cmi_element+".audio_captioning",audio_captioning,"^-?([0-9]+)$")&&Tt(this._cmi_element+".audio_captioning",audio_captioning,"-1#1")&&(this._audio_captioning=audio_captioning)}toJSON(){this.jsonString=!0;const result={audio_level:this.audio_level,language:this.language,delivery_speed:this.delivery_speed,audio_captioning:this.audio_captioning};return this.jsonString=!1,result}}var zs=Object.defineProperty,Fs=(e,t,i)=>((e,t,i)=>t in e?zs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class ks extends x{constructor(){super({CMIElement:"cmi.interactions",children:A.interactions_children,errorCode:j.READ_ONLY_ELEMENT,errorClass:O})}}class Vs extends d{constructor(){super("cmi.interactions.n"),Fs(this,"_id",""),Fs(this,"_idIsSet",!1),Fs(this,"_type",""),Fs(this,"_timestamp",""),Fs(this,"_weighting",""),Fs(this,"_learner_response",""),Fs(this,"_result",""),Fs(this,"_latency",""),Fs(this,"_description",""),Fs(this,"objectives"),Fs(this,"correct_responses"),this.objectives=new x({CMIElement:"cmi.interactions.n.objectives",errorCode:j.READ_ONLY_ELEMENT,errorClass:O,children:A.objectives_children}),this.correct_responses=new x({CMIElement:"cmi.interactions.n.correct_responses",errorCode:j.READ_ONLY_ELEMENT,errorClass:O,children:A.correct_responses_children})}initialize(){super.initialize(),this.objectives?.initialize(),this.correct_responses?.initialize()}reset(){this._initialized=!1,this._id="",this._idIsSet=!1,this._type="",this._timestamp="",this._weighting="",this._learner_response="",this._result="",this._latency="",this._description="",this.objectives=new x({CMIElement:"cmi.interactions.n.objectives",errorCode:j.READ_ONLY_ELEMENT,errorClass:O,children:A.objectives_children}),this.correct_responses=new x({CMIElement:"cmi.interactions.n.correct_responses",errorCode:j.READ_ONLY_ELEMENT,errorClass:O,children:A.correct_responses_children})}get id(){return this._id}set id(id){if(""===id||""===id.trim())throw new O(this._cmi_element+".id",j.TYPE_MISMATCH);if(this._idIsSet&&this._id!==id)throw new O(this._cmi_element+".id",j.GENERAL_SET_FAILURE);Rt(this._cmi_element+".id",id,ce)&&(this._id=id,this._idIsSet=!0)}get type(){return this._type}set type(type){if(this.initialized&&""===this._id)throw new O(this._cmi_element+".type",j.DEPENDENCY_NOT_ESTABLISHED);Rt(this._cmi_element+".type",type,"^(true-false|choice|fill-in|long-fill-in|matching|performance|sequencing|likert|numeric|other)$")&&(this._type=type)}get timestamp(){return this._timestamp}set timestamp(timestamp){if(this.initialized&&""===this._id)throw new O(this._cmi_element+".timestamp",j.DEPENDENCY_NOT_ESTABLISHED);Rt(this._cmi_element+".timestamp",timestamp,re)&&(this._timestamp=timestamp)}get weighting(){return this._weighting}set weighting(weighting){if(this.initialized&&""===this._id)throw new O(this._cmi_element+".weighting",j.DEPENDENCY_NOT_ESTABLISHED);Rt(this._cmi_element+".weighting",weighting,oe)&&(this._weighting=weighting)}get learner_response(){return this._learner_response}set learner_response(learner_response){if(this.initialized&&(""===this._type||""===this._id))throw new O(this._cmi_element+".learner_response",j.DEPENDENCY_NOT_ESTABLISHED);{let e=[];const t=pe[this.type];if(!t)throw new O(this._cmi_element+".learner_response",j.TYPE_MISMATCH);if(t?.delimiter?e=learner_response.split("[,]"===t.delimiter?",":t.delimiter):e[0]=learner_response,0>=e.length||e.length>t.max)throw new O(this._cmi_element+".learner_response",j.GENERAL_SET_FAILURE);{const i=RegExp(t.format);for(let s=0;e.length>s;s++)if(t?.delimiter2){const r="[.]"===t.delimiter2?".":t.delimiter2,n=e[s]?.split(r);if(2!==n?.length)throw new O(this._cmi_element+".learner_response",j.TYPE_MISMATCH);if("performance"===this.type&&(""===n[0]||""===n[1]))throw new O(this._cmi_element+".learner_response",j.TYPE_MISMATCH);if(!n[0]?.match(i))throw new O(this._cmi_element+".learner_response",j.TYPE_MISMATCH);if(!t.format2||!n[1]?.match(RegExp(t.format2)))throw new O(this._cmi_element+".learner_response",j.TYPE_MISMATCH)}else{if(!e[s]?.match(i))throw new O(this._cmi_element+".learner_response",j.TYPE_MISMATCH);if(""!==e[s]&&t.unique)for(let t=0;s>t;t++)if(e[s]===e[t])throw new O(this._cmi_element+".learner_response",j.TYPE_MISMATCH)}}this._learner_response=learner_response}}get result(){return this._result}set result(result){Rt(this._cmi_element+".result",result,"^(correct|incorrect|unanticipated|neutral|-?([0-9]{1,4})(\\.[0-9]{1,18})?)$")&&(this._result=result)}get latency(){return this._latency}set latency(latency){if(this.initialized&&""===this._id)throw new O(this._cmi_element+".latency",j.DEPENDENCY_NOT_ESTABLISHED);Rt(this._cmi_element+".latency",latency,ne)&&(this._latency=latency)}get description(){return this._description}set description(description){if(this.initialized&&""===this._id)throw new O(this._cmi_element+".description",j.DEPENDENCY_NOT_ESTABLISHED);Rt(this._cmi_element+".description",description,ie,!0)&&(this._description=description)}toJSON(){this.jsonString=!0;const result={id:this.id,type:this.type,objectives:this.objectives,timestamp:this.timestamp,weighting:this.weighting,learner_response:this.learner_response,result:this.result,latency:this.latency,description:this.description,correct_responses:this.correct_responses};return this.jsonString=!1,result}}class Hs extends d{constructor(){super("cmi.interactions.n.objectives.n"),Fs(this,"_id","")}reset(){this._initialized=!1,this._id=""}get id(){return this._id}set id(id){if(""===id||""===id.trim())throw new O(this._cmi_element+".id",j.TYPE_MISMATCH);Rt(this._cmi_element+".id",id,ce)&&(this._id=id)}toJSON(){this.jsonString=!0;const result={id:this.id};return this.jsonString=!1,result}}function Bs(e){return e.replace(/[[\]]/g,"")}function Us(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function $s(text,e){const t=Us(e),i=RegExp("(?<!\\\\)"+t,"g"),s=RegExp("\\\\"+t,"g");return text.split(i).map(t=>t.replace(s,e))}function Gs(text,e){const t=Us(e),i=RegExp("(?<!\\\\)"+t),s=RegExp("\\\\"+t,"g"),r=text.split(i),n=r[0]??"";return 1===r.length?[n.replace(s,e)]:[n.replace(s,e),r.slice(1).join(e).replace(s,e)]}class Ys extends d{constructor(e){super("cmi.interactions.n.correct_responses.n"),Fs(this,"_pattern",""),Fs(this,"_interactionType"),this._interactionType=e}reset(){this._initialized=!1,this._pattern=""}get pattern(){return this._pattern}set pattern(pattern){if("fill-in"!==this._interactionType||""!==pattern){if(Rt(this._cmi_element+".pattern",pattern,"^.*$")){if(this._interactionType){const e=_e[this._interactionType];e&&("matching"===this._interactionType&&/\\[.,]/.test(pattern)||function(type,pattern,e){if(pattern.trim()!==pattern)throw new O("cmi.interactions.n.correct_responses.n.pattern",j.TYPE_MISMATCH);const t=e.delimiter?Bs(e.delimiter):null,i=t?$s(pattern,t):[pattern];for(const e of i)if(e.trim()!==e)throw new O("cmi.interactions.n.correct_responses.n.pattern",j.TYPE_MISMATCH);if("fill-in"===type&&""===pattern)return;const s=e.delimiter?Bs(e.delimiter):null;let r;if(r=s?$s(pattern,s):[pattern],!e.delimiter&&pattern.includes(","))throw new O("cmi.interactions.n.correct_responses.n.pattern",j.TYPE_MISMATCH);if((e.unique||!1===e.duplicate)&&new Set(r).size!==r.length)throw new O("cmi.interactions.n.correct_responses.n.pattern",j.TYPE_MISMATCH);if(0===r.length||r.length>e.max)throw new O("cmi.interactions.n.correct_responses.n.pattern",j.GENERAL_SET_FAILURE);const n=RegExp(e.format),o=e.format2?RegExp(e.format2):null,a=e=>{if(!n.test(e))throw new O("cmi.interactions.n.correct_responses.n.pattern",j.TYPE_MISMATCH)},c=(e,t)=>{if(!t)throw new O("cmi.interactions.n.correct_responses.n.pattern",j.TYPE_MISMATCH);const i=Bs(t),s=e.split(RegExp("(?<!\\\\)"+Us(i),"g")).map(e=>e.replace(RegExp("\\\\"+Us(i),"g"),i));if(2!==s.length||""===s[0]||""===s[1])throw new O("cmi.interactions.n.correct_responses.n.pattern",j.TYPE_MISMATCH);if(void 0!==s[0]&&!n.test(s[0])||o&&void 0!==s[1]&&!o.test(s[1]))throw new O("cmi.interactions.n.correct_responses.n.pattern",j.TYPE_MISMATCH)};for(const t of r)switch(type){case"numeric":{const i=e.delimiter?Bs(e.delimiter):":",s=t.split(i);if(1>s.length||s.length>2)throw new O("cmi.interactions.n.correct_responses.n.pattern",j.TYPE_MISMATCH);s.forEach(a);break}case"performance":{const i=e.delimiter2;if(!i)throw new O("cmi.interactions.n.correct_responses.n.pattern",j.TYPE_MISMATCH);const s=Gs(t,Bs(i));if(2!==s.length)throw new O("cmi.interactions.n.correct_responses.n.pattern",j.TYPE_MISMATCH);const[r,a]=s;if(""===r||""===a||r===a)throw new O("cmi.interactions.n.correct_responses.n.pattern",j.TYPE_MISMATCH);if(void 0===r||!n.test(r))throw new O("cmi.interactions.n.correct_responses.n.pattern",j.TYPE_MISMATCH);if(o&&void 0!==a&&!o.test(a))throw new O("cmi.interactions.n.correct_responses.n.pattern",j.TYPE_MISMATCH);break}default:e.delimiter2?c(t,e.delimiter2):a(t)}}(this._interactionType,pattern,e))}this._pattern=pattern}}else this._pattern=""}toJSON(){this.jsonString=!0;const result={pattern:this.pattern};return this.jsonString=!1,result}}var Ws=Object.defineProperty;class Js extends as{constructor(){super({CMIElement:"cmi.score",score_children:A.score_children,max:"",invalidErrorCode:j.READ_ONLY_ELEMENT,invalidTypeCode:j.TYPE_MISMATCH,invalidRangeCode:j.VALUE_OUT_OF_RANGE,decimalRegex:oe,errorClass:O}),((e,t,i)=>{t in e?Ws(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i})(this,"_scaled"+"","")}reset(){this._initialized=!1,this._scaled="",this._raw="",this._min="",this._max=""}get scaled(){return this._scaled}set scaled(e){Rt(this._cmi_element+".scaled",e,oe)&&Tt(this._cmi_element+".scaled",e,"-1#1")&&(this._scaled=e)}getScoreObject(){const e=super.getScoreObject();return Number.isNaN(Number.parseFloat(this.scaled))||(e.scaled=Number.parseFloat(this.scaled)),e}toJSON(){this.jsonString=!0;const result={scaled:this.scaled,raw:this.raw,min:this.min,max:this.max};return this.jsonString=!1,result}}var Ks=Object.defineProperty,Xs=(e,t,i)=>((e,t,i)=>t in e?Ks(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Qs extends x{constructor(){super({CMIElement:"cmi.comments_from_lms",children:A.comments_children,errorCode:j.READ_ONLY_ELEMENT,errorClass:O})}}class Zs extends x{constructor(){super({CMIElement:"cmi.comments_from_learner",children:A.comments_children,errorCode:j.READ_ONLY_ELEMENT,errorClass:O})}}class er extends d{constructor(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];super("cmi.comments_from_learner.n"),Xs(this,"_comment",""),Xs(this,"_location",""),Xs(this,"_timestamp",""),Xs(this,"_readOnlyAfterInit"),this._comment="",this._location="",this._timestamp="",this._readOnlyAfterInit=e}reset(){this._initialized=!1}get comment(){return this._comment}set comment(comment){if(this.initialized&&this._readOnlyAfterInit)throw new O(this._cmi_element+".comment",j.READ_ONLY_ELEMENT);Rt(this._cmi_element+".comment",comment,se,!0)&&(this._comment=comment)}get location(){return this._location}set location(location){if(this.initialized&&this._readOnlyAfterInit)throw new O(this._cmi_element+".location",j.READ_ONLY_ELEMENT);Rt(this._cmi_element+".location",location,"^[\\u0000-\\uFFFF]{0,250}$")&&(this._location=location)}get timestamp(){return this._timestamp}set timestamp(timestamp){if(this.initialized&&this._readOnlyAfterInit)throw new O(this._cmi_element+".timestamp",j.READ_ONLY_ELEMENT);Rt(this._cmi_element+".timestamp",timestamp,re)&&(this._timestamp=timestamp)}toJSON(){this.jsonString=!0;const result={comment:this.comment,location:this.location,timestamp:this.timestamp};return this.jsonString=!1,result}}var tr=Object.defineProperty,ir=(e,t,i)=>((e,t,i)=>t in e?tr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class sr extends x{constructor(){super({CMIElement:"cmi.objectives",children:A.objectives_children,errorCode:j.READ_ONLY_ELEMENT,errorClass:O})}findObjectiveById(id){return this.childArray.find(e=>e.id===id)}findObjectiveByIndex(e){return this.childArray[e]}setObjectiveByIndex(e,t){this.childArray[e]=t}}class rr extends d{constructor(){super("cmi.objectives.n"),ir(this,"_id",""),ir(this,"_idIsSet",!1),ir(this,"_success_status","unknown"),ir(this,"_completion_status","unknown"),ir(this,"_progress_measure",""),ir(this,"_description",""),ir(this,"score"),this.score=new Js}reset(){this._initialized=!1,this._id="",this._idIsSet=!1,this._success_status="unknown",this._completion_status="unknown",this._progress_measure="",this._description="",this.score?.reset()}initialize(){super.initialize(),this.score?.initialize()}get id(){return this._id}set id(id){if(""===id||""===id.trim())throw new O(this._cmi_element+".id",j.TYPE_MISMATCH);if(this._idIsSet&&this._id!==id)throw new O(this._cmi_element+".id",j.GENERAL_SET_FAILURE);Rt(this._cmi_element+".id",id,ce)&&(this._id=id,this._idIsSet=!0)}get success_status(){return this._success_status}set success_status(success_status){if(this.initialized&&""===this._id)throw new O(this._cmi_element+".success_status",j.DEPENDENCY_NOT_ESTABLISHED);Rt(this._cmi_element+".success_status",success_status,ue)&&(this._success_status=success_status)}get completion_status(){return this._completion_status}set completion_status(completion_status){if(this.initialized&&""===this._id)throw new O(this._cmi_element+".completion_status",j.DEPENDENCY_NOT_ESTABLISHED);Rt(this._cmi_element+".completion_status",completion_status,le)&&(this._completion_status=completion_status)}get progress_measure(){return this._progress_measure}set progress_measure(progress_measure){if(this.initialized&&""===this._id)throw new O(this._cmi_element+".progress_measure",j.DEPENDENCY_NOT_ESTABLISHED);Rt(this._cmi_element+".progress_measure",progress_measure,oe)&&Tt(this._cmi_element+".progress_measure",progress_measure,"0#1")&&(this._progress_measure=progress_measure)}get description(){return this._description}set description(description){if(this.initialized&&""===this._id)throw new O(this._cmi_element+".description",j.DEPENDENCY_NOT_ESTABLISHED);Rt(this._cmi_element+".description",description,ie,!0)&&(this._description=description)}toJSON(){this.jsonString=!0;const result={id:this.id,success_status:this.success_status,completion_status:this.completion_status,progress_measure:this.progress_measure,description:this.description,score:this.score};return this.jsonString=!1,result}fromJSON(e){e&&"object"==typeof e&&("string"==typeof e.id&&(this.id=e.id),"string"==typeof e.success_status&&(this.success_status=e.success_status),"string"==typeof e.completion_status&&(this.completion_status=e.completion_status),void 0!==e.progress_measure&&(this.progress_measure=e.progress_measure+""),"string"==typeof e.description&&(this.description=e.description),e.score&&"object"==typeof e.score&&(void 0!==e.score.scaled&&(this.score.scaled=e.score.scaled+""),void 0!==e.score.raw&&(this.score.raw=e.score.raw+""),void 0!==e.score.min&&(this.score.min=e.score.min+""),void 0!==e.score.max&&(this.score.max=e.score.max+"")))}}var nr=Object.defineProperty,or=(e,t,i)=>((e,t,i)=>t in e?nr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class ar extends d{constructor(){super("cmi"),or(this,"__version","1.0"),or(this,"__children",A.cmi_children)}get _version(){return this.__version}set _version(_version){throw new O(this._cmi_element+"._version",j.READ_ONLY_ELEMENT)}get _children(){return this.__children}set _children(_children){throw new O(this._cmi_element+"._children",j.READ_ONLY_ELEMENT)}reset(){this._initialized=!1}}var cr=Object.defineProperty,lr=(e,t,i)=>((e,t,i)=>t in e?cr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class ur extends d{constructor(){super("cmi"),lr(this,"_learner_id",""),lr(this,"_learner_name","")}get learner_id(){return this._learner_id}set learner_id(learner_id){if(this.initialized)throw new O(this._cmi_element+".learner_id",j.READ_ONLY_ELEMENT);this._learner_id=learner_id}get learner_name(){return this._learner_name}set learner_name(learner_name){if(this.initialized)throw new O(this._cmi_element+".learner_name",j.READ_ONLY_ELEMENT);this._learner_name=learner_name}reset(){this._initialized=!1}}var hr=Object.defineProperty,dr=(e,t,i)=>((e,t,i)=>t in e?hr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class mr extends d{constructor(){super("cmi"),dr(this,"_completion_status","unknown"),dr(this,"_success_status","unknown"),dr(this,"_progress_measure","")}get completion_status(){return this._completion_status}set completion_status(completion_status){Rt(this._cmi_element+".completion_status",completion_status,le)&&(this._completion_status=completion_status)}get success_status(){return this._success_status}set success_status(success_status){Rt(this._cmi_element+".success_status",success_status,ue)&&(this._success_status=success_status)}get progress_measure(){return this._progress_measure}set progress_measure(progress_measure){Rt(this._cmi_element+".progress_measure",progress_measure,oe)&&Tt(this._cmi_element+".progress_measure",progress_measure,"0#1")&&(this._progress_measure=progress_measure)}reset(){this._initialized=!1,this._completion_status="unknown",this._success_status="unknown",this._progress_measure=""}}var pr=Object.defineProperty,_r=(e,t,i)=>((e,t,i)=>t in e?pr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class gr extends d{constructor(){super("cmi"),_r(this,"_entry",""),_r(this,"_exit",""),_r(this,"_session_time","PT0H0M0S"),_r(this,"_total_time","PT0S")}get entry(){return this._entry}set entry(entry){if(this.initialized)throw new O(this._cmi_element+".entry",j.READ_ONLY_ELEMENT);this._entry=entry}get exit(){if(!this.jsonString)throw new O(this._cmi_element+".exit",j.WRITE_ONLY_ELEMENT);return this._exit}getExitValueInternal(){return this._exit}set exit(exit){"logout"===exit&&console.warn('SCORM 2004: cmi.exit value "logout" is deprecated per 4th Edition. Consider using "normal" or "suspend" instead.'),Rt(this._cmi_element+".exit",exit,"^(time-out|suspend|logout|normal)$",!0)&&(this._exit=exit)}get session_time(){if(!this.jsonString)throw new O(this._cmi_element+".session_time",j.WRITE_ONLY_ELEMENT);return this._session_time}set session_time(session_time){Rt(this._cmi_element+".session_time",session_time,ne)&&(this._session_time=session_time)}get total_time(){return this._total_time}set total_time(total_time){if(this.initialized)throw new O(this._cmi_element+".total_time",j.READ_ONLY_ELEMENT);this._total_time=total_time}getCurrentTotalTime(e){let t=this._session_time;if(void 0!==e){const s=(new Date).getTime()-e;t=i(s/1e3)}return function(e,t,s){const n=RegExp(s);return i(r(e,n)+r(t,n))}(this._total_time,t,ne)}reset(){this._initialized=!1,this._entry="ab-initio",this._exit="",this._session_time="PT0H0M0S"}}var vr=Object.defineProperty,fr=(e,t,i)=>((e,t,i)=>t in e?vr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Sr extends d{constructor(){super("cmi"),fr(this,"_location",""),fr(this,"_launch_data",""),fr(this,"_suspend_data","")}get location(){return this._location}set location(location){Rt(this._cmi_element+".location",location,"^[\\u0000-\\uFFFF]{0,1000}$")&&(this._location=location)}get launch_data(){return this._launch_data}set launch_data(launch_data){if(this.initialized)throw new O(this._cmi_element+".launch_data",j.READ_ONLY_ELEMENT);this._launch_data=launch_data}get suspend_data(){return this._suspend_data}set suspend_data(suspend_data){Rt(this._cmi_element+".suspend_data",suspend_data,te,!0)&&(this._suspend_data=suspend_data)}reset(){this._initialized=!1,this._location="",this._suspend_data=""}}var br=Object.defineProperty,yr=(e,t,i)=>((e,t,i)=>t in e?br(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Cr extends d{constructor(){super("cmi"),yr(this,"_credit","credit"),yr(this,"_mode","normal"),yr(this,"_time_limit_action","continue,no message"),yr(this,"_max_time_allowed","")}get credit(){return this._credit}set credit(credit){if(this.initialized)throw new O(this._cmi_element+".credit",j.READ_ONLY_ELEMENT);if(!/^(credit|no-credit)$/.test(credit))throw new O(this._cmi_element+".credit",j.TYPE_MISMATCH);this._credit=credit}get mode(){return this._mode}set mode(mode){if(this.initialized)throw new O(this._cmi_element+".mode",j.READ_ONLY_ELEMENT);if(!/^(browse|normal|review)$/.test(mode))throw new O(this._cmi_element+".mode",j.TYPE_MISMATCH);this._mode=mode}get time_limit_action(){return this._time_limit_action}set time_limit_action(time_limit_action){if(this.initialized)throw new O(this._cmi_element+".time_limit_action",j.READ_ONLY_ELEMENT);if(!/^(exit,message|exit,no message|continue,message|continue,no message)$/.test(time_limit_action))throw new O(this._cmi_element+".time_limit_action",j.TYPE_MISMATCH);this._time_limit_action=time_limit_action}get max_time_allowed(){return this._max_time_allowed}set max_time_allowed(max_time_allowed){if(this.initialized)throw new O(this._cmi_element+".max_time_allowed",j.READ_ONLY_ELEMENT);if(""!==max_time_allowed){if(!RegExp(ne).test(max_time_allowed))throw new O(this._cmi_element+".max_time_allowed",j.TYPE_MISMATCH);this._max_time_allowed=max_time_allowed}else this._max_time_allowed=max_time_allowed}reset(){this._initialized=!1}}var Ar=Object.defineProperty,Er=(e,t,i)=>((e,t,i)=>t in e?Ar(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class wr extends d{constructor(){super("cmi"),Er(this,"_scaled_passing_score",""),Er(this,"_completion_threshold","")}get scaled_passing_score(){return this._scaled_passing_score}set scaled_passing_score(scaled_passing_score){if(this.initialized)throw new O(this._cmi_element+".scaled_passing_score",j.READ_ONLY_ELEMENT??404);if(""===scaled_passing_score)return void(this._scaled_passing_score=scaled_passing_score);if(!RegExp(oe).test(scaled_passing_score))throw new O(this._cmi_element+".scaled_passing_score",j.TYPE_MISMATCH??406);const e=parseFloat(scaled_passing_score);if(-1>e||e>1)throw new O(this._cmi_element+".scaled_passing_score",j.VALUE_OUT_OF_RANGE??407);this._scaled_passing_score=scaled_passing_score}get completion_threshold(){return this._completion_threshold}set completion_threshold(e){if(this.initialized)throw new O(this._cmi_element+".completion_threshold",j.READ_ONLY_ELEMENT??404);if(""===e)return void(this._completion_threshold=e);if(!RegExp(oe).test(e))throw new O(this._cmi_element+".completion_threshold",j.TYPE_MISMATCH??406);const t=parseFloat(e);if(0>t||t>1)throw new O(this._cmi_element+".completion_threshold",j.VALUE_OUT_OF_RANGE??407);this._completion_threshold=e}reset(){this._initialized=!1}}var Mr=Object.defineProperty,Or=(e,t,i)=>((e,t,i)=>t in e?Mr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Rr extends m{constructor(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];super("cmi"),Or(this,"metadata"),Or(this,"learner"),Or(this,"status"),Or(this,"session"),Or(this,"content"),Or(this,"settings"),Or(this,"thresholds"),Or(this,"learner_preference"),Or(this,"score"),Or(this,"comments_from_learner"),Or(this,"comments_from_lms"),Or(this,"interactions"),Or(this,"objectives"),this.metadata=new ar,this.learner=new ur,this.status=new mr,this.session=new gr,this.content=new Sr,this.settings=new Cr,this.thresholds=new wr,this.learner_preference=new Ps,this.score=new Js,this.comments_from_learner=new Zs,this.comments_from_lms=new Qs,this.interactions=new ks,this.objectives=new sr,e&&this.initialize()}initialize(){super.initialize(),this.metadata?.initialize(),this.learner?.initialize(),this.status?.initialize(),this.session?.initialize(),this.content?.initialize(),this.settings?.initialize(),this.thresholds?.initialize(),this.learner_preference?.initialize(),this.score?.initialize(),this.comments_from_learner?.initialize(),this.comments_from_lms?.initialize(),this.interactions?.initialize(),this.objectives?.initialize()}reset(){this._initialized=!1,this.metadata?.reset(),this.learner?.reset(),this.status?.reset(),this.session?.reset(),this.content?.reset(),this.settings?.reset(),this.thresholds?.reset(),this.objectives?.reset(!0),this.interactions?.reset(!0),this.score?.reset(),this.comments_from_learner?.reset(),this.comments_from_lms?.reset(),this.learner_preference?.reset()}get _version(){return this.metadata._version}set _version(_version){this.metadata._version=_version}get _children(){return this.metadata._children}set _children(_children){this.metadata._children=_children}get completion_status(){return this.status.completion_status}set completion_status(completion_status){this.status.completion_status=completion_status}get completion_threshold(){return this.thresholds.completion_threshold}set completion_threshold(e){this.thresholds.completion_threshold=e}get credit(){return this.settings.credit}set credit(credit){this.settings.credit=credit}get entry(){return this.session.entry}set entry(entry){this.session.entry=entry}get exit(){return this.session.jsonString=this.jsonString,this.session.exit}set exit(exit){this.session.exit=exit}getExitValueInternal(){return this.session.getExitValueInternal()}get launch_data(){return this.content.launch_data}set launch_data(launch_data){this.content.launch_data=launch_data}get learner_id(){return this.learner.learner_id}set learner_id(learner_id){this.learner.learner_id=learner_id}get learner_name(){return this.learner.learner_name}set learner_name(learner_name){this.learner.learner_name=learner_name}get location(){return this.content.location}set location(location){this.content.location=location}get max_time_allowed(){return this.settings.max_time_allowed}set max_time_allowed(max_time_allowed){this.settings.max_time_allowed=max_time_allowed}get mode(){return this.settings.mode}set mode(mode){this.settings.mode=mode}get progress_measure(){return this.status.progress_measure}set progress_measure(progress_measure){this.status.progress_measure=progress_measure}get scaled_passing_score(){return this.thresholds.scaled_passing_score}set scaled_passing_score(scaled_passing_score){this.thresholds.scaled_passing_score=scaled_passing_score}get session_time(){return this.session.jsonString=this.jsonString,this.session.session_time}set session_time(session_time){this.session.session_time=session_time}get success_status(){return this.status.success_status}set success_status(success_status){this.status.success_status=success_status}get suspend_data(){return this.content.suspend_data}set suspend_data(suspend_data){this.content.suspend_data=suspend_data}get time_limit_action(){return this.settings.time_limit_action}set time_limit_action(time_limit_action){this.settings.time_limit_action=time_limit_action}get total_time(){return this.session.total_time}set total_time(total_time){this.session.total_time=total_time}getCurrentTotalTime(){return this.session.getCurrentTotalTime(this.start_time)}toJSON(){this.jsonString=!0,this.session.jsonString=!0;const result={comments_from_learner:this.comments_from_learner,comments_from_lms:this.comments_from_lms,completion_status:this.completion_status,completion_threshold:this.completion_threshold,credit:this.credit,entry:this.entry,exit:this.exit,interactions:this.interactions,launch_data:this.launch_data,learner_id:this.learner_id,learner_name:this.learner_name,learner_preference:this.learner_preference,location:this.location,max_time_allowed:this.max_time_allowed,mode:this.mode,objectives:this.objectives,progress_measure:this.progress_measure,scaled_passing_score:this.scaled_passing_score,score:this.score,session_time:this.session_time,success_status:this.success_status,suspend_data:this.suspend_data,time_limit_action:this.time_limit_action,total_time:this.total_time};return this.jsonString=!1,this.session.jsonString=!1,result}}var Tr=Object.defineProperty,jr=(e,t,i)=>((e,t,i)=>t in e?Tr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Ir extends d{constructor(){super("adl"),jr(this,"nav"),jr(this,"data",new xr),jr(this,"_sequencing",null),this.nav=new Nr,this.data=new xr}initialize(){super.initialize(),this.nav?.initialize()}reset(){this._initialized=!1,this.nav?.reset()}get sequencing(){return this._sequencing}set sequencing(e){this._sequencing=e,e&&(e.adlNav=this.nav,this.nav.sequencing=e)}toJSON(){this.jsonString=!0;const result={nav:this.nav,data:this.data};return this.jsonString=!1,result}}class Nr extends d{constructor(){super("adl.nav"),jr(this,"_request","_none_"),jr(this,"_sequencing",null),jr(this,"request_valid"),this.request_valid=new Pr,this.request_valid.setParentNav(this)}get sequencing(){return this._sequencing}set sequencing(e){this._sequencing=e}initialize(){super.initialize(),this.request_valid?.initialize()}reset(){this._initialized=!1,this._request="_none_",this._sequencing&&(this._sequencing.adlNav=null),this._sequencing=null,this.request_valid?.reset()}get request(){return this._request}set request(request){Rt(this._cmi_element+".request",request,he)&&(this._request=request)}toJSON(){this.jsonString=!0;const result={request:this.request};return this.jsonString=!1,result}}class xr extends x{constructor(){super({CMIElement:"adl.data",children:A.adl_data_children,errorCode:j.READ_ONLY_ELEMENT,errorClass:O})}}class qr extends d{constructor(){super("adl.data.n"),jr(this,"_id",""),jr(this,"_store",""),jr(this,"_idIsSet",!1),jr(this,"_storeIsSet",!1)}reset(){this._initialized=!1,this._idIsSet=!1,this._storeIsSet=!1}get id(){return this._id}set id(id){if(this.initialized)throw new O(this._cmi_element+".id",j.READ_ONLY_ELEMENT);Rt(this._cmi_element+".id",id,ce)&&(this._id=id,this._idIsSet=!0)}get store(){if(this.initialized&&!this._storeIsSet)throw new O(this._cmi_element+".store",j.VALUE_NOT_INITIALIZED);return this._store}set store(e){if(this.initialized&&!this._idIsSet)throw new O(this._cmi_element+".store",j.DEPENDENCY_NOT_ESTABLISHED);Rt(this._cmi_element+".store",e,te)&&(this._store=e,this._storeIsSet=!0)}toJSON(){this.jsonString=!0;const result={id:this._id,store:this._store};return this.jsonString=!1,result}}class Dr{constructor(){jr(this,"_parentNav",null),jr(this,"_staticValues",{})}setParentNav(nav){this._parentNav=nav}_isTargetValid(e){if(this._parentNav?.sequencing?.overallSequencingProcess){const t=this._parentNav.sequencing.overallSequencingProcess;if(t.predictChoiceEnabled)return t.predictChoiceEnabled(e)?"true":"false"}const t=this._staticValues[e];return t===D?"true":t===L?"false":"unknown"}getAll(){return{...this._staticValues}}setAll(e){this._staticValues={...e}}}class Lr{constructor(){jr(this,"_parentNav",null),jr(this,"_staticValues",{})}setParentNav(nav){this._parentNav=nav}_isTargetValid(e){if(this._parentNav?.sequencing?.activityTree)return this._parentNav.sequencing.activityTree.getActivity(e)?"true":"false";const t=this._staticValues[e];return t===D?"true":t===L?"false":"unknown"}getAll(){return{...this._staticValues}}setAll(e){this._staticValues={...e}}}class Pr extends d{constructor(){super("adl.nav.request_valid"),jr(this,"_continue","unknown"),jr(this,"_previous","unknown"),jr(this,"_choice"),jr(this,"_jump"),jr(this,"_exit","unknown"),jr(this,"_exitAll","unknown"),jr(this,"_abandon","unknown"),jr(this,"_abandonAll","unknown"),jr(this,"_suspendAll","unknown"),jr(this,"_parentNav",null),this._choice=new Dr,this._jump=new Lr}setParentNav(nav){this._parentNav=nav,this._choice.setParentNav(nav),this._jump.setParentNav(nav)}reset(){this._initialized=!1,this._continue="unknown",this._previous="unknown",this._choice.setAll({}),this._jump.setAll({}),this._exit="unknown",this._exitAll="unknown",this._abandon="unknown",this._abandonAll="unknown",this._suspendAll="unknown"}get continue(){if(this._parentNav?.sequencing?.overallSequencingProcess){const e=this._parentNav.sequencing.overallSequencingProcess;if(e.predictContinueEnabled)return e.predictContinueEnabled()?"true":"false"}return this._continue}set continue(e){if(this.initialized)throw new O(this._cmi_element+".continue",j.READ_ONLY_ELEMENT);Rt(this._cmi_element+".continue",e,de)&&(this._continue=e)}get previous(){if(this._parentNav?.sequencing?.overallSequencingProcess){const e=this._parentNav.sequencing.overallSequencingProcess;if(e.predictPreviousEnabled)return e.predictPreviousEnabled()?"true":"false"}return this._previous}set previous(e){if(this.initialized)throw new O(this._cmi_element+".previous",j.READ_ONLY_ELEMENT);Rt(this._cmi_element+".previous",e,de)&&(this._previous=e)}get choice(){return this._choice}set choice(e){if(this.initialized)throw new O(this._cmi_element+".choice",j.READ_ONLY_ELEMENT);if("object"!=typeof e)throw new O(this._cmi_element+".choice",j.TYPE_MISMATCH);const t={};for(const i in e)if({}.hasOwnProperty.call(e,i)&&Rt(this._cmi_element+".choice."+i,e[i]||"",de)&&Rt(this._cmi_element+".choice."+i,i,me)){const s=e[i];"true"===s?t[i]=D:"false"===s?t[i]=L:"unknown"===s&&(t[i]=q)}this._choice.setAll(t)}get jump(){return this._jump}set jump(e){if(this.initialized)throw new O(this._cmi_element+".jump",j.READ_ONLY_ELEMENT);if("object"!=typeof e)throw new O(this._cmi_element+".jump",j.TYPE_MISMATCH);const t={};for(const i in e)if({}.hasOwnProperty.call(e,i)&&Rt(this._cmi_element+".jump."+i,e[i]||"",de)&&Rt(this._cmi_element+".jump."+i,i,me)){const s=e[i];"true"===s?t[i]=D:"false"===s?t[i]=L:"unknown"===s&&(t[i]=q)}this._jump.setAll(t)}get exit(){return this._exit}set exit(e){if(this.initialized)throw new O(this._cmi_element+".exit",j.READ_ONLY_ELEMENT);Rt(this._cmi_element+".exit",e,de)&&(this._exit=e)}get exitAll(){return this._exitAll}set exitAll(e){if(this.initialized)throw new O(this._cmi_element+".exitAll",j.READ_ONLY_ELEMENT);Rt(this._cmi_element+".exitAll",e,de)&&(this._exitAll=e)}get abandon(){return this._abandon}set abandon(e){if(this.initialized)throw new O(this._cmi_element+".abandon",j.READ_ONLY_ELEMENT);Rt(this._cmi_element+".abandon",e,de)&&(this._abandon=e)}get abandonAll(){return this._abandonAll}set abandonAll(e){if(this.initialized)throw new O(this._cmi_element+".abandonAll",j.READ_ONLY_ELEMENT);Rt(this._cmi_element+".abandonAll",e,de)&&(this._abandonAll=e)}get suspendAll(){return this._suspendAll}set suspendAll(e){if(this.initialized)throw new O(this._cmi_element+".suspendAll",j.READ_ONLY_ELEMENT);Rt(this._cmi_element+".suspendAll",e,de)&&(this._suspendAll=e)}toJSON(){this.jsonString=!0;const result={previous:this.previous,continue:this.continue,choice:this._choice.getAll(),jump:this._jump.getAll(),exit:this.exit,exitAll:this.exitAll,abandon:this.abandon,abandonAll:this.abandonAll,suspendAll:this.suspendAll};return this.jsonString=!1,result}}var zr=Object.defineProperty,Fr=(e,t,i)=>((e,t,i)=>t in e?zr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class kr extends d{constructor(e){super("activityTree"),Fr(this,"_root",null),Fr(this,"_currentActivity",null),Fr(this,"_suspendedActivity",null),Fr(this,"_activities",new Map),e&&(this.root=e)}initialize(){super.initialize(),this._root&&this._root.initialize()}reset(){this._initialized=!1,this._currentActivity=null,this._suspendedActivity=null,this._activities.clear(),this._root&&(this._root.reset(),this._activities.set(this._root.id,this._root),this._addActivitiesToMap(this._root))}get root(){return this._root}set root(e){if(null!==e&&!(e instanceof kt))throw new O(this._cmi_element+".root",j.TYPE_MISMATCH);this._activities.clear(),this._root=e,e&&(this._activities.set(e.id,e),this._addActivitiesToMap(e))}_addActivitiesToMap(e){for(const t of e.children)this._activities.set(t.id,t),this._addActivitiesToMap(t)}get currentActivity(){return this._currentActivity}set currentActivity(e){if(null!==e&&!(e instanceof kt))throw new O(this._cmi_element+".currentActivity",j.TYPE_MISMATCH);if(this._currentActivity){this._currentActivity.isActive=!1;let e=this._currentActivity.parent;for(;e;)e.isActive=!1,e=e.parent}if(this._currentActivity=e,e){e.isActive=!0;let t=e.parent;for(;t;)t.isActive=!0,t=t.parent}}setCurrentActivityWithoutActivation(e){if(null!==e&&!(e instanceof kt))throw new O(this._cmi_element+".currentActivity",j.TYPE_MISMATCH);if(this._currentActivity){const t=new Set;if(e){t.add(e);let i=e.parent;for(;i;)t.add(i),i=i.parent}this._currentActivity.isActive=!1;let i=this._currentActivity.parent;for(;i;)t.has(i)||(i.isActive=!1),i=i.parent}this._currentActivity=e}get suspendedActivity(){return this._suspendedActivity}set suspendedActivity(e){if(null!==e&&!(e instanceof kt))throw new O(this._cmi_element+".suspendedActivity",j.TYPE_MISMATCH);if(this._suspendedActivity){this._suspendedActivity.isSuspended=!1;let e=this._suspendedActivity.parent;for(;e;)e.isSuspended=!1,e=e.parent}if(this._suspendedActivity=e,e){e.isSuspended=!0;let t=e.parent;for(;t;)t.isSuspended=!0,t=t.parent}}getActivity(id){return this._activities.get(id)||null}getAllActivities(){return Array.from(this._activities.values())}getParent(e){return e.parent}getChildren(e){return 1>=arguments.length||void 0===arguments[1]||arguments[1]?e.getAvailableChildren():e.children}getSiblings(e){return e.parent?e.parent.children.filter(t=>t!==e):[]}getNextSibling(e){let t=1>=arguments.length||void 0===arguments[1]||arguments[1];if(!e.parent)return null;let i=t?e.parent.getAvailableChildren():e.parent.children,s=i.indexOf(e);return-1===s&&t&&(i=e.parent.children,s=i.indexOf(e)),-1===s||s===i.length-1?null:i[s+1]??null}getPreviousSibling(e){let t=1>=arguments.length||void 0===arguments[1]||arguments[1];if(!e.parent)return null;let i=t?e.parent.getAvailableChildren():e.parent.children,s=i.indexOf(e);return-1===s&&t&&(i=e.parent.children,s=i.indexOf(e)),s>0?i[s-1]??null:null}getFirstChild(e){const t=1>=arguments.length||void 0===arguments[1]||arguments[1]?e.getAvailableChildren():e.children;return 0===t.length?null:t[0]??null}getLastChild(e){const t=1>=arguments.length||void 0===arguments[1]||arguments[1]?e.getAvailableChildren():e.children;return 0===t.length?null:t[t.length-1]??null}getCommonAncestor(e,t){const i=[];let s=e;for(;s;)i.unshift(s),s=s.parent;for(s=t;s;){if(i.includes(s))return s;s=s.parent}return null}toJSON(){this.jsonString=!0;const result={root:this._root,currentActivity:this._currentActivity?this._currentActivity.id:null,suspendedActivity:this._suspendedActivity?this._suspendedActivity.id:null};return this.jsonString=!1,result}}var Vr=Object.defineProperty,Hr=(e,t,i)=>((e,t,i)=>t in e?Vr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Br extends d{constructor(){super("sequencing"),Hr(this,"_activityTree"),Hr(this,"_sequencingRules"),Hr(this,"_sequencingControls"),Hr(this,"_rollupRules"),Hr(this,"_adlNav",null),Hr(this,"_hideLmsUi",[]),Hr(this,"_auxiliaryResources",[]),Hr(this,"_overallSequencingProcess",null),this._activityTree=new kr,this._sequencingRules=new Re,this._sequencingControls=new Ge,this._rollupRules=new Lt}initialize(){super.initialize(),this._activityTree.initialize(),this._sequencingRules.initialize(),this._sequencingControls.initialize(),this._rollupRules.initialize()}reset(){this._initialized=!1,this._activityTree.reset(),this._sequencingRules.reset(),this._sequencingControls.reset(),this._rollupRules.reset(),this._hideLmsUi=[],this._auxiliaryResources=[]}get activityTree(){return this._activityTree}set activityTree(e){if(!(e instanceof kr))throw new O(this._cmi_element+".activityTree",j.TYPE_MISMATCH);this._activityTree=e}get sequencingRules(){return this._sequencingRules}set sequencingRules(e){if(!(e instanceof Re))throw new O(this._cmi_element+".sequencingRules",j.TYPE_MISMATCH);this._sequencingRules=e}get sequencingControls(){return this._sequencingControls}set sequencingControls(e){if(!(e instanceof Ge))throw new O(this._cmi_element+".sequencingControls",j.TYPE_MISMATCH);this._sequencingControls=e}get hideLmsUi(){return[...this._hideLmsUi]}set hideLmsUi(e){this._hideLmsUi=[...e]}get auxiliaryResources(){return this._auxiliaryResources.map(e=>({...e}))}set auxiliaryResources(e){this._auxiliaryResources=e.map(e=>({...e}))}get rollupRules(){return this._rollupRules}set rollupRules(e){if(!(e instanceof Lt))throw new O(this._cmi_element+".rollupRules",j.TYPE_MISMATCH);this._rollupRules=e}get adlNav(){return this._adlNav}set adlNav(e){this._adlNav=e}get overallSequencingProcess(){return this._overallSequencingProcess}set overallSequencingProcess(e){this._overallSequencingProcess=e}processRollup(){const e=this._activityTree.root;e&&this._processRollupRecursive(e)}_processRollupRecursive(e){for(const t of e.children)this._processRollupRecursive(t);this._rollupRules.processRollup(e)}getCurrentActivity(){return this._activityTree.currentActivity}getRootActivity(){return this._activityTree.root}toJSON(){this.jsonString=!0;const result={activityTree:this._activityTree,sequencingRules:this._sequencingRules,sequencingControls:this._sequencingControls,rollupRules:this._rollupRules,adlNav:this._adlNav};return this.jsonString=!1,result}}var Ur=Object.defineProperty;class $r{constructor(e){var t;((e,t,i)=>{t in e?Ur(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i})(this,"context"+"",t),this.context=e}checkValidResponseType(e,t,i,s){let r=[];t?.delimiter?r=(i+"").split(t.delimiter):r[0]=i,r.length>0&&t.max>=r.length?this.context.checkCorrectResponseValue?this.context.checkCorrectResponseValue(e,s,r,i):this.checkCorrectResponseValue(e,s,r,i):r.length>t.max&&this.context.throwSCORMError(e,j.GENERAL_SET_FAILURE,"Data Model Element Pattern Too Long: "+i)}checkDuplicateChoiceResponse(e,t,i){const s=t.correct_responses._count;if("choice"===t.type)for(let r=0;s>r&&"0"===this.context.getLastErrorCode();r++){const s=t.correct_responses.childArray[r];s?.pattern===i&&this.context.throwSCORMError(e,j.GENERAL_SET_FAILURE,""+i)}}validateCorrectResponse(e,t,i){const s=+e.split(".")[4];if(!t)return void this.context.throwSCORMError(e,j.DEPENDENCY_NOT_ESTABLISHED,e);const r=t.correct_responses._count;this.checkDuplicateChoiceResponse(e,t,i);const n=_e[t.type];n&&(void 0===n.limit||n.limit>r)?(this.checkValidResponseType(e,n,i,t.type),"0"===this.context.getLastErrorCode()&&(!n.duplicate||!this.checkDuplicatedPattern(t.correct_responses,s,i))||"0"===this.context.getLastErrorCode()&&""===i||"0"===this.context.getLastErrorCode()&&this.context.throwSCORMError(e,j.GENERAL_SET_FAILURE,`Data Model Element Pattern Already Exists: ${e} - ${i}`)):this.context.throwSCORMError(e,j.GENERAL_SET_FAILURE,`Data Model Element Collection Limit Reached: ${e} - ${i}`)}checkDuplicatedPattern(e,t,i){let s=!1;const r=e._count;for(let n=0;r>n&&!s;n++)if(n!==t){const t=e.childArray[n],r=t?.pattern;r===i&&(s=!0)}return s}checkCorrectResponseValue(e,t,i,s){const r=_e[t];if(!r)return void this.context.throwSCORMError(e,j.TYPE_MISMATCH,"Incorrect Response Type: "+t);const n=RegExp(r.format);for(let o=0;i.length>o&&"0"===this.context.getLastErrorCode();o++)if(t.match("^(fill-in|long-fill-in|matching|performance|sequencing)$")&&(i[o]=this.removeCorrectResponsePrefixes(e,i[o])),r?.delimiter2){const a=i[o].split(r.delimiter2);2===a.length&&a[0].match(n)&&r.format2&&a[1].match(RegExp(r.format2))||this.context.throwSCORMError(e,j.TYPE_MISMATCH,`${t}: ${s}`)}else{const a=i[o].match(n);if(!a&&""!==s||!a&&"true-false"===t)this.context.throwSCORMError(e,j.TYPE_MISMATCH,`${t}: ${s}`);else if("numeric"===t&&i.length>1)+i[0]>+i[1]&&this.context.throwSCORMError(e,j.TYPE_MISMATCH,`${t}: ${s}`);else if(""!==i[o]&&r.unique)for(let r=0;o>r&&"0"===this.context.getLastErrorCode();r++)i[o]===i[r]&&this.context.throwSCORMError(e,j.TYPE_MISMATCH,`${t}: ${s}`)}}removeCorrectResponsePrefixes(e,t){let i=!1,s=!1,r=!1;const n=RegExp("^({(lang|case_matters|order_matters)=([^}]+)})");let o,a=t.match(n);for(;a;){switch(a[2]){case"lang":if(o=t.match("^(({lang=([a-zA-Z]{1,8}|i|x)?(-[a-zA-Z0-9-]{2,8})?}))(.*?)$"),o){const i=o[3];void 0!==i&&i.length>0&&(ge.includes(i.toLowerCase())||this.context.throwSCORMError(e,j.TYPE_MISMATCH,""+t))}r=!0;break;case"case_matters":r||i||s||"true"!==a[3]&&"false"!==a[3]&&this.context.throwSCORMError(e,j.TYPE_MISMATCH,""+t),s=!0;break;case"order_matters":s||r||i||"true"!==a[3]&&"false"!==a[3]&&this.context.throwSCORMError(e,j.TYPE_MISMATCH,""+t),i=!0}a=(t=t.substring(a[1]?.length||0)).match(n)}return t}}var Gr=Object.defineProperty,Yr=(e,t,i)=>((e,t,i)=>t in e?Gr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Wr{constructor(e,t){Yr(this,"context"),Yr(this,"responseValidator"),this.context=e,this.responseValidator=t}getChildElement(e,t,i){if(c(e,"cmi\\.objectives\\.\\d+"))return new rr;if(i){if(c(e,"cmi\\.interactions\\.\\d+\\.correct_responses\\.\\d+"))return this.createCorrectResponsesObject(e,t);if(c(e,"cmi\\.interactions\\.\\d+\\.objectives\\.\\d+"))return new Hs}else if(c(e,"cmi\\.interactions\\.\\d+"))return new Vs;return c(e,"cmi\\.comments_from_learner\\.\\d+")?new er:c(e,"cmi\\.comments_from_lms\\.\\d+")?new er(!0):c(e,"adl\\.data\\.\\d+")?new qr:null}createCorrectResponsesObject(e,t){const i=e.split("."),s=this.context.cmi.interactions.childArray[+i[2]];if(this.context.isInitialized()){if(void 0===s||!s.type)return this.context.throwSCORMError(e,j.DEPENDENCY_NOT_ESTABLISHED,e),null;{const i=_e[s.type];if(i&&void 0!==i.limit&&s.correct_responses._count>=i.limit)return this.context.throwSCORMError(e,j.GENERAL_SET_FAILURE,"Data Model Element Collection Limit Reached: "+e),null;if(this.responseValidator.checkDuplicateChoiceResponse(e,s,t),!i)return this.context.throwSCORMError(e,j.GENERAL_SET_FAILURE,"Incorrect Response Type: "+s.type),null;this.responseValidator.checkValidResponseType(e,i,t,s.type)}}return"0"===this.context.getLastErrorCode()?new Ys(s?.type):null}evaluateCompletionStatus(){const e=this.context.cmi.completion_threshold,t=this.context.cmi.progress_measure,i=this.context.cmi.completion_status;if(""!==e&&null!=e){const i=parseFloat(e+"");if(!isNaN(i)){if(""!==t&&null!=t){const e=parseFloat(t+"");if(!isNaN(e))return i>e?V:k}return H}}return i||H}evaluateSuccessStatus(){const e=this.context.cmi.scaled_passing_score,t=this.context.cmi.score.scaled,i=this.context.cmi.success_status;if(""!==e&&null!=e){const i=parseFloat(e+"");if(!isNaN(i)){if(""!==t&&null!=t){const e=parseFloat(t+"");if(!isNaN(e))return i>e?z:P}return F}}return i||F}}class Jr{applySequencingControlsSettings(e,t){void 0!==t.enabled&&(e.enabled=t.enabled),void 0!==t.choice&&(e.choice=t.choice),void 0!==t.choiceExit&&(e.choiceExit=t.choiceExit),void 0!==t.flow&&(e.flow=t.flow),void 0!==t.forwardOnly&&(e.forwardOnly=t.forwardOnly),void 0!==t.useCurrentAttemptObjectiveInfo&&(e.useCurrentAttemptObjectiveInfo=t.useCurrentAttemptObjectiveInfo),void 0!==t.useCurrentAttemptProgressInfo&&(e.useCurrentAttemptProgressInfo=t.useCurrentAttemptProgressInfo),void 0!==t.preventActivation&&(e.preventActivation=t.preventActivation),void 0!==t.constrainChoice&&(e.constrainChoice=t.constrainChoice),void 0!==t.stopForwardTraversal&&(e.stopForwardTraversal=t.stopForwardTraversal),void 0!==t.rollupObjectiveSatisfied&&(e.rollupObjectiveSatisfied=t.rollupObjectiveSatisfied),void 0!==t.rollupProgressCompletion&&(e.rollupProgressCompletion=t.rollupProgressCompletion),void 0!==t.objectiveMeasureWeight&&(e.objectiveMeasureWeight=t.objectiveMeasureWeight),void 0!==t.selectionTiming&&(e.selectionTiming=t.selectionTiming),void 0!==t.selectCount&&(e.selectCount=t.selectCount),void 0!==t.randomizeChildren&&(e.randomizeChildren=t.randomizeChildren),void 0!==t.randomizationTiming&&(e.randomizationTiming=t.randomizationTiming),void 0!==t.selectionCountStatus&&(e.selectionCountStatus=t.selectionCountStatus),void 0!==t.reorderChildren&&(e.reorderChildren=t.reorderChildren),void 0!==t.completionSetByContent&&(e.completionSetByContent=t.completionSetByContent),void 0!==t.objectiveSetByContent&&(e.objectiveSetByContent=t.objectiveSetByContent)}applySequencingRulesSettings(e,t){if(t){if(t.preConditionRules)for(const i of t.preConditionRules){const t=this.createSequencingRule(i);e.addPreConditionRule(t)}if(t.exitConditionRules)for(const i of t.exitConditionRules){const t=this.createSequencingRule(i);e.addExitConditionRule(t)}if(t.postConditionRules)for(const i of t.postConditionRules){const t=this.createSequencingRule(i);e.addPostConditionRule(t)}}}createSequencingRule(e){const t=new Oe(e.action,e.conditionCombination);for(const i of e.conditions){const e=new Me(i.condition,i.operator,new Map(Object.entries(i.parameters||{})));i.referencedObjective&&(e.referencedObjective=i.referencedObjective),t.addCondition(e)}return t}applyRollupRulesSettings(e,t){if(t?.rules)for(const i of t.rules){const t=this.createRollupRule(i);e.addRule(t)}}createRollupRule(e){const t=new Dt(e.action,e.consideration,e.minimumCount,e.minimumPercent);for(const i of e.conditions){const e=new qt(i.condition,new Map(Object.entries(i.parameters||{})));t.addCondition(e)}return t}sanitizeSequencingCollections(e){if(!e)return{};const t={};for(const[id,i]of Object.entries(e)){const e=id.trim();if(!e)continue;const s={};if(i.sequencingControls&&(s.sequencingControls={...i.sequencingControls}),i.sequencingRules){const e=e=>{const t={action:e.action,conditions:e.conditions.map(e=>{const t={condition:e.condition};return void 0!==e.operator&&(t.operator=e.operator),e.parameters&&(t.parameters={...e.parameters}),void 0!==e.referencedObjective&&(t.referencedObjective=e.referencedObjective),t})};return void 0!==e.conditionCombination&&(t.conditionCombination=e.conditionCombination),t};s.sequencingRules={},i.sequencingRules.preConditionRules&&(s.sequencingRules.preConditionRules=i.sequencingRules.preConditionRules.map(e)),i.sequencingRules.exitConditionRules&&(s.sequencingRules.exitConditionRules=i.sequencingRules.exitConditionRules.map(e)),i.sequencingRules.postConditionRules&&(s.sequencingRules.postConditionRules=i.sequencingRules.postConditionRules.map(e))}i.rollupRules&&(s.rollupRules={rules:i.rollupRules.rules?.map(e=>{const t={action:e.action,conditions:e.conditions.map(e=>{const t={condition:e.condition};return e.parameters&&(t.parameters={...e.parameters}),t})};return void 0!==e.consideration&&(t.consideration=e.consideration),void 0!==e.minimumCount&&(t.minimumCount=e.minimumCount),void 0!==e.minimumPercent&&(t.minimumPercent=e.minimumPercent),t})}),i.rollupConsiderations&&(s.rollupConsiderations={...i.rollupConsiderations}),i.selectionRandomizationState&&(s.selectionRandomizationState=this.cloneSelectionRandomizationState(i.selectionRandomizationState)),i.hideLmsUi&&(s.hideLmsUi=this.sanitizeHideLmsUi(i.hideLmsUi)),i.auxiliaryResources&&(s.auxiliaryResources=this.sanitizeAuxiliaryResources(i.auxiliaryResources)),t[e]=s}return t}normalizeCollectionRefs(e){if(!e)return[];const t=Array.isArray(e)?e:[e],i=new Set,result=[];for(const e of t){const t=e.trim();t&&!i.has(t)&&(i.add(t),result.push(t))}return result}applySequencingCollection(e,t,i){if(t){if(t.sequencingControls&&this.applySequencingControlsSettings(e.sequencingControls,t.sequencingControls),t.sequencingRules&&this.applySequencingRulesSettings(e.sequencingRules,t.sequencingRules),t.rollupRules&&this.applyRollupRulesSettings(e.rollupRules,t.rollupRules),t.rollupConsiderations&&e.applyRollupConsiderations(t.rollupConsiderations),t.hideLmsUi){const i=this.mergeHideLmsUi(e.hideLmsUi,t.hideLmsUi);i.length>0&&(e.hideLmsUi=i)}if(t.auxiliaryResources){const i=this.sanitizeAuxiliaryResources(t.auxiliaryResources);i.length>0&&(e.auxiliaryResources=this.mergeAuxiliaryResources(e.auxiliaryResources,i))}t.selectionRandomizationState&&i.push(this.cloneSelectionRandomizationState(t.selectionRandomizationState))}}sanitizeHideLmsUi(e){if(!e)return[];const t=new Set(be),i=new Set,s=[];for(const r of e)t.has(r)&&!i.has(r)&&(i.add(r),s.push(r));return s}mergeHideLmsUi(e,t){return t&&0!==t.length?this.sanitizeHideLmsUi([...e,...t]):e}sanitizeAuxiliaryResources(e){if(!e)return[];const t=new Set,i=[];for(const s of e){if(!s)continue;if(!s.resourceId||"string"!=typeof s.resourceId)continue;if(!s.purpose||"string"!=typeof s.purpose)continue;const e=s.resourceId.trim(),r=s.purpose.trim();if(!e||!r)continue;const n=`${e}::${r}`;t.has(n)||(t.add(n),i.push({resourceId:e,purpose:r}))}return i}mergeAuxiliaryResources(e,t){const i=[],s=new Set;for(const r of[...e??[],...t??[]]){if(!r)continue;const e=r.resourceId;e&&!s.has(e)&&(s.add(e),i.push({resourceId:e,purpose:r.purpose}))}return i}cloneSelectionRandomizationState(e){const t={};return e.childOrder&&(t.childOrder=[...e.childOrder]),e.selectedChildIds&&(t.selectedChildIds=[...e.selectedChildIds]),e.hiddenFromChoiceChildIds&&(t.hiddenFromChoiceChildIds=[...e.hiddenFromChoiceChildIds]),void 0!==e.selectionCountStatus&&(t.selectionCountStatus=e.selectionCountStatus),void 0!==e.reorderChildren&&(t.reorderChildren=e.reorderChildren),t}applySelectionRandomizationState(e,t){const i=e.sequencingControls;void 0!==t.selectionCountStatus&&(i.selectionCountStatus=t.selectionCountStatus),void 0!==t.reorderChildren&&(i.reorderChildren=t.reorderChildren);const s=t.selectedChildIds?new Set(t.selectedChildIds):null,r=t.hiddenFromChoiceChildIds?new Set(t.hiddenFromChoiceChildIds):null;t.childOrder&&t.childOrder.length>0&&e.setChildOrder(t.childOrder);let n=!1;if(s||r)for(const t of e.children){if(s){const e=s.has(t.id);t.isAvailable=e,r||(t.isHiddenFromChoice=!e),n=!0}r&&(t.isHiddenFromChoice=r.has(t.id),n=!0)}(n||s||void 0!==t.selectionCountStatus||void 0!==t.reorderChildren||t.childOrder&&t.childOrder.length>0)&&e.setProcessedChildren(e.children.filter(e=>e.isAvailable))}}var Kr=Object.defineProperty,Xr=(e,t,i)=>((e,t,i)=>t in e?Kr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Qr{constructor(e,t){Xr(this,"sequencingCollections"),Xr(this,"sequencingConfigBuilder"),this.sequencingCollections=e||{},this.sequencingConfigBuilder=t||new Jr}setSequencingCollections(e){this.sequencingCollections=e}createActivity(e){const t=new kt(e.id,e.title),i=[],s=this.sequencingConfigBuilder.normalizeCollectionRefs(e.sequencingCollectionRefs);for(const e of s){const s=this.sequencingCollections[e];s&&this.sequencingConfigBuilder.applySequencingCollection(t,s,i)}if(void 0!==e.isVisible&&(t.isVisible=e.isVisible),void 0!==e.isActive&&(t.isActive=e.isActive),void 0!==e.isSuspended&&(t.isSuspended=e.isSuspended),void 0!==e.isCompleted&&(t.isCompleted=e.isCompleted),void 0!==e.isHiddenFromChoice&&(t.isHiddenFromChoice=e.isHiddenFromChoice),void 0!==e.isAvailable&&(t.isAvailable=e.isAvailable),void 0!==e.attemptLimit&&(t.attemptLimit=e.attemptLimit),void 0!==e.attemptAbsoluteDurationLimit&&(t.attemptAbsoluteDurationLimit=e.attemptAbsoluteDurationLimit),void 0!==e.activityAbsoluteDurationLimit&&(t.activityAbsoluteDurationLimit=e.activityAbsoluteDurationLimit),void 0!==e.timeLimitAction&&(t.timeLimitAction=e.timeLimitAction),void 0!==e.timeLimitDuration&&(t.timeLimitDuration=e.timeLimitDuration),void 0!==e.beginTimeLimit&&(t.beginTimeLimit=e.beginTimeLimit),void 0!==e.endTimeLimit&&(t.endTimeLimit=e.endTimeLimit),e.primaryObjective){const i=this.createActivityObjectiveFromSettings(e.primaryObjective,!0);t.primaryObjective=i,null!==i.minNormalizedMeasure&&(t.scaledPassingScore=i.minNormalizedMeasure)}if(e.objectives)for(const i of e.objectives){const e=!0===i.isPrimary,s=this.createActivityObjectiveFromSettings(i,e);e?t.primaryObjective=s:t.addObjective(s)}if(e.sequencingControls&&this.sequencingConfigBuilder.applySequencingControlsSettings(t.sequencingControls,e.sequencingControls),e.sequencingRules&&this.sequencingConfigBuilder.applySequencingRulesSettings(t.sequencingRules,e.sequencingRules),e.rollupRules&&this.sequencingConfigBuilder.applyRollupRulesSettings(t.rollupRules,e.rollupRules),e.rollupConsiderations&&t.applyRollupConsiderations(e.rollupConsiderations),e.hideLmsUi){const i=this.sequencingConfigBuilder.mergeHideLmsUi(t.hideLmsUi,e.hideLmsUi);i.length>0&&(t.hideLmsUi=i)}if(e.auxiliaryResources){const i=this.sequencingConfigBuilder.sanitizeAuxiliaryResources(e.auxiliaryResources);i.length>0&&(t.auxiliaryResources=this.sequencingConfigBuilder.mergeAuxiliaryResources(t.auxiliaryResources,i))}if(e.children)for(const i of e.children){const e=this.createActivity(i);t.addChild(e)}e.selectionRandomizationState&&i.push(this.sequencingConfigBuilder.cloneSelectionRandomizationState(e.selectionRandomizationState));for(const e of i)this.sequencingConfigBuilder.applySelectionRandomizationState(t,e);return t}extractActivityIds(e){const t=[e.id];for(const i of e.children)t.push(...this.extractActivityIds(i));return t}createActivityObjectiveFromSettings(e,t){const i=(e.mapInfo||[]).map(e=>({targetObjectiveID:e.targetObjectiveID,readSatisfiedStatus:e.readSatisfiedStatus??!1,readNormalizedMeasure:e.readNormalizedMeasure??!1,writeSatisfiedStatus:e.writeSatisfiedStatus??!1,writeNormalizedMeasure:e.writeNormalizedMeasure??!1,readCompletionStatus:e.readCompletionStatus??!1,writeCompletionStatus:e.writeCompletionStatus??!1,readProgressMeasure:e.readProgressMeasure??!1,writeProgressMeasure:e.writeProgressMeasure??!1,readRawScore:e.readRawScore??!1,writeRawScore:e.writeRawScore??!1,readMinScore:e.readMinScore??!1,writeMinScore:e.writeMinScore??!1,readMaxScore:e.readMaxScore??!1,writeMaxScore:e.writeMaxScore??!1,updateAttemptData:e.updateAttemptData??!1}));return new Ft(e.objectiveID,{description:e.description??null,satisfiedByMeasure:e.satisfiedByMeasure??!1,minNormalizedMeasure:e.minNormalizedMeasure??null,mapInfo:i,isPrimary:t})}}var Zr=Object.defineProperty,en=(e,t,i)=>((e,t,i)=>t in e?Zr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class tn{constructor(e){en(this,"_globalObjectives",[]),en(this,"context"),this.context=e}get globalObjectives(){return this._globalObjectives}set globalObjectives(objectives){this._globalObjectives=objectives}updateSequencingService(e){this.context.sequencingService=e}syncGlobalObjectiveIdsFromSequencing(){if(!this.context.sequencingService)return;const e=this.context.sequencingService.getOverallSequencingProcess();if(!e)return;const t=e.getGlobalObjectiveMap();if(!t||0===t.size)return;const i=Array.from(t.keys()),s=this.context.getSettings(),r=Array.from(new Set((s.globalObjectiveIds||[]).concat(i)));s.globalObjectiveIds=r}restoreGlobalObjectivesToCMI(){if(0!==this._globalObjectives.length)for(let e=0;this._globalObjectives.length>e;e++){const t=this._globalObjectives[e];if(!t||!t.id)continue;if(this.context.cmi.objectives.findObjectiveById(t.id))continue;const i=this.context.cmi.objectives.childArray.length;this.context.commonSetCMIValue("RestoreGlobalObjective",!0,`cmi.objectives.${i}.id`,t.id),t.success_status&&"unknown"!==t.success_status&&this.context.commonSetCMIValue("RestoreGlobalObjective",!0,`cmi.objectives.${i}.success_status`,t.success_status),t.completion_status&&"unknown"!==t.completion_status&&this.context.commonSetCMIValue("RestoreGlobalObjective",!0,`cmi.objectives.${i}.completion_status`,t.completion_status),""!==t.score.scaled&&null!==t.score.scaled&&this.context.commonSetCMIValue("RestoreGlobalObjective",!0,`cmi.objectives.${i}.score.scaled`,t.score.scaled),""!==t.score.raw&&null!==t.score.raw&&this.context.commonSetCMIValue("RestoreGlobalObjective",!0,`cmi.objectives.${i}.score.raw`,t.score.raw),""!==t.score.min&&null!==t.score.min&&this.context.commonSetCMIValue("RestoreGlobalObjective",!0,`cmi.objectives.${i}.score.min`,t.score.min),""!==t.score.max&&null!==t.score.max&&this.context.commonSetCMIValue("RestoreGlobalObjective",!0,`cmi.objectives.${i}.score.max`,t.score.max),""!==t.progress_measure&&null!==t.progress_measure&&this.context.commonSetCMIValue("RestoreGlobalObjective",!0,`cmi.objectives.${i}.progress_measure`,t.progress_measure),""!==t.description&&this.context.commonSetCMIValue("RestoreGlobalObjective",!0,`cmi.objectives.${i}.description`,t.description)}}updateGlobalObjectiveFromCMI(e,t){if(!e||!this.context.sequencingService)return;const i=this.context.sequencingService.getOverallSequencingProcess();if(!i)return;if(!i.getGlobalObjectiveMap().has(e)){const s=this.buildObjectiveMapEntryFromCMI(t);return void i.updateGlobalObjective(e,s)}const s={};t.success_status&&t.success_status!==F&&(s.satisfiedStatus=t.success_status===P,s.satisfiedStatusKnown=!0);const r=this.parseObjectiveNumber(t.score?.scaled);null!==r&&(s.normalizedMeasure=r,s.normalizedMeasureKnown=!0);const n=this.parseObjectiveNumber(t.progress_measure);null!==n&&(s.progressMeasure=n,s.progressMeasureKnown=!0),t.completion_status&&t.completion_status!==H&&(s.completionStatus=t.completion_status,s.completionStatusKnown=!0),0!==Object.keys(s).length&&i.updateGlobalObjective(e,s)}buildObjectiveMapEntryFromCMI(e){const entry={id:e.id,satisfiedStatusKnown:!1,normalizedMeasureKnown:!1,progressMeasureKnown:!1,completionStatusKnown:!1,readSatisfiedStatus:!0,writeSatisfiedStatus:!0,readNormalizedMeasure:!0,writeNormalizedMeasure:!0,readCompletionStatus:!0,writeCompletionStatus:!0,readProgressMeasure:!0,writeProgressMeasure:!0};e.success_status&&e.success_status!==F&&(entry.satisfiedStatus=e.success_status===P,entry.satisfiedStatusKnown=!0);const t=this.parseObjectiveNumber(e.score?.scaled);null!==t&&(entry.normalizedMeasure=t,entry.normalizedMeasureKnown=!0);const i=this.parseObjectiveNumber(e.progress_measure);return null!==i&&(entry.progressMeasure=i,entry.progressMeasureKnown=!0),e.completion_status&&e.completion_status!==H&&(entry.completionStatus=e.completion_status,entry.completionStatusKnown=!0),entry}buildCMIObjectivesFromMap(e){const objectives=[];if(!e||"object"!=typeof e)return objectives;for(const[t,entry]of Object.entries(e)){if(!entry||"object"!=typeof entry)continue;const e=new rr;e.id=entry.id??t,!0===entry.satisfiedStatusKnown&&(e.success_status=entry.satisfiedStatus?P:z);const i=this.parseObjectiveNumber(entry.normalizedMeasure);!0===entry.normalizedMeasureKnown&&null!==i&&(e.score.scaled=i+"");const s=this.parseObjectiveNumber(entry.progressMeasure);!0===entry.progressMeasureKnown&&null!==s&&(e.progress_measure=s+""),!0===entry.completionStatusKnown&&"string"==typeof entry.completionStatus&&(e.completion_status=entry.completionStatus),objectives.push(e)}return objectives}buildCMIObjectiveFromJSON(e){const t=new rr;if(!e||"object"!=typeof e)return t;"string"==typeof e.id&&(t.id=e.id),"string"==typeof e.success_status&&(t.success_status=e.success_status),"string"==typeof e.completion_status&&(t.completion_status=e.completion_status),"string"==typeof e.progress_measure&&""!==e.progress_measure&&(t.progress_measure=e.progress_measure),"string"==typeof e.description&&(t.description=e.description);const score=e.score;return score&&"object"==typeof score&&("string"==typeof score.scaled&&""!==score.scaled?t.score.scaled=score.scaled:"number"==typeof score.scaled&&Number.isFinite(score.scaled)&&(t.score.scaled=score.scaled+""),"string"==typeof score.raw&&""!==score.raw?t.score.raw=score.raw:"number"==typeof score.raw&&Number.isFinite(score.raw)&&(t.score.raw=score.raw+""),"string"==typeof score.min&&""!==score.min?t.score.min=score.min:"number"==typeof score.min&&Number.isFinite(score.min)&&(t.score.min=score.min+""),"string"==typeof score.max&&""!==score.max?t.score.max=score.max:"number"==typeof score.max&&Number.isFinite(score.max)&&(t.score.max=score.max+"")),t}captureGlobalObjectiveSnapshot(e){const t={},i=e??this.context.sequencingService?.getOverallSequencingProcess()??null;if(i){const e=i.getGlobalObjectiveMapSnapshot();for(const[id,i]of Object.entries(e))t[id]={...i}}for(const e of this._globalObjectives)e.id&&!t[e.id]&&(t[e.id]=this.buildObjectiveMapEntryFromCMI(e));return t}parseObjectiveNumber(e){if(null==e)return null;if("number"==typeof e&&Number.isFinite(e))return e;const t=parseFloat(e+"");return Number.isFinite(t)?t:null}syncCmiToSequencingActivity(e,t,i){if(!this.context.sequencing)return;const s=this.context.sequencing.getCurrentActivity();if(!s||!s.primaryObjective)return;const r=s.primaryObjective;t!==F&&(r.satisfiedStatus=t===P,r.satisfiedStatusKnown=!0,r.measureStatus=!0,s.objectiveMeasureStatus=!0,s.objectiveSatisfiedStatus=t===P,s.objectiveSatisfiedStatusKnown=!0),e!==H&&(r.completionStatus=e),void 0!==i?.scaled&&null!==i.scaled&&(r.normalizedMeasure=i.scaled,r.measureStatus=!0)}findOrCreateGlobalObjective(e){let t=this._globalObjectives.findIndex(t=>t.id===e);if(-1===t){t=this._globalObjectives.length;const i=new rr;i.id=e,this._globalObjectives.push(i)}return{index:t,objective:this._globalObjectives[t]}}}var sn=Object.defineProperty,rn=(e,t,i)=>((e,t,i)=>t in e?sn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class nn{constructor(e,t){rn(this,"context"),rn(this,"globalObjectiveManager"),this.context=e,this.globalObjectiveManager=t}async saveSequencingState(e){const t=this.context.getSettings();if(!t.sequencingStatePersistence)return this.context.apiLog("saveSequencingState","No persistence configuration provided",B.WARN),!1;try{const i=this.serializeSequencingState(),s={learnerId:this.context.learnerId||"unknown",courseId:t.courseId||"unknown",attemptNumber:1,lastUpdated:(new Date).toISOString(),version:t.sequencingStatePersistence.stateVersion||"1.0",...e},r=t.sequencingStatePersistence;let n=i;if(!1!==r.compress&&(n=this.compressStateData(i)),r.maxStateSize&&n.length>r.maxStateSize)throw Error(`State size ${n.length} exceeds limit ${r.maxStateSize}`);const o=await r.persistence.saveState(n,s);return r.debugPersistence&&this.context.apiLog("saveSequencingState",`State save ${o?"succeeded":"failed"}: size=${n.length}`,o?B.INFO:B.WARN),o}catch(e){return this.context.apiLog("saveSequencingState","Error saving sequencing state: "+(e instanceof Error?e.message:e+""),B.ERROR),!1}}async loadSequencingState(e){const t=this.context.getSettings();if(!t.sequencingStatePersistence)return this.context.apiLog("loadSequencingState","No persistence configuration provided",B.WARN),!1;try{const i={learnerId:this.context.learnerId||"unknown",courseId:t.courseId||"unknown",attemptNumber:1,version:t.sequencingStatePersistence.stateVersion||"1.0",...e},s=t.sequencingStatePersistence,r=await s.persistence.loadState(i);if(!r)return s.debugPersistence&&this.context.apiLog("loadSequencingState","No sequencing state found to load",B.INFO),!1;let n=r;!1!==s.compress&&(n=this.decompressStateData(r));const o=this.deserializeSequencingState(n);return s.debugPersistence&&this.context.apiLog("loadSequencingState",`State load ${o?"succeeded":"failed"}: size=${r.length}`,o?B.INFO:B.WARN),o}catch(e){return this.context.apiLog("loadSequencingState","Error loading sequencing state: "+(e instanceof Error?e.message:e+""),B.ERROR),!1}}serializeSequencingState(){const e=this.context.getSettings(),t={version:e.sequencingStatePersistence?.stateVersion||"1.0",timestamp:(new Date).toISOString(),sequencing:null,currentActivityId:null,globalObjectives:this.globalObjectiveManager.globalObjectives.map(e=>e.toJSON()),globalObjectiveMap:{},adlNavState:{request:this.context.adl.nav.request,request_valid:this.context.adl.nav.request_valid},contentDelivered:!1};if(this.context.sequencingService){const e=this.context.sequencingService.getOverallSequencingProcess();if(e){const i=e.getSequencingState();t.sequencing=i,t.contentDelivered=e.hasContentBeenDelivered(),t.globalObjectiveMap=this.globalObjectiveManager.captureGlobalObjectiveSnapshot(e)}const i=this.context.sequencing.getCurrentActivity();i&&(t.currentActivityId=i.id)}return t.globalObjectiveMap&&0!==Object.keys(t.globalObjectiveMap).length||(t.globalObjectiveMap=this.globalObjectiveManager.captureGlobalObjectiveSnapshot()),JSON.stringify(t)}deserializeSequencingState(e){try{const t=JSON.parse(e),i=this.context.getSettings(),s=i.sequencingStatePersistence?.stateVersion||"1.0";if(t.version!==s&&this.context.apiLog("deserializeSequencingState",`State version mismatch: ${t.version} vs expected ${s}`,B.WARN),t.globalObjectiveMap&&t.sequencing&&!t.sequencing.globalObjectiveMap&&(t.sequencing.globalObjectiveMap=t.globalObjectiveMap),t.sequencing&&this.context.sequencingService){const e=this.context.sequencingService.getOverallSequencingProcess();e&&(e.restoreSequencingState(t.sequencing),t.contentDelivered&&e.setContentDelivered(!0))}const r=new Map;if(Array.isArray(t.globalObjectives))for(const e of t.globalObjectives){const t=this.globalObjectiveManager.buildCMIObjectiveFromJSON(e);t.id&&r.set(t.id,t)}if(t.globalObjectiveMap&&"object"==typeof t.globalObjectiveMap){const e=this.globalObjectiveManager.buildCMIObjectivesFromMap(t.globalObjectiveMap);for(const t of e)t.id&&(r.has(t.id)||r.set(t.id,t))}return r.size>0&&(this.globalObjectiveManager.globalObjectives=Array.from(r.values()),this.globalObjectiveManager.globalObjectives.forEach(e=>{e.id&&this.globalObjectiveManager.updateGlobalObjectiveFromCMI(e.id,e)})),t.adlNavState&&(this.context.adl.nav.request=t.adlNavState.request||"_none_",this.context.adl.nav.request_valid=t.adlNavState.request_valid||{}),!0}catch(e){return this.context.apiLog("deserializeSequencingState","Error deserializing sequencing state: "+(e instanceof Error?e.message:e+""),B.ERROR),!1}}compressStateData(e){return"undefined"!=typeof btoa?btoa(encodeURIComponent(e)):e}decompressStateData(e){if("undefined"!=typeof atob)try{return decodeURIComponent(atob(e))}catch{return e}return e}}var an=Object.defineProperty,cn=(e,t,i)=>((e,t,i)=>t in e?an(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class ln{constructor(e,t){cn(this,"context"),cn(this,"globalObjectiveManager"),this.context=e,this.globalObjectiveManager=t||null}setGlobalObjectiveManager(e){this.globalObjectiveManager=e}updateSequencingService(e){this.context.sequencingService=e}renderCommitCMI(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=this.context.renderCMIToJSONObject();e||t?i.cmi.total_time=this.context.cmi.getCurrentTotalTime():delete i.cmi.total_time;const result=[],s=o(i);switch(this.context.getSettings().dataCommitFormat){case"flattened":return o(i);case"params":for(const e in s)({}).hasOwnProperty.call(s,e)&&result.push(`${e}=${s[e]}`);return result;default:return i}}renderCommitObject(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=this.renderCommitCMI(e,t),s=e||t?this.context.cmi.getCurrentTotalTime():"",n=r(s,ne);let o=H,a=F;this.context.cmi.completion_status&&("completed"===this.context.cmi.completion_status?o=k:"incomplete"===this.context.cmi.completion_status&&(o=V)),this.context.cmi.success_status&&("passed"===this.context.cmi.success_status?a=P:"failed"===this.context.cmi.success_status&&(a=z));const c=this.context.cmi?.score?.getScoreObject()||{},l={completionStatus:o,successStatus:a,totalTimeSeconds:n,runtimeData:i};c&&(l.score=c);const u=this.context.getSettings();if(u.autoPopulateCommitMetadata){u.courseId&&(l.courseId=u.courseId),u.scoId&&(l.scoId=u.scoId),this.context.cmi.learner_id&&(l.learnerId=this.context.cmi.learner_id),this.context.cmi.learner_name&&(l.learnerName=this.context.cmi.learner_name);const e=this.context.sequencingService?.getSequencingState();e?.currentActivity?.id&&(l.activityId=e.currentActivity.id)}return this.globalObjectiveManager&&this.globalObjectiveManager.syncCmiToSequencingActivity(o,a,c),l}determineEntryValue(e,t){const i=e?.trim();return""===e||null==e||""===i?"ab-initio":"suspend"===e?"resume":"logout"===e||"normal"===e?"":"time-out"===e&&t?"resume":""}}var un=Object.defineProperty,hn=(e,t,i)=>((e,t,i)=>t in e?un(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);"undefined"!=typeof window&&(window.Scorm12API=Scorm12API,window.Scorm2004API=class extends rs{constructor(e,t){const i=e?{...e}:void 0;i&&void 0===i.mastery_override&&(i.mastery_override=!1),super(j,i,t),hn(this,"_version","1.0"),hn(this,"_sequencing"),hn(this,"_sequencingService",null),hn(this,"_extractedScoItemIds",[]),hn(this,"_sequencingCollections",{}),hn(this,"_responseValidator"),hn(this,"_cmiHandler"),hn(this,"_activityTreeBuilder"),hn(this,"_sequencingConfigBuilder"),hn(this,"_globalObjectiveManager"),hn(this,"_statePersistence",null),hn(this,"_dataSerializer"),hn(this,"cmi"),hn(this,"adl"),hn(this,"Initialize"),hn(this,"Terminate"),hn(this,"GetValue"),hn(this,"SetValue"),hn(this,"Commit"),hn(this,"GetLastError"),hn(this,"GetErrorString"),hn(this,"GetDiagnostic"),this.cmi=new Rr,this.adl=new Ir,this._sequencing=new Br,this.adl.sequencing=this._sequencing,this._sequencingConfigBuilder=new Jr,this._activityTreeBuilder=new Qr({},this._sequencingConfigBuilder),this._responseValidator=new $r({throwSCORMError:(e,t,i)=>this.throwSCORMError(e,t,i),getLastErrorCode:()=>this.lastErrorCode,checkCorrectResponseValue:(e,t,i,s)=>this._responseValidator.checkCorrectResponseValue(e,t,i,s)}),this._cmiHandler=new Wr({cmi:this.cmi,isInitialized:()=>this.isInitialized(),throwSCORMError:(e,t,i)=>this.throwSCORMError(e,t,i),getLastErrorCode:()=>this.lastErrorCode},this._responseValidator);const s={getSettings:()=>this.settings,cmi:this.cmi,sequencing:this._sequencing,sequencingService:this._sequencingService,commonSetCMIValue:this._commonSetCMIValue.bind(this)};this._globalObjectiveManager=new tn(s);const r={getSettings:()=>this.settings,cmi:this.cmi,sequencingService:this._sequencingService,renderCMIToJSONObject:this.renderCMIToJSONObject.bind(this)};this._dataSerializer=new ln(r,this._globalObjectiveManager),i?.sequencing&&this.configureSequencing(i.sequencing),this.initializeSequencingService(i),this.Initialize=this.lmsInitialize,this.Terminate=this.lmsFinish,this.GetValue=this.lmsGetValue,this.SetValue=this.lmsSetValue,this.Commit=this.lmsCommit,this.GetLastError=this.lmsGetLastError,this.GetErrorString=this.lmsGetErrorString,this.GetDiagnostic=this.lmsGetDiagnostic}reset(e){this.commonReset(e),this.cmi?.reset(),this.adl?.reset()}get version(){return this._version}get globalObjectives(){return this._globalObjectiveManager.globalObjectives}set _globalObjectives(objectives){this._globalObjectiveManager.globalObjectives=objectives}get _globalObjectives(){return this._globalObjectiveManager.globalObjectives}compressStateData(e){return this._statePersistence?this._statePersistence.compressStateData(e):"undefined"!=typeof btoa?btoa(encodeURIComponent(e)):e}decompressStateData(e){if(this._statePersistence)return this._statePersistence.decompressStateData(e);if("undefined"!=typeof atob)try{return decodeURIComponent(atob(e))}catch{return e}return e}lmsInitialize(){if(""!==(arguments.length>0&&void 0!==arguments[0]?arguments[0]:""))return this.throwSCORMError("api",this._error_codes.ARGUMENT_ERROR),S;this.cmi.initialize();const result=this.initialize("Initialize","LMS was already initialized!","LMS is already finished!");return result===f&&this._sequencingService&&this._sequencingService.initialize(),result===f&&this._globalObjectiveManager.restoreGlobalObjectivesToCMI(),result===f&&this.settings.sequencingStatePersistence&&this.loadSequencingState().catch(()=>{this.apiLog("lmsInitialize","Failed to auto-load sequencing state",B.WARN)}),result}lmsFinish(){if(""!==(arguments.length>0&&void 0!==arguments[0]?arguments[0]:""))return this.throwSCORMError("api",this._error_codes.ARGUMENT_ERROR),S;const e=this.adl?.nav?.request||"_none_",t=this.cmi?.getExitValueInternal()||"",i=this.isTerminated(),s=this._sequencingService?.isDeliveryInProgress()??!1,result=this.terminate("Terminate",!0);if(result===f&&!i&&!s){let i=!1,s=null,r=e,n="";const o=RegExp(he);if("_none_"!==e){const t=e.match(o);t&&(t.groups?.choice_target?(n=t.groups?.choice_target,r="choice"):t.groups?.jump_target&&(n=t.groups?.jump_target,r="jump"))}if(this._sequencingService)try{let e,o=null;"_none_"!==r?(o=r,e=n||void 0):this._sequencing.getCurrentActivity()&&(o="exit"),o&&(i=this._sequencingService.processNavigationRequest(o,e,t),s=o)}catch(e){this.apiLog("lmsFinish","Sequencing navigation failed, falling back to event-based navigation: "+e,B.WARN),i=!1}if(!i)if("_none_"!==e){const e={continue:"SequenceNext",previous:"SequencePrevious",choice:"SequenceChoice",jump:"SequenceJump",exit:"SequenceExit",exitAll:"SequenceExitAll",abandon:"SequenceAbandon",abandonAll:"SequenceAbandonAll"}[r];e&&this.processListeners(e,"adl.nav.request",n)}else this.settings.autoProgress&&this.processListeners("SequenceNext",void 0,"next");this._sequencingService&&s&&["exitAll","abandonAll","suspendAll"].includes(s)&&this._sequencingService.terminate(),this.adl.nav.request="_none_"}return result}lmsGetValue(e){if(this.isTerminated())return this.lastErrorCode=j.RETRIEVE_AFTER_TERM+"","";if(!this.isInitialized())return this.lastErrorCode=j.RETRIEVE_BEFORE_INIT+"","";if("adl.nav.request"===e)return this.throwSCORMError(e,j.WRITE_ONLY_ELEMENT,"adl.nav.request is write-only"),"";const t="^adl\\.nav\\.request_valid\\.(choice|jump)\\.{target=([a-zA-Z0-9-_]+)}$";if(c(e,t)){const i=e.match(t);if(i){const request=i[1],e=i[2]?.replace(/{target=/g,"").replace(/}/g,"")||"";if("choice"===request||"jump"===request){const t=this._sequencing?.overallSequencingProcess;return this.settings.scoItemIdValidator?this.settings.scoItemIdValidator(e)+"":t?.predictChoiceEnabled&&"choice"===request?t.predictChoiceEnabled(e)?"true":"false":t?.predictJumpEnabled&&"jump"===request?t.predictJumpEnabled(e)?"true":"false":this._extractedScoItemIds.length>0?this._extractedScoItemIds.includes(e)+"":this.settings?.scoItemIds?.includes(e)+""}}}return"cmi.completion_status"===e?this._cmiHandler.evaluateCompletionStatus():"cmi.success_status"===e?this._cmiHandler.evaluateSuccessStatus():this.getValue("GetValue",!0,e)}lmsSetValue(e,t){const i=this._peekCMIValue(e),result=this.setValue("SetValue","Commit",!0,e,t);if(result===f&&this._sequencingService)try{this._sequencingService.triggerRollupOnCMIChange(e,i,t)}catch(t){console.warn(`Sequencing rollup failed for ${e}: ${t}`)}return result===f&&"setValue"===this.settings.sequencingStatePersistence?.autoSaveOn&&["cmi.completion_status","cmi.success_status","cmi.score.scaled","cmi.objectives","adl.nav.request"].some(t=>e.startsWith(t))&&this.saveSequencingState().catch(()=>{this.apiLog("lmsSetValue","Failed to auto-save sequencing state",B.WARN)}),result}lmsCommit(){if(""!==(arguments.length>0&&void 0!==arguments[0]?arguments[0]:""))return this.throwSCORMError("api",this._error_codes.ARGUMENT_ERROR),S;if(this.settings.throttleCommits)return this.scheduleCommit(500,"Commit"),f;{const result=this.commit("Commit",!0);return result===f&&"commit"===this.settings.sequencingStatePersistence?.autoSaveOn&&this.saveSequencingState().catch(()=>{this.apiLog("lmsCommit","Failed to auto-save sequencing state",B.WARN)}),result}}lmsGetLastError(){return this.getLastError("GetLastError")}lmsGetErrorString(e){return this.getErrorString("GetErrorString",e)}lmsGetDiagnostic(e){return this.getDiagnostic("GetDiagnostic",e)}setCMIValue(e,t){if(c(e,"cmi\\.objectives\\.\\d+")){const i=+e.split(".")[2],s="cmi.objectives."+i;let r;if(c(e,"cmi\\.objectives\\.\\d+\\.id"))r=t;else{const e=this.cmi.objectives.findObjectiveByIndex(i);r=e?e.id:void 0}if(r&&this.settings.globalObjectiveIds?.includes(r)){const{index:i}=this._globalObjectiveManager.findOrCreateGlobalObjective(r),n=e.replace(s,"_globalObjectives."+i);this._commonSetCMIValue("SetGlobalObjectiveValue",!0,n,t);const o=this._globalObjectiveManager.globalObjectives[i];r&&o&&this._globalObjectiveManager.updateGlobalObjectiveFromCMI(r,o)}}return this._commonSetCMIValue("SetValue",!0,e,t)}getChildElement(e,t,i){return this._cmiHandler.getChildElement(e,t,i)}validateCorrectResponse(e,t){const i=e.split("."),s=this.cmi.interactions.childArray[+i[2]];s?this._responseValidator.validateCorrectResponse(e,s,t):this.throwSCORMError(e,j.DEPENDENCY_NOT_ESTABLISHED,e)}_peekCMIValue(e){if(!e||"string"!=typeof e)return null;const t=e.split(".");let i=this;for(let e=0;t.length>e;e++){const s=t[e];if(null==i)return null;try{i=i[s]}catch{return null}if(i instanceof x){const s=e+1;if(s>=t.length)return i;const r=+t[s];if(!Number.isNaN(r)&&Number.isInteger(r)&&r>=0){if(r>=i.childArray.length)return null;i=i.childArray[r],e++}}}return i??null}getCMIValue(e){return this._commonGetCMIValue("GetValue",!0,e)}getLmsErrorMessageDetails(e,t){let i="",s="";const r=A.error_descriptions[e+=""];return r&&(i=r.basicMessage,s=r.detailMessage),t?s:i}replaceWithAnotherScormAPI(e){this.cmi=e.cmi,this.adl=e.adl}renderCommitCMI(e){return this._dataSerializer.renderCommitCMI(e,arguments.length>1&&void 0!==arguments[1]&&arguments[1])}renderCommitObject(e){return this._dataSerializer.renderCommitObject(e,arguments.length>1&&void 0!==arguments[1]&&arguments[1])}storeData(e){e&&"normal"===this.cmi.mode&&"credit"===this.cmi.credit&&(this.cmi.completion_threshold&&this.cmi.progress_measure&&(this.cmi.completion_status=this.cmi.completion_threshold>this.cmi.progress_measure?"incomplete":"completed"),this.cmi.scaled_passing_score&&this.cmi.score.scaled&&(this.cmi.success_status=this.cmi.scaled_passing_score>this.cmi.score.scaled?"failed":"passed"));let t=!1;this.adl.nav.request!==this.startingData?.adl?.nav?.request&&"_none_"!==this.adl.nav.request&&(t=!0);const i=this.getCommitObject(e),s=this.cmi?.score?.getScoreObject()||{};let r=H;"completed"===this.cmi.completion_status?r=k:"incomplete"===this.cmi.completion_status&&(r=V);let n=F;if("passed"===this.cmi.success_status?n=P:"failed"===this.cmi.success_status&&(n=z),this._globalObjectiveManager.syncCmiToSequencingActivity(r,n,s),"string"==typeof this.settings.lmsCommitUrl){const result=this.processHttpRequest(this.settings.lmsCommitUrl,i,e);if(t&&void 0!==result.navRequest&&""!==result.navRequest&&"string"==typeof result.navRequest){const e=function(e){const t=new Set(["start","resumeAll","continue","previous","choice","jump","exit","exitAll","abandon","abandonAll","suspendAll","_none_"]),i=e.trim();if(!i)return{command:"_none_",targetActivityId:null,valid:!1,error:"Empty navigation request"};if(t.has(i))return{command:i,targetActivityId:null,valid:!0};const s=i.indexOf(".");if(s>0){const e=i.substring(0,s),t=i.substring(s+1);if(("choice"===e||"jump"===e)&&t)return/^[a-zA-Z0-9._-]+$/.test(t)?{command:e,targetActivityId:t,valid:!0}:{command:"_none_",targetActivityId:null,valid:!1,error:"Invalid target activity ID: contains disallowed characters"}}return{command:"_none_",targetActivityId:null,valid:!1,error:`Unrecognized navigation command: "${i}"`}}(result.navRequest);if(e.valid){const t={start:"SequenceStart",resumeAll:"SequenceResumeAll",continue:"SequenceNext",previous:"SequencePrevious",choice:"SequenceChoice",jump:"SequenceJump",exit:"SequenceExit",exitAll:"SequenceExitAll",abandon:"SequenceAbandon",abandonAll:"SequenceAbandonAll",suspendAll:"SequenceSuspendAll"}[e.command];t&&this.processListeners(t,"adl.nav.request",e.targetActivityId)}else this.apiLog("storeData","Invalid navigation request from LMS: "+e.error,B.WARN)}else result?.navRequest&&!t&&"object"==typeof result.navRequest&&Object.hasOwnProperty.call(result.navRequest,"name")&&result.navRequest.name&&this.processListeners(result.navRequest.name,result.navRequest.data);return result}return{result:f,errorCode:0}}configureSequencing(e){this._sequencingCollections=this._sequencingConfigBuilder.sanitizeSequencingCollections(e.collections),this._activityTreeBuilder.setSequencingCollections(this._sequencingCollections),e.activityTree&&this.configureActivityTree(e.activityTree),e.sequencingRules&&this.configureSequencingRules(e.sequencingRules),e.sequencingControls&&this.configureSequencingControls(e.sequencingControls),e.rollupRules&&this.configureRollupRules(e.rollupRules),this._sequencing.hideLmsUi=e.hideLmsUi?this._sequencingConfigBuilder.sanitizeHideLmsUi(e.hideLmsUi):[],this._sequencing.auxiliaryResources=e.auxiliaryResources?this._sequencingConfigBuilder.sanitizeAuxiliaryResources(e.auxiliaryResources):[]}configureActivityTree(e){const t=this._activityTreeBuilder.createActivity(e);this._sequencing.activityTree.root=t,this._extractedScoItemIds=this._activityTreeBuilder.extractActivityIds(t)}configureSequencingRules(e){this._sequencingConfigBuilder.applySequencingRulesSettings(this._sequencing.sequencingRules,e)}configureSequencingControls(e){this._sequencingConfigBuilder.applySequencingControlsSettings(this._sequencing.sequencingControls,e)}configureRollupRules(e){this._sequencingConfigBuilder.applyRollupRulesSettings(this._sequencing.rollupRules,e)}initializeSequencingService(e){try{if(this._sequencingService=new Wi(this._sequencing,this.cmi,this.adl,this.eventService||this,this.loggingService,{autoRollupOnCMIChange:e?.sequencing?.autoRollupOnCMIChange??!0,autoProgressOnCompletion:e?.sequencing?.autoProgressOnCompletion??!1,validateNavigationRequests:e?.sequencing?.validateNavigationRequests??!0,enableEventSystem:e?.sequencing?.enableEventSystem??!0,logLevel:e?.sequencing?.logLevel??"info"}),e?.sequencing?.eventListeners&&this._sequencingService.setEventListeners(e.sequencing.eventListeners),this._globalObjectiveManager.updateSequencingService(this._sequencingService),this._dataSerializer.updateSequencingService(this._sequencingService),e?.sequencingStatePersistence){const e={getSettings:()=>this.settings,apiLog:this.apiLog.bind(this),adl:this.adl,sequencing:this._sequencing,sequencingService:this._sequencingService,learnerId:this.cmi.learner_id};this._statePersistence=new nn(e,this._globalObjectiveManager)}this._globalObjectiveManager.syncGlobalObjectiveIdsFromSequencing()}catch(e){console.warn("Failed to initialize sequencing service:",e),this._sequencingService=null}}getSequencingService(){return this._sequencingService}setSequencingEventListeners(e){this._sequencingService&&this._sequencingService.setEventListeners(e)}updateSequencingConfiguration(e){this._sequencingService&&this._sequencingService.updateConfiguration(e)}getSequencingState(){return this._sequencingService?this._sequencingService.getSequencingState():{isInitialized:!1,isActive:!1,currentActivity:null,rootActivity:this._sequencing.getRootActivity(),lastSequencingResult:null}}processNavigationRequest(request,e){return!!this._sequencingService&&this._sequencingService.processNavigationRequest(request,e)}resetSequencingState(){this._sequencing?.reset(),this._sequencingService?.setEventListeners({})}getActivityTrackingData(e){if(!this._sequencing?.activityTree)return null;const t=this._sequencing.activityTree.getActivity(e);return t?{completionStatus:t.completionStatus||"unknown",successStatus:t.successStatus||"unknown",progressMeasure:t.progressMeasure??null,score:t.objectiveMeasureStatus?t.objectiveNormalizedMeasure:null}:null}async saveSequencingState(e){if(this._statePersistence)return this._statePersistence.saveSequencingState(e);if(!this.settings.sequencingStatePersistence)return this.apiLog("saveSequencingState","No persistence configuration provided",B.WARN),!1;const t={getSettings:()=>this.settings,apiLog:this.apiLog.bind(this),adl:this.adl,sequencing:this._sequencing,sequencingService:this._sequencingService,learnerId:this.cmi.learner_id};return new nn(t,this._globalObjectiveManager).saveSequencingState(e)}async loadSequencingState(e){if(this._statePersistence)return this._statePersistence.loadSequencingState(e);if(!this.settings.sequencingStatePersistence)return this.apiLog("loadSequencingState","No persistence configuration provided",B.WARN),!1;const t={getSettings:()=>this.settings,apiLog:this.apiLog.bind(this),adl:this.adl,sequencing:this._sequencing,sequencingService:this._sequencingService,learnerId:this.cmi.learner_id};return new nn(t,this._globalObjectiveManager).loadSequencingState(e)}serializeSequencingState(){if(this._statePersistence)return this._statePersistence.serializeSequencingState();const e={getSettings:()=>this.settings,apiLog:this.apiLog.bind(this),adl:this.adl,sequencing:this._sequencing,sequencingService:this._sequencingService,learnerId:this.cmi.learner_id};return new nn(e,this._globalObjectiveManager).serializeSequencingState()}deserializeSequencingState(e){if(this._statePersistence)return this._statePersistence.deserializeSequencingState(e);const t={getSettings:()=>this.settings,apiLog:this.apiLog.bind(this),adl:this.adl,sequencing:this._sequencing,sequencingService:this._sequencingService,learnerId:this.cmi.learner_id};return new nn(t,this._globalObjectiveManager).deserializeSequencingState(e)}determineEntryValue(e,t){return this._dataSerializer.determineEntryValue(e,t)}})}();
1
+ !function(){"use strict";const e={D:86400,H:3600,M:60,S:1},t=e=>{if(!e||0>=e)return"00:00:00";const t=Math.floor(e/3600),i=new Date(1e3*e),s=i.getUTCMinutes(),r=i.getSeconds(),n=e%1;let o="";return a(n)>0&&(o=a(n)>2?n.toFixed(2):n+"",o="."+o.split(".")[1]),(t+":"+s+":"+r).replace(/\b\d\b/g,"0$&")+o},i=t=>{if(!t||0>=t)return"PT0S";let i="P",s=t;return Object.entries(e).forEach(e=>{let[t,r]=e,n=Math.floor(s/r);s%=r,a(s)>2&&(s=+(+s).toFixed(2)),"S"===t&&s>0&&(n+=s),n&&((i.indexOf("D")>0||["H","M","S"].includes(t))&&-1===i.indexOf("T")&&(i+="T"),i+=`${n}${t}`)}),i},s=l((e,t)=>{if("number"!=typeof e&&"boolean"!=typeof e||(e+=""),"string"==typeof t&&(t=RegExp(t)),!e)return 0;if(!e.match(t))return/^\d+(?:\.\d+)?$/.test(e)?+e:0;const i=e.split(":");return 3600*+i[0]+60*+i[1]+ +i[2]},(e,t)=>`${"string"==typeof e?e:(e??"")+""}:${"string"==typeof t?t:t?.toString()??""}`),r=l((e,t)=>{if("string"==typeof t&&(t=RegExp(t)),!e||!e?.match?.(t))return 0;const[,i,s,r,n,o,a,c]=RegExp(t).exec?.(e)??[];let result=0;return result+=+c||0,result+=60*+a||0,result+=3600*+o||0,result+=86400*+n||0,result+=604800*+r||0,result+=2592e3*+s||0,result+=31536e3*+i||0,result},(e,t)=>`${e??""}:${"string"==typeof t?t:t?.toString()??""}`),n=l((e,t)=>("string"==typeof t&&(t=RegExp(t)),!(!e||!e?.match?.(t))));function o(e){const result={};return function e(t,i){if(Object(t)!==t)result[i]=t;else if(Array.isArray(t))t.forEach((t,s)=>{e(t,`${i}[${s}]`)}),0===t.length&&(result[i]=[]);else{const s=Object.keys(t).filter(e=>({}.hasOwnProperty.call(t,e))),r=0===s.length;s.forEach(s=>{e(t[s],i?`${i}.${s}`:s)}),r&&i&&(result[i]={})}}(e,""),result}function a(e){if(Math.floor(e)===e||0>(e+"")?.indexOf?.("."))return 0;const t=(""+e).split(".")?.[1];return t?.length??0}function c(e,t){return"string"==typeof e&&RegExp(t).test(e)}function l(e,t){const i=new Map;return function(){for(var s=arguments.length,r=Array(s),n=0;s>n;n++)r[n]=arguments[n];const o=t?t(...r):JSON.stringify(r);return i.has(o)?i.get(o):(()=>{const result=e(...r);return i.set(o,result),result})()}}var u=Object.defineProperty,h=(e,t,i)=>((e,t,i)=>t in e?u(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class d{constructor(e){h(this,"jsonString",!1),h(this,"_cmi_element"),h(this,"_initialized",!1),this._cmi_element=e}get initialized(){return this._initialized}initialize(){this._initialized=!0}}class m extends d{constructor(){super(...arguments),h(this,"_start_time")}get start_time(){return this._start_time}setStartTime(){if(void 0!==this._start_time)throw Error("Start time has already been set.");this._start_time=(new Date).getTime()}}var p=Object.defineProperty,_=(e,t,i)=>((e,t,i)=>t in e?p(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class v extends Error{constructor(e,t){super(`${e} : ${""+t}`),_(this,"_errorCode"),this._errorCode=t,Object.setPrototypeOf(this,v.prototype)}get errorCode(){return this._errorCode}}class g extends v{constructor(e,t,i,s){super(e,t),_(this,"_errorMessage"),_(this,"_detailedMessage",""),this.message=`${e} : ${i}`,this._errorMessage=i,s&&(this._detailedMessage=s),Object.setPrototypeOf(this,g.prototype)}get errorMessage(){return this._errorMessage}get detailedMessage(){return this._detailedMessage}}const f="true",S="false",b="raw,min,max",y="id,score,status",C={0:{basicMessage:"No Error",detailMessage:"No error occurred, the previous API call was successful."},101:{basicMessage:"General Exception",detailMessage:"No specific error code exists to describe the error."},201:{basicMessage:"Invalid argument error",detailMessage:"Indicates that an argument represents an invalid data model element or is otherwise incorrect."},202:{basicMessage:"Element cannot have children",detailMessage:'Indicates that LMSGetValue was called with a data model element name that ends in "_children" for a data model element that does not support the "_children" suffix.'},203:{basicMessage:"Element not an array - cannot have count",detailMessage:'Indicates that LMSGetValue was called with a data model element name that ends in "_count" for a data model element that does not support the "_count" suffix.'},301:{basicMessage:"Not initialized",detailMessage:"Indicates that an API call was made before the call to lmsInitialize."},401:{basicMessage:"Not implemented error",detailMessage:"The data model element indicated in a call to LMSGetValue or LMSSetValue is valid, but was not implemented by this LMS. SCORM 1.2 defines a set of data model elements as being optional for an LMS to implement."},402:{basicMessage:"Invalid set value, element is a keyword",detailMessage:'Indicates that LMSSetValue was called on a data model element that represents a keyword (elements that end in "_children" and "_count").'},403:{basicMessage:"Element is read only",detailMessage:"LMSSetValue was called with a data model element that can only be read."},404:{basicMessage:"Element is write only",detailMessage:"LMSGetValue was called on a data model element that can only be written to."},405:{basicMessage:"Incorrect Data Type",detailMessage:"LMSSetValue was called with a value that is not consistent with the data format of the supplied data model element."},407:{basicMessage:"Element Value Out Of Range",detailMessage:"The numeric value supplied to a LMSSetValue call is outside of the numeric range allowed for the supplied data model element."},408:{basicMessage:"Data Model Dependency Not Established",detailMessage:"Some data model elements cannot be set until another data model element was set. This error condition indicates that the prerequisite element was not set before the dependent element."}},A={cmi_children:"_version,comments_from_learner,comments_from_lms,completion_status,completion_threshold,credit,entry,exit,interactions,launch_data,learner_id,learner_name,learner_preference,location,max_time_allowed,mode,objectives,progress_measure,scaled_passing_score,score,session_time,success_status,suspend_data,time_limit_action,total_time",comments_children:"comment,timestamp,location",score_children:"max,raw,scaled,min",objectives_children:"progress_measure,completion_status,success_status,description,score,id",correct_responses_children:"pattern",student_preference_children:"audio_level,audio_captioning,delivery_speed,language",interactions_children:"id,type,objectives,timestamp,correct_responses,weighting,learner_response,result,latency,description",adl_data_children:"id,store",error_descriptions:{0:{basicMessage:"No Error",detailMessage:"No error occurred, the previous API call was successful."},101:{basicMessage:"General Exception",detailMessage:"No specific error code exists to describe the error."},102:{basicMessage:"General Initialization Failure",detailMessage:"Call to Initialize failed for an unknown reason."},103:{basicMessage:"Already Initialized",detailMessage:"Call to Initialize failed because Initialize was already called."},104:{basicMessage:"Content Instance Terminated",detailMessage:"Call to Initialize failed because Terminate was already called."},111:{basicMessage:"General Termination Failure",detailMessage:"Call to Terminate failed for an unknown reason."},112:{basicMessage:"Termination Before Initialization",detailMessage:"Call to Terminate failed because it was made before the call to Initialize."},113:{basicMessage:"Termination After Termination",detailMessage:"Call to Terminate failed because Terminate was already called."},122:{basicMessage:"Retrieve Data Before Initialization",detailMessage:"Call to GetValue failed because it was made before the call to Initialize."},123:{basicMessage:"Retrieve Data After Termination",detailMessage:"Call to GetValue failed because it was made after the call to Terminate."},132:{basicMessage:"Store Data Before Initialization",detailMessage:"Call to SetValue failed because it was made before the call to Initialize."},133:{basicMessage:"Store Data After Termination",detailMessage:"Call to SetValue failed because it was made after the call to Terminate."},142:{basicMessage:"Commit Before Initialization",detailMessage:"Call to Commit failed because it was made before the call to Initialize."},143:{basicMessage:"Commit After Termination",detailMessage:"Call to Commit failed because it was made after the call to Terminate."},201:{basicMessage:"General Argument Error",detailMessage:"An invalid argument was passed to an API method (usually indicates that Initialize, Commit or Terminate did not receive the expected empty string argument."},301:{basicMessage:"General Get Failure",detailMessage:"Indicates a failed GetValue call where no other specific error code is applicable. Use GetDiagnostic for more information."},351:{basicMessage:"General Set Failure",detailMessage:"Indicates a failed SetValue call where no other specific error code is applicable. Use GetDiagnostic for more information."},391:{basicMessage:"General Commit Failure",detailMessage:"Indicates a failed Commit call where no other specific error code is applicable. Use GetDiagnostic for more information."},401:{basicMessage:"Undefined Data Model Element",detailMessage:"The data model element name passed to GetValue or SetValue is not a valid SCORM data model element."},402:{basicMessage:"Unimplemented Data Model Element",detailMessage:"The data model element indicated in a call to GetValue or SetValue is valid, but was not implemented by this LMS. In SCORM 2004, this error would indicate an LMS that is not fully SCORM conformant."},403:{basicMessage:"Data Model Element Value Not Initialized",detailMessage:"Attempt to read a data model element that has not been initialized by the LMS or through a SetValue call. This error condition is often reached during normal execution of a SCO."},404:{basicMessage:"Data Model Element Is Read Only",detailMessage:"SetValue was called with a data model element that can only be read."},405:{basicMessage:"Data Model Element Is Write Only",detailMessage:"GetValue was called on a data model element that can only be written to."},406:{basicMessage:"Data Model Element Type Mismatch",detailMessage:"SetValue was called with a value that is not consistent with the data format of the supplied data model element."},407:{basicMessage:"Data Model Element Value Out Of Range",detailMessage:"The numeric value supplied to a SetValue call is outside of the numeric range allowed for the supplied data model element."},408:{basicMessage:"Data Model Dependency Not Established",detailMessage:"Some data model elements cannot be set until another data model element was set. This error condition indicates that the prerequisite element was not set before the dependent element."}}},E=C;class w extends g{constructor(e,t){!{}.hasOwnProperty.call(E,t+"")?super(e,101,E[101]?.basicMessage,E[101]?.detailMessage):super(e,t,E[t+""]?.basicMessage||"Unknown error",E[t+""]?.detailMessage),Object.setPrototypeOf(this,w.prototype)}}const M=A.error_descriptions;class O extends g{constructor(e,t){!{}.hasOwnProperty.call(M,t+"")?super(e,101,M[101]?.basicMessage,M[101]?.detailMessage):super(e,t,M[t+""]?.basicMessage||"Unknown error",M[t+""]?.detailMessage),Object.setPrototypeOf(this,O.prototype)}}const R={GENERAL:101,INITIALIZATION_FAILED:101,INITIALIZED:101,TERMINATED:101,TERMINATION_FAILURE:101,TERMINATION_BEFORE_INIT:101,MULTIPLE_TERMINATION:101,RETRIEVE_BEFORE_INIT:101,RETRIEVE_AFTER_TERM:101,STORE_BEFORE_INIT:101,STORE_AFTER_TERM:101,COMMIT_BEFORE_INIT:101,COMMIT_AFTER_TERM:101,ARGUMENT_ERROR:101,CHILDREN_ERROR:101,COUNT_ERROR:101,GENERAL_GET_FAILURE:101,GENERAL_SET_FAILURE:101,GENERAL_COMMIT_FAILURE:101,UNDEFINED_DATA_MODEL:101,UNIMPLEMENTED_ELEMENT:101,VALUE_NOT_INITIALIZED:101,INVALID_SET_VALUE:101,READ_ONLY_ELEMENT:101,WRITE_ONLY_ELEMENT:101,TYPE_MISMATCH:101,VALUE_OUT_OF_RANGE:101,DEPENDENCY_NOT_ESTABLISHED:101},T={...R,RETRIEVE_BEFORE_INIT:301,STORE_BEFORE_INIT:301,COMMIT_BEFORE_INIT:301,ARGUMENT_ERROR:201,CHILDREN_ERROR:202,COUNT_ERROR:203,UNDEFINED_DATA_MODEL:401,UNIMPLEMENTED_ELEMENT:401,VALUE_NOT_INITIALIZED:301,INVALID_SET_VALUE:402,READ_ONLY_ELEMENT:403,WRITE_ONLY_ELEMENT:404,TYPE_MISMATCH:405,VALUE_OUT_OF_RANGE:407,DEPENDENCY_NOT_ESTABLISHED:408},j={...R,INITIALIZATION_FAILED:102,INITIALIZED:103,TERMINATED:104,TERMINATION_FAILURE:111,TERMINATION_BEFORE_INIT:112,MULTIPLE_TERMINATION:113,MULTIPLE_TERMINATIONS:113,RETRIEVE_BEFORE_INIT:122,RETRIEVE_AFTER_TERM:123,STORE_BEFORE_INIT:132,STORE_AFTER_TERM:133,COMMIT_BEFORE_INIT:142,COMMIT_AFTER_TERM:143,ARGUMENT_ERROR:201,GENERAL_GET_FAILURE:301,GENERAL_SET_FAILURE:351,GENERAL_COMMIT_FAILURE:391,UNDEFINED_DATA_MODEL:401,UNIMPLEMENTED_ELEMENT:402,VALUE_NOT_INITIALIZED:403,READ_ONLY_ELEMENT:404,WRITE_ONLY_ELEMENT:405,TYPE_MISMATCH:406,VALUE_OUT_OF_RANGE:407,DEPENDENCY_NOT_ESTABLISHED:408};var I=Object.defineProperty,N=(e,t,i)=>((e,t,i)=>t in e?I(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class x extends d{constructor(e){super(e.CMIElement),N(this,"_errorCode"),N(this,"_errorClass"),N(this,"__children"),N(this,"childArray"),this.__children=e.children,this._errorCode=e.errorCode??T.GENERAL,this._errorClass=e.errorClass||v,this.childArray=[]}reset(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this._initialized=!1,e)this.childArray=[];else for(let e=0;this.childArray.length>e;e++)this.childArray[e]?.reset()}get _children(){return this.__children}set _children(_children){throw new this._errorClass(this._cmi_element+"._children",this._errorCode)}get _count(){return this.childArray.length}set _count(_count){throw new this._errorClass(this._cmi_element+"._count",this._errorCode)}toJSON(){this.jsonString=!0;const result={};for(let e=0;this.childArray.length>e;e++)result[e+""]=this.childArray[e];return this.jsonString=!1,result}}const q="unknown",D="true",L="false",P="passed",z="failed",F="unknown",k="completed",V="incomplete",H="unknown",B={_:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,NONE:5},U={autocommit:!1,autocommitSeconds:10,throttleCommits:!1,useAsynchronousCommits:!1,sendFullCommit:!0,lmsCommitUrl:!1,dataCommitFormat:"json",commitRequestDataType:"application/json;charset=UTF-8",autoProgress:!1,logLevel:B.ERROR,selfReportSessionTime:!1,alwaysSendTotalTime:!1,renderCommonCommitFields:!1,autoCompleteLessonStatus:!1,strict_errors:!0,xhrHeaders:{},xhrWithCredentials:!1,fetchMode:"cors",asyncModeBeaconBehavior:"never",responseHandler:async function(e){if(void 0!==e){let t=null;try{if("function"==typeof e.json)t=await e.json();else if("function"==typeof e.text){const i=await e.text();i&&(t=JSON.parse(i))}}catch(e){}return null!==t&&{}.hasOwnProperty.call(t,"result")?{result:t.result,errorCode:"number"==typeof t.errorCode?t.errorCode:!0===t.result||t.result===f?0:101}:200===e.status?{result:f,errorCode:0}:{result:S,errorCode:101}}return{result:S,errorCode:101}},xhrResponseHandler:function(e){if(void 0!==e){let t=null;if(200>e.status||e.status>299)return{result:S,errorCode:101};try{t=JSON.parse(e.responseText)}catch(e){}return null!==t&&{}.hasOwnProperty.call(t,"result")?{result:t.result,errorCode:"number"==typeof t.errorCode?t.errorCode:!0===t.result||t.result===f?0:101}:{result:f,errorCode:0}}return{result:S,errorCode:101}},requestHandler:function(e){return e},onLogMessage:$,mastery_override:!1,score_overrides_status:!1,completion_status_on_failed:"completed",scoItemIds:[],scoItemIdValidator:!1,globalObjectiveIds:[],enableOfflineSupport:!1,courseId:"",syncOnInitialize:!0,syncOnTerminate:!0,maxSyncAttempts:5,scoId:"",autoPopulateCommitMetadata:!1,httpService:null,globalStudentPreferences:!1};function $(e,t){switch(e){case"4":case 4:case"ERROR":case B.ERROR:console.error(t);break;case"3":case 3:case"WARN":case B.WARN:console.warn(t);break;case"2":case 2:case"INFO":case B.INFO:console.info(t);break;case"1":case 1:case"DEBUG":case B.DEBUG:console.debug?console.debug(t):console.log(t)}}const G="^[\\s\\S]{0,255}$",Y="^([0-9]+):([0-9]{2}):([0-9]{2})(\\.\\d{1,2})?$",W="^-?([0-9]+)$",J="^-?([0-9]{0,10})(\\.[0-9]*)?$",K="^[\\u0021-\\u007E\\s]{0,255}$",X="^.*$",Q="^(passed|completed|failed|incomplete|browsed|not attempted)$",Z="0#100",ee="^[\\u0000-\\uFFFF]{0,4000}$",te="^[\\u0000-\\uFFFF]{0,64000}$",ie="^({lang=([a-zA-Z]{1,8}|i|x)(-[a-zA-Z0-9-]{2,8})?})?((?!{.*$).{0,250}$)?$",se="^({lang=([a-zA-Z]{1,8}|i|x)(-[a-zA-Z0-9-]{2,8})?})?((?!{.*$).{0,4000}$)?$",re="^(19[7-9][0-9]|[2-9][0-9]{3})((-(0[1-9]|1[0-2]))((-(0[1-9]|[1-2][0-9]|3[0-1]))(T([0-1][0-9]|2[0-3])((:[0-5][0-9])((:[0-5][0-9])((\\.[0-9]{1,6})((Z|([+|-]([0-1][0-9]|2[0-3])))(:[0-5][0-9])?)?)?)?)?)?)?)?$",ne="^P(?:([.,\\d]+)Y)?(?:([.,\\d]+)M)?(?:([.,\\d]+)W)?(?:([.,\\d]+)D)?(?:T?(?:([.,\\d]+)H)?(?:([.,\\d]+)M)?(?:(\\d+(?:\\.\\d{1,2})?)S)?)?$",oe="^-?([0-9]{1,10})(\\.[0-9]{1,18})?$",ae="^(?=.*\\w)[\\w\\-\\(\\)\\+\\.\\:\\=\\@\\;\\$\\_\\!\\*\\'\\%\\/\\#]{1,250}$",ce="^(?:(?!urn:)\\S{1,4000}|urn:[A-Za-z0-9-]{1,31}:\\S{1,4000}|.{1,4000})$",le="^(completed|incomplete|not attempted|unknown)$",ue="^(passed|failed|unknown)$",he="^(_?(start|resumeAll|previous|continue|exit|exitAll|abandon|abandonAll|suspendAll|retry|retryAll)|_none_|(\\{target=(?<choice_target>\\S{0,}[a-zA-Z0-9-_]+)})?choice|(\\{target=(?<jump_target>\\S{0,}[a-zA-Z0-9-_]+)})?jump)$",de="^(unknown|true|false)$",me="^{target=\\S{0,}[a-zA-Z0-9-_]+}$",pe={"true-false":{format:"^true$|^false$",max:1,delimiter:"",unique:!1},choice:{format:ce,max:36,delimiter:"[,]",unique:!0},"fill-in":{format:ie,max:10,delimiter:"[,]",unique:!1},"long-fill-in":{format:se,max:1,delimiter:"",unique:!1},matching:{format:ae,format2:ae,max:36,delimiter:"[,]",delimiter2:"[.]",unique:!1},performance:{format:"^$|"+ae,format2:oe+"|^$|"+ae,max:250,delimiter:"[,]",delimiter2:"[.]",unique:!1},sequencing:{format:ae,max:36,delimiter:"[,]",unique:!1},likert:{format:ae,max:1,delimiter:"",unique:!1},numeric:{format:oe,max:1,delimiter:"",unique:!1},other:{format:ee,max:1,delimiter:"",unique:!1}},_e={"true-false":{max:1,delimiter:"",unique:!1,duplicate:!1,format:"^true$|^false$",limit:1},choice:{max:36,delimiter:"[,]",unique:!0,duplicate:!1,format:ce},"fill-in":{max:10,delimiter:"[,]",unique:!1,duplicate:!1,format:"^(({lang=([a-zA-Z]{1,8}|i|x)?(-[a-zA-Z0-9-]{2,8})?})?(.{0,250})?)?$"},"long-fill-in":{max:1,delimiter:"",unique:!1,duplicate:!0,format:se},matching:{max:36,delimiter:"[,]",delimiter2:"[.]",unique:!1,duplicate:!1,format:ae,format2:ae},performance:{max:250,delimiter:"[,]",delimiter2:"[.]",unique:!1,duplicate:!1,format:ae,format2:`^(${ae})$|^(?:\\d+(?:\\.\\d+)?(?::\\d+(?:\\.\\d+)?)?)$`},sequencing:{max:36,delimiter:"[,]",unique:!1,duplicate:!1,format:ae},likert:{max:1,delimiter:"",unique:!1,duplicate:!1,format:ae,limit:1},numeric:{max:2,delimiter:"[:]",unique:!1,duplicate:!1,format:oe,limit:1},other:{max:1,delimiter:"",unique:!1,duplicate:!1,format:ee,limit:1}},ve=["aa","ab","ae","af","ak","am","an","ar","as","av","ay","az","ba","be","bg","bh","bi","bm","bn","bo","br","bs","ca","ce","ch","co","cr","cs","cu","cv","cy","da","de","dv","dz","ee","el","en","eo","es","et","eu","fa","ff","fi","fj","fo","fr","fy","ga","gd","gl","gn","gu","gv","ha","he","hi","ho","hr","ht","hu","hy","hz","ia","id","ie","ig","ii","ik","io","is","it","iu","ja","jv","ka","kg","ki","kj","kk","kl","km","kn","ko","kr","ks","ku","kv","kw","ky","la","lb","lg","li","ln","lo","lt","lu","lv","mg","mh","mi","mk","ml","mn","mo","mr","ms","mt","my","na","nb","nd","ne","ng","nl","nn","no","nr","nv","ny","oc","oj","om","or","os","pa","pi","pl","ps","pt","qu","rm","rn","ro","ru","rw","sa","sc","sd","se","sg","sh","si","sk","sl","sm","sn","so","sq","sr","ss","st","su","sv","sw","ta","te","tg","th","ti","tk","tl","tn","to","tr","ts","tt","tw","ty","ug","uk","ur","uz","ve","vi","vo","wa","wo","xh","yi","yo","za","zh","zu","aar","abk","ave","afr","aka","amh","arg","ara","asm","ava","aym","aze","bak","bel","bul","bih","bis","bam","ben","tib","bod","bre","bos","cat","che","cha","cos","cre","cze","ces","chu","chv","wel","cym","dan","ger","deu","div","dzo","ewe","gre","ell","eng","epo","spa","est","baq","eus","per","fas","ful","fin","fij","fao","fre","fra","fry","gle","gla","glg","grn","guj","glv","hau","heb","hin","hmo","hrv","hat","hun","arm","hye","her","ina","ind","ile","ibo","iii","ipk","ido","ice","isl","ita","iku","jpn","jav","geo","kat","kon","kik","kua","kaz","kal","khm","kan","kor","kau","kas","kur","kom","cor","kir","lat","ltz","lug","lim","lin","lao","lit","lub","lav","mlg","mah","mao","mri","mac","mkd","mal","mon","mol","mar","may","msa","mlt","bur","mya","nau","nob","nde","nep","ndo","dut","nld","nno","nor","nbl","nav","nya","oci","oji","orm","ori","oss","pan","pli","pol","pus","por","que","roh","run","rum","ron","rus","kin","san","srd","snd","sme","sag","slo","sin","slk","slv","smo","sna","som","alb","sqi","srp","ssw","sot","sun","swe","swa","tam","tel","tgk","tha","tir","tuk","tgl","tsn","ton","tur","tso","tat","twi","tah","uig","ukr","urd","uzb","ven","vie","vol","wln","wol","xho","yid","yor","zha","chi","zho","zul"];var ge=Object.defineProperty,fe=(e,t,i)=>((e,t,i)=>t in e?ge(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Se{constructor(e,t,i){fe(this,"_API"),fe(this,"_cancelled",!1),fe(this,"_timeout"),fe(this,"_callback"),this._API=e,this._timeout=setTimeout(this.wrapper.bind(this),t),this._callback=i}cancel(){this._cancelled=!0,this._timeout&&clearTimeout(this._timeout)}wrapper(){this._cancelled||this._API.isInitialized()&&(async()=>{await this._API.commit(this._callback)})()}}const be=["continue","previous","exit","exitAll","abandon","abandonAll","suspendAll"];var ye=Object.defineProperty,Ce=(e,t,i)=>((e,t,i)=>t in e?ye(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i),Ae=(e=>(e.NOT="not",e.AND="and",e.OR="or",e))(Ae||{}),Ee=(e=>(e.SKIP="skip",e.DISABLED="disabled",e.HIDE_FROM_CHOICE="hiddenFromChoice",e.STOP_FORWARD_TRAVERSAL="stopForwardTraversal",e.EXIT_PARENT="exitParent",e.EXIT_ALL="exitAll",e.RETRY="retry",e.RETRY_ALL="retryAll",e.CONTINUE="continue",e.PREVIOUS="previous",e.EXIT="exit",e))(Ee||{});const we=class e extends d{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"always",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new Map;super("ruleCondition"),Ce(this,"_condition","always"),Ce(this,"_operator",null),Ce(this,"_parameters",new Map),Ce(this,"_referencedObjective",null),this._condition=e,this._operator=t,this._parameters=i}static setNowProvider(t){"function"==typeof t&&(e._now=t)}static setElapsedSecondsHook(t){e._getElapsedSecondsHook=t}reset(){this._initialized=!1,this._condition="always",this._operator=null,this._parameters=new Map}get condition(){return this._condition}set condition(e){this._condition=e}get operator(){return this._operator}set operator(e){this._operator=e}get parameters(){return this._parameters}set parameters(e){this._parameters=e}get referencedObjective(){return this._referencedObjective}set referencedObjective(e){this._referencedObjective=e}resolveReferencedObjective(e){return this._referencedObjective?e.primaryObjective?.id===this._referencedObjective?e.primaryObjective:(e.objectives||[]).find(e=>e.id===this._referencedObjective)||null:null}evaluate(e){let result;const t=this.resolveReferencedObjective(e);switch(this._condition){case"satisfied":case"objectiveSatisfied":result=t?!0===t.satisfiedStatus:e.successStatus===P||!0===e.objectiveSatisfiedStatus;break;case"objectiveStatusKnown":case"objectiveMeasureKnown":result=t?!!t.measureStatus:!!e.objectiveMeasureStatus;break;case"objectiveMeasureGreaterThan":{const i=this._parameters.get("threshold")||0;result=!!(t?t.measureStatus:e.objectiveMeasureStatus)&&(t?t.normalizedMeasure:e.objectiveNormalizedMeasure)>i;break}case"objectiveMeasureLessThan":{const i=this._parameters.get("threshold")||0;result=!!(t?t.measureStatus:e.objectiveMeasureStatus)&&i>(t?t.normalizedMeasure:e.objectiveNormalizedMeasure);break}case"completed":case"activityCompleted":result=t?t.completionStatus===k:e.isCompleted;break;case"progressKnown":case"activityProgressKnown":result=t?t.completionStatus!==H:"unknown"!==e.completionStatus;break;case"attempted":result=e.attemptCount>0;break;case"attemptLimitExceeded":result=e.hasAttemptLimitExceeded();break;case"timeLimitExceeded":result=this.evaluateTimeLimitExceeded(e);break;case"outsideAvailableTimeRange":result=this.evaluateOutsideAvailableTimeRange(e);break;case"always":result=!0;break;default:result=!1}return"not"===this._operator&&(result=!result),result}evaluateTimeLimitExceeded(t){let i=t.timeLimitDuration;if(!i&&t.attemptAbsoluteDurationLimit&&(i=t.attemptAbsoluteDurationLimit),!i)return!1;const s=r(i,ne);if(0>=s)return!1;let n=0;if(e._getElapsedSecondsHook)try{const i=e._getElapsedSecondsHook(t);"number"!=typeof i||Number.isNaN(i)||0>i||(n=i)}catch{n=0}if(0===n&&t.attemptExperiencedDuration){const e=r(t.attemptExperiencedDuration,ne);e>0&&(n=e)}if(0===n&&t.attemptAbsoluteStartTime)try{const i=new Date(t.attemptAbsoluteStartTime).getTime(),s=e._now().getTime();Number.isNaN(i)||Number.isNaN(s)||i>s||(n=(s-i)/1e3)}catch{n=0}return n>s}evaluateOutsideAvailableTimeRange(t){const i=t.beginTimeLimit,s=t.endTimeLimit;if(!i&&!s)return!1;const r=e._now();return!(!i||r>=new Date(i))||!(!s||new Date(s)>=r)}parseISO8601Duration(e){return 1e3*r(e,ne)}toJSON(){this.jsonString=!0;const result={condition:this._condition,operator:this._operator,parameters:Object.fromEntries(this._parameters)};return this.jsonString=!1,result}};Ce(we,"_now",()=>new Date),Ce(we,"_getElapsedSecondsHook");let Me=we;class Oe extends d{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"skip",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"and";super("sequencingRule"),Ce(this,"_conditions",[]),Ce(this,"_action","skip"),Ce(this,"_conditionCombination","and"),this._action=e,this._conditionCombination=t}reset(){this._initialized=!1,this._conditions=[],this._action="skip",this._conditionCombination="and"}get conditions(){return this._conditions}addCondition(e){if(!(e instanceof Me))throw new O(this._cmi_element+".conditions",j.TYPE_MISMATCH);this._conditions.includes(e)||this._conditions.push(e)}removeCondition(e){if(!(e instanceof Me))throw new O(this._cmi_element+".conditions",j.TYPE_MISMATCH);const t=this._conditions.indexOf(e);return-1!==t&&(this._conditions.splice(t,1),!0)}get action(){return this._action}set action(e){this._action=e}get conditionCombination(){return this._conditionCombination}set conditionCombination(e){this._conditionCombination=e}evaluate(e){return 0===this._conditions.length||("all"===this._conditionCombination||"and"===this._conditionCombination?this._conditions.every(t=>t.evaluate(e)):("any"===this._conditionCombination||"or"===this._conditionCombination)&&this._conditions.some(t=>t.evaluate(e)))}toJSON(){this.jsonString=!0;const result={conditions:this._conditions,action:this._action,conditionCombination:this._conditionCombination};return this.jsonString=!1,result}}class Re extends d{constructor(){super("sequencingRules"),Ce(this,"_preConditionRules",[]),Ce(this,"_exitConditionRules",[]),Ce(this,"_postConditionRules",[])}reset(){this._initialized=!1,this._preConditionRules=[],this._exitConditionRules=[],this._postConditionRules=[]}get preConditionRules(){return this._preConditionRules}addPreConditionRule(e){if(!(e instanceof Oe))throw new O(this._cmi_element+".preConditionRules",j.TYPE_MISMATCH);this._preConditionRules.push(e)}get exitConditionRules(){return this._exitConditionRules}addExitConditionRule(e){if(!(e instanceof Oe))throw new O(this._cmi_element+".exitConditionRules",j.TYPE_MISMATCH);this._exitConditionRules.push(e)}get postConditionRules(){return this._postConditionRules}addPostConditionRule(e){if(!(e instanceof Oe))throw new O(this._cmi_element+".postConditionRules",j.TYPE_MISMATCH);this._postConditionRules.push(e)}evaluatePreConditionRules(e){for(const t of this._preConditionRules)if(t.evaluate(e))return t.action;return null}evaluateExitConditionRules(e){for(const t of this._exitConditionRules)if(t.evaluate(e))return t.action;return null}evaluatePostConditionRules(e){for(const t of this._postConditionRules)if(t.evaluate(e))return t.action;return null}toJSON(){this.jsonString=!0;const result={preConditionRules:this._preConditionRules,exitConditionRules:this._exitConditionRules,postConditionRules:this._postConditionRules};return this.jsonString=!1,result}}var Te=Object.defineProperty;class je{constructor(e){((e,t,i)=>{t in e?Te(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i})(this,"activityTree"+"",e)}isInTree(e){return this.activityTree.getAllActivities().includes(e)}isAncestorOf(e,t){let i=t;for(;i;){if(i===e)return!0;i=i.parent}return!1}findCommonAncestor(e,t){if(!e||!t)return null;const i=[];let s=e;for(;s;)i.push(s),s=s.parent;for(s=t;s;){if(i.includes(s))return s;s=s.parent}return null}findChildInPath(e,t){let i=t;for(;i&&i.parent;){if(i.parent===e)return i;i=i.parent}return null}isLastInTree(e){if(e.children.length>0)return!1;let t=e;for(;t;){if(this.activityTree.getNextSibling(t))return!1;t=t.parent}return!0}getCurrentInParent(e){if(e.children)for(const t of e.children)if(t.isActive)return t;return null}isMandatory(e){if(e.sequencingRules&&e.sequencingRules.preConditionRules)for(const t of e.sequencingRules.preConditionRules)if("skip"===t.action&&t.conditions&&0===t.conditions.length)return!1;return!0===e.mandatory}isCompleted(e){return"completed"===e.completionStatus||"passed"===e.completionStatus||"passed"===e.successStatus}isAvailableForChoice(e){return e.isVisible&&!e.isHiddenFromChoice&&e.isAvailable&&(!e.sequencingControls||e.sequencingControls.choice)}getAncestors(e){const t=[];let i=e.parent;for(;i;)t.push(i),i=i.parent;return t}getPathToRoot(e){const t=[e];let i=e.parent;for(;i;)t.push(i),i=i.parent;return t}isLeaf(e){return 0===e.children.length}isCluster(e){return e.children.length>0}getDepth(e){let t=0,i=e.parent;for(;i;)t++,i=i.parent;return t}}var Ie=Object.defineProperty,Ne=(e,t,i)=>((e,t,i)=>t in e?Ie(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class xe{constructor(e,t){Ne(this,"activityTree",e),Ne(this,"treeQueries",t)}validateChoice(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!this.treeQueries.isInTree(t))return{valid:!1,exception:"SB.2.9-2"};if(t===this.activityTree.root)return{valid:!1,exception:"SB.2.9-3"};const s=this.validatePathToRoot(t);if(!s.valid)return s;if(i.checkAvailability&&!t.isAvailable)return{valid:!1,exception:"SB.2.9-7"};if(!e)return{valid:!0,exception:null};const r=this.validateChoiceExit(e,t);if(!r.valid)return r;const n=this.validateAncestorConstraints(e,t);return n.valid?{valid:!0,exception:null}:n}validatePathToRoot(e){let t=e;for(;t;){if(t.isHiddenFromChoice)return{valid:!1,exception:"SB.2.9-4"};if(t.parent&&!t.parent.sequencingControls.choice)return{valid:!1,exception:"SB.2.9-5"};if(t.parent&&t.parent.sequencingControls.preventActivation&&0===e.attemptCount&&!e.isActive)return{valid:!1,exception:"SB.2.9-6"};t=t.parent}return{valid:!0,exception:null}}validateChoiceExit(e,t){let i=e.parent;for(;i;){if(i.isActive&&!i.sequencingControls.choiceExit){if(!this.treeQueries.isAncestorOf(i,t))return{valid:!1,exception:"SB.2.9-8"};break}i=i.parent}return{valid:!0,exception:null}}validateAncestorConstraints(e,t){let i=t.parent;for(;i;){const s=this.validateConstraintsAtLevel(i,e,t);if(!s.valid)return s;i=i.parent}return{valid:!0,exception:null}}validateConstraintsAtLevel(e,t,i){const s=this.treeQueries.findChildInPath(e,i),r=this.treeQueries.findChildInPath(e,t);if(!s||!r)return{valid:!0,exception:null};const n=e.children,o=n.indexOf(s),a=n.indexOf(r);if(-1===o||-1===a)return{valid:!0,exception:null};if(e.sequencingControls.forwardOnly&&a>o)return{valid:!1,exception:"SB.2.9-5"};if(o>a)for(let e=a+1;o>e;e++){const t=n[e];if(t&&this.treeQueries.isMandatory(t)&&!this.treeQueries.isCompleted(t))return{valid:!1,exception:"SB.2.9-6"}}if(e.sequencingControls.constrainChoice){if(o>a+1)return{valid:!1,exception:"SB.2.9-7"};if(a>o&&"completed"!==i.completionStatus&&"passed"!==i.completionStatus)return{valid:!1,exception:"SB.2.9-7"}}return e.sequencingControls.preventActivation&&0===i.attemptCount&&!i.isActive?{valid:!1,exception:"SB.2.9-6"}:{valid:!0,exception:null}}checkForwardOnlyViolation(e){let t=e.parent;for(;t;){if(t.sequencingControls.forwardOnly)return{valid:!1,exception:"SB.2.9-5"};t=t.parent}return{valid:!0,exception:null}}isAvailableForChoice(e){return this.treeQueries.isAvailableForChoice(e)}validateFlowConstraints(e,t){const i=[];for(const s of t)this.meetsFlowConstraints(s,e)&&i.push(s);return{valid:i.length>0,validChildren:i}}meetsFlowConstraints(e,t){return!(!e.isAvailable||e.isHiddenFromChoice)&&(!t.sequencingControls.constrainChoice||this.validateConstrainChoiceForFlow(e,t))}validateConstrainChoiceForFlow(e,t){if(!t.sequencingControls||!t.sequencingControls.constrainChoice)return!0;const i=t.children;if(!i||0===i.length)return!0;const s=i.indexOf(e);if(-1===s)return!1;const r=this.treeQueries.getCurrentInParent(t);if(!r)return this.isAvailableForChoice(e);const n=i.indexOf(r);return-1===n||(t.sequencingControls.flow?t.sequencingControls.forwardOnly&&n>s?"completed"===e.completionStatus||"passed"===e.completionStatus:n>s?n>s&&("completed"===e.completionStatus||"passed"===e.completionStatus)&&this.isAvailableForChoice(e):(s===n||s===n+1)&&this.isAvailableForChoice(e):this.isAvailableForChoice(e)&&("completed"===e.completionStatus||"unknown"===e.completionStatus||"incomplete"===e.completionStatus))}validateTraversalConstraints(e){let t=!0,i=!0;return e.parent?.sequencingControls.constrainChoice&&(t=this.evaluateConstrainChoiceForTraversal(e)),e.sequencingControls&&e.sequencingControls.stopForwardTraversal&&(i=!1),e.parent?.sequencingControls.forwardOnly&&(i=this.evaluateForwardOnlyForChoice(e)),{canTraverse:t,canTraverseInto:i}}evaluateConstrainChoiceForTraversal(e){if(!e.parent)return!0;let t=e.parent;for(;t;){if(t.sequencingControls&&t.sequencingControls.constrainChoice){const i=t.children,s=this.treeQueries.findChildInPath(t,e);if(s){const r=i.indexOf(s),n=this.treeQueries.getCurrentInParent(t);if(n){const s=i.indexOf(n);if(-1!==s&&-1!==r){if(r>s)for(let e=s+1;r>e;e++){const t=i[e];if(t&&this.treeQueries.isMandatory(t)&&!this.treeQueries.isCompleted(t))return!1}if(t.sequencingControls.forwardOnly&&s>r&&!this.treeQueries.isCompleted(e))return!1}}}}t=t.parent}return this.isAvailableForChoice(e)}evaluateForwardOnlyForChoice(e){if(!e.parent)return!0;const t=e.parent;if(!t.sequencingControls||!t.sequencingControls.forwardOnly)return!0;const i=t.children;if(!i||0===i.length)return!0;const s=i.indexOf(e);if(-1===s)return!1;const r=this.treeQueries.getCurrentInParent(t);if(!r)return this.isAvailableForChoice(e);const n=i.indexOf(r);return-1===n||(n>s?!("completed"!==e.completionStatus&&"passed"!==e.completionStatus||!e.sequencingControls||!e.sequencingControls.choice):this.isAvailableForChoice(e))}hasTimeBoundaryViolation(e,t){if(e.beginTimeLimit)try{if(new Date(e.beginTimeLimit)>t)return!0}catch{}if(e.endTimeLimit)try{if(t>new Date(e.endTimeLimit))return!0}catch{}return!1}hasAttemptLimitViolation(e){return!(!e.attemptLimit||e.attemptLimit>e.attemptCount)}}var qe=Object.defineProperty,De=(e,t,i)=>((e,t,i)=>t in e?qe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i),Le=(e=>(e.START="start",e.RESUME_ALL="resumeAll",e.CONTINUE="continue",e.PREVIOUS="previous",e.CHOICE="choice",e.JUMP="jump",e.EXIT="exit",e.EXIT_PARENT="exitParent",e.EXIT_ALL="exitAll",e.ABANDON="abandon",e.ABANDON_ALL="abandonAll",e.SUSPEND_ALL="suspendAll",e.RETRY="retry",e.RETRY_ALL="retryAll",e))(Le||{}),Pe=(e=>(e.DELIVER="deliver",e.DO_NOT_DELIVER="doNotDeliver",e))(Pe||{});class ze{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"doNotDeliver",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];De(this,"deliveryRequest"),De(this,"targetActivity"),De(this,"exception"),De(this,"endSequencingSession"),this.deliveryRequest=e,this.targetActivity=t,this.exception=i,this.endSequencingSession=s}}class Fe{constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];De(this,"identifiedActivity"),De(this,"deliverable"),De(this,"exception"),De(this,"endSequencingSession"),this.identifiedActivity=e,this.deliverable=t,this.exception=i,this.endSequencingSession=s}}class ke{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;De(this,"activity"),De(this,"exception"),this.activity=e,this.exception=t}}var Ve=(e=>(e.FORWARD="forward",e.BACKWARD="backward",e))(Ve||{}),He=Object.defineProperty,Be=(e,t,i)=>((e,t,i)=>t in e?He(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Ue{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};Be(this,"now"),Be(this,"getAttemptElapsedSecondsHook"),this.now=e.now||(()=>new Date),this.getAttemptElapsedSecondsHook=e.getAttemptElapsedSecondsHook||null}checkSequencingRules(e,t){for(const i of t)if(this.checkRuleSubprocess(e,i))return i.action;return null}checkRuleSubprocess(e,t){if(0===t.conditions.length)return!0;const i=t.conditionCombination;return"all"===i||i===Ae.AND?t.conditions.every(t=>t.evaluate(e)):("any"===i||i===Ae.OR)&&t.conditions.some(t=>t.evaluate(e))}evaluateExitRules(e){const t=this.checkSequencingRules(e,e.sequencingRules.exitConditionRules);return t===Ee.EXIT||t===Ee.EXIT_PARENT||t===Ee.EXIT_ALL?t:null}evaluatePostConditionAction(e){const t=this.checkSequencingRules(e,e.sequencingRules.postConditionRules);return t&&[Ee.EXIT_PARENT,Ee.EXIT_ALL,Ee.RETRY,Ee.RETRY_ALL,Ee.CONTINUE,Ee.PREVIOUS,Ee.STOP_FORWARD_TRAVERSAL].includes(t)?t:null}evaluatePostConditions(e){const t=this.evaluatePostConditionAction(e);if(!t)return{sequencingRequest:null,terminationRequest:null};switch(t){case Ee.EXIT_PARENT:return{sequencingRequest:null,terminationRequest:Le.EXIT_PARENT};case Ee.EXIT_ALL:return{sequencingRequest:null,terminationRequest:Le.EXIT_ALL};case Ee.RETRY:return{sequencingRequest:Le.RETRY,terminationRequest:null};case Ee.RETRY_ALL:return{sequencingRequest:Le.RETRY,terminationRequest:Le.EXIT_ALL};case Ee.CONTINUE:return{sequencingRequest:Le.CONTINUE,terminationRequest:null};case Ee.PREVIOUS:return{sequencingRequest:Le.PREVIOUS,terminationRequest:null};case Ee.STOP_FORWARD_TRAVERSAL:return e.sequencingControls.stopForwardTraversal=!0,{sequencingRequest:null,terminationRequest:null};default:return{sequencingRequest:null,terminationRequest:null}}}checkLimitConditions(e){if(null!==e.attemptLimit&&e.attemptCount>=e.attemptLimit)return!0;if(null!==e.attemptAbsoluteDurationLimit){const t=this.parseDuration(e.attemptAbsoluteDurationLimit);if(t>0&&this.parseDuration(e.attemptExperiencedDuration)>=t)return!0}if(null!==e.activityAbsoluteDurationLimit){const t=this.parseDuration(e.activityAbsoluteDurationLimit);if(t>0&&this.parseDuration(e.activityExperiencedDuration)>=t)return!0}return!1}parseDuration(e){if(!e||"string"!=typeof e)return 0;const t=e.match(/^P(?:(\d+(?:\.\d+)?)Y)?(?:(\d+(?:\.\d+)?)M)?(?:(\d+(?:\.\d+)?)W)?(?:(\d+(?:\.\d+)?)D)?(?:T(?:(\d+(?:\.\d+)?)H)?(?:(\d+(?:\.\d+)?)M)?(?:(\d+(?:\.\d+)?)S)?)?$/);if(!t||"P"===e||e.endsWith("T"))return 0;let i=0;return i+=315576e5*parseFloat(t[1]||"0"),i+=30.44*24*parseFloat(t[2]||"0")*36e5,i+=6048e5*parseFloat(t[3]||"0"),i+=864e5*parseFloat(t[4]||"0"),i+=36e5*parseFloat(t[5]||"0"),i+=6e4*parseFloat(t[6]||"0"),i+=1e3*parseFloat(t[7]||"0"),i}getElapsedSeconds(e){if(this.getAttemptElapsedSecondsHook)try{return this.getAttemptElapsedSecondsHook(e)||0}catch{return 0}if(e.attemptAbsoluteStartTime){const t=new Date(e.attemptAbsoluteStartTime).getTime(),i=this.now().getTime();if(!Number.isNaN(t)&&i>t)return Math.max(0,(i-t)/1e3)}return 0}isTimeLimitExceeded(e){let t=e.timeLimitDuration;if(!t&&e.attemptAbsoluteDurationLimit&&(t=e.attemptAbsoluteDurationLimit),!t)return!1;const i=r(t,ne);return i>0&&this.getElapsedSeconds(e)>i}isOutsideAvailableTimeRange(e){const t=this.now();if(e.beginTimeLimit)try{const i=new Date(e.beginTimeLimit);if(!Number.isNaN(i.getTime())&&i>t)return!0}catch{}if(e.endTimeLimit)try{const i=new Date(e.endTimeLimit);if(!Number.isNaN(i.getTime())&&t>i)return!0}catch{}return!1}canDeliverActivity(e){if(this.checkLimitConditions(e))return{canDeliver:!1,wasSkipped:!1};const t=this.checkSequencingRules(e,e.sequencingRules.preConditionRules);return{canDeliver:t!==Ee.SKIP&&t!==Ee.DISABLED,wasSkipped:t===Ee.SKIP}}}var $e=Object.defineProperty,Ge=(e,t,i)=>((e,t,i)=>t in e?$e(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i),Ye=(e=>(e.NEVER="never",e.ONCE="once",e.ON_EACH_NEW_ATTEMPT="onEachNewAttempt",e))(Ye||{}),We=(e=>(e.NEVER="never",e.ONCE="once",e.ON_EACH_NEW_ATTEMPT="onEachNewAttempt",e))(We||{});class Je extends d{constructor(){super("sequencingControls"),Ge(this,"_enabled",!0),Ge(this,"_choice",!0),Ge(this,"_choiceExit",!0),Ge(this,"_flow",!0),Ge(this,"_forwardOnly",!1),Ge(this,"_useCurrentAttemptObjectiveInfo",!0),Ge(this,"_useCurrentAttemptProgressInfo",!0),Ge(this,"_preventActivation",!1),Ge(this,"_constrainChoice",!1),Ge(this,"_stopForwardTraversal",!1),Ge(this,"_rollupObjectiveSatisfied",!0),Ge(this,"_rollupProgressCompletion",!0),Ge(this,"_objectiveMeasureWeight",1),Ge(this,"_selectionTiming","never"),Ge(this,"_selectCount",null),Ge(this,"_selectionCountStatus",!1),Ge(this,"_randomizeChildren",!1),Ge(this,"_randomizationTiming","never"),Ge(this,"_reorderChildren",!1),Ge(this,"_completionSetByContent",!1),Ge(this,"_objectiveSetByContent",!1),Ge(this,"_tracked",!0)}reset(){this._initialized=!1,this._enabled=!0,this._choice=!0,this._choiceExit=!0,this._flow=!0,this._forwardOnly=!1,this._useCurrentAttemptObjectiveInfo=!0,this._useCurrentAttemptProgressInfo=!0,this._preventActivation=!1,this._constrainChoice=!1,this._stopForwardTraversal=!1,this._rollupObjectiveSatisfied=!0,this._rollupProgressCompletion=!0,this._objectiveMeasureWeight=1,this._selectionTiming="never",this._selectCount=null,this._selectionCountStatus=!1,this._randomizeChildren=!1,this._randomizationTiming="never",this._reorderChildren=!1,this._completionSetByContent=!1,this._objectiveSetByContent=!1,this._tracked=!0}get enabled(){return this._enabled}set enabled(e){this._enabled=e}get choice(){return this._choice}set choice(e){this._choice=e}get choiceExit(){return this._choiceExit}set choiceExit(e){this._choiceExit=e}get flow(){return this._flow}set flow(e){this._flow=e}get forwardOnly(){return this._forwardOnly}set forwardOnly(e){this._forwardOnly=e}get useCurrentAttemptObjectiveInfo(){return this._useCurrentAttemptObjectiveInfo}set useCurrentAttemptObjectiveInfo(e){this._useCurrentAttemptObjectiveInfo=e}get useCurrentAttemptProgressInfo(){return this._useCurrentAttemptProgressInfo}set useCurrentAttemptProgressInfo(e){this._useCurrentAttemptProgressInfo=e}get preventActivation(){return this._preventActivation}set preventActivation(e){this._preventActivation=e}get constrainChoice(){return this._constrainChoice}set constrainChoice(e){this._constrainChoice=e}get stopForwardTraversal(){return this._stopForwardTraversal}set stopForwardTraversal(e){this._stopForwardTraversal=e}get rollupObjectiveSatisfied(){return this._rollupObjectiveSatisfied}set rollupObjectiveSatisfied(e){this._rollupObjectiveSatisfied=e}get rollupProgressCompletion(){return this._rollupProgressCompletion}set rollupProgressCompletion(e){this._rollupProgressCompletion=e}get objectiveMeasureWeight(){return this._objectiveMeasureWeight}set objectiveMeasureWeight(e){0>e||(this._objectiveMeasureWeight=e)}isChoiceNavigationAllowed(){return this._enabled&&!this._constrainChoice}isFlowNavigationAllowed(){return this._enabled&&this._flow}isForwardNavigationAllowed(){return this._enabled&&this._flow}isBackwardNavigationAllowed(){return this._enabled&&this._flow&&!this._forwardOnly}get selectionTiming(){return this._selectionTiming}set selectionTiming(e){this._selectionTiming=e}get selectCount(){return this._selectCount}set selectCount(e){(null===e||e>0)&&(this._selectCount=e)}get selectionCountStatus(){return this._selectionCountStatus}set selectionCountStatus(e){this._selectionCountStatus=e}get randomizeChildren(){return this._randomizeChildren}set randomizeChildren(e){this._randomizeChildren=e}get randomizationTiming(){return this._randomizationTiming}set randomizationTiming(e){this._randomizationTiming=e}get reorderChildren(){return this._reorderChildren}set reorderChildren(e){this._reorderChildren=e}get completionSetByContent(){return this._completionSetByContent}set completionSetByContent(e){this._completionSetByContent=e}get objectiveSetByContent(){return this._objectiveSetByContent}set objectiveSetByContent(e){this._objectiveSetByContent=e}get tracked(){return this._tracked}set tracked(e){this._tracked=e}toJSON(){this.jsonString=!0;const result={enabled:this._enabled,choice:this._choice,choiceExit:this._choiceExit,flow:this._flow,forwardOnly:this._forwardOnly,useCurrentAttemptObjectiveInfo:this._useCurrentAttemptObjectiveInfo,useCurrentAttemptProgressInfo:this._useCurrentAttemptProgressInfo,preventActivation:this._preventActivation,constrainChoice:this._constrainChoice,stopForwardTraversal:this._stopForwardTraversal,rollupObjectiveSatisfied:this._rollupObjectiveSatisfied,rollupProgressCompletion:this._rollupProgressCompletion,objectiveMeasureWeight:this._objectiveMeasureWeight,selectionTiming:this._selectionTiming,selectCount:this._selectCount,selectionCountStatus:this._selectionCountStatus,randomizeChildren:this._randomizeChildren,randomizationTiming:this._randomizationTiming,reorderChildren:this._reorderChildren,completionSetByContent:this._completionSetByContent,objectiveSetByContent:this._objectiveSetByContent,tracked:this._tracked};return this.jsonString=!1,result}}class Ke{static selectChildrenProcess(e){const t=e.sequencingControls,i=[...e.children];if(t.selectionTiming===Ye.NEVER)return i;if(t.selectionTiming===Ye.ONCE&&t.selectionCountStatus)return i;if(t.selectionTiming!==Ye.ONCE&&!t.selectionCountStatus)return i;const s=t.selectCount;if(null===s||s>=i.length)return t.selectionTiming===Ye.ONCE&&(t.selectionCountStatus=!0),i;const r=[],n=i.map((e,t)=>t);for(let e=0;s>e&&0!==n.length;e++){const e=Math.floor(Math.random()*n.length),t=n[e];void 0!==t&&i[t]&&r.push(i[t]),n.splice(e,1)}t.selectionTiming===Ye.ONCE&&(t.selectionCountStatus=!0);for(const e of i)r.includes(e)||(e.isHiddenFromChoice=!0,e.isAvailable=!1);return r}static randomizeChildrenProcess(e){const t=e.sequencingControls,i=[...e.children];if(t.randomizationTiming===We.NEVER)return i;if(t.randomizationTiming===We.ONCE&&t.reorderChildren)return i;if(!t.randomizeChildren)return i;const s=[...i];for(let e=s.length-1;e>0;e--){const t=Math.floor(Math.random()*(e+1)),i=s[e],r=s[t];i&&r&&(s[e]=r,s[t]=i)}return t.randomizationTiming===We.ONCE&&(t.reorderChildren=!0),e.children.length=0,e.children.push(...s),s}static applySelectionAndRandomization(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=e.sequencingControls;if(!t&&(e.isActive||e.isSuspended))return e.children;let s=!1,r=!1;i.selectionTiming===Ye.ON_EACH_NEW_ATTEMPT?(s=t,t&&(i.selectionCountStatus=!0)):i.selectionTiming===Ye.ONCE&&(s=!i.selectionCountStatus),i.randomizationTiming===We.ON_EACH_NEW_ATTEMPT?(r=t,t&&(i.reorderChildren=!1)):i.randomizationTiming===We.ONCE&&(r=!i.reorderChildren),s&&this.selectChildrenProcess(e),r&&this.randomizeChildrenProcess(e);const n=e.children.filter(e=>e.isAvailable);return e.setProcessedChildren(n),n}static isSelectionNeeded(e){const t=e.sequencingControls;return t.selectionTiming!==Ye.NEVER&&(t.selectionTiming!==Ye.ONCE||!t.selectionCountStatus)&&null!==t.selectCount&&e.children.length>t.selectCount}static isRandomizationNeeded(e){const t=e.sequencingControls;return t.randomizationTiming!==We.NEVER&&(t.randomizationTiming!==We.ONCE||!t.reorderChildren)&&t.randomizeChildren}}var Xe=Object.defineProperty,Qe=(e,t,i)=>((e,t,i)=>t in e?Xe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Ze{constructor(e,t){Qe(this,"activityTree",e),Qe(this,"ruleEngine",t)}flowSubprocess(e,t){let i=e,s=!0,r=!1;for(;i;){const e=this.flowTreeTraversalSubprocess(i,t,s);if(!e.activity){let s=null;return e.exception?s=e.exception:t===Ve.BACKWARD?s="SB.2.1-3":r&&(s="SB.2.1-2"),new Fe(i,!1,s,e.endSequencingSession)}r=e.activity.children.length>0&&0===e.activity.getAvailableChildren().length;const n=this.flowActivityTraversalSubprocess(e.activity,t===Ve.FORWARD,!0,t);if(n)return new Fe(n,!0,null,!1);i=e.activity,s=!1}return new Fe(null,!1,null,!1)}flowTreeTraversalSubprocess(e,t){return t===Ve.FORWARD?this.traverseForward(e,arguments.length>2&&void 0!==arguments[2]&&arguments[2]):this.traverseBackward(e)}traverseForward(e,t){if(t&&this.isActivityLastOverall(e))return this.activityTree.root&&this.terminateDescendentAttempts(this.activityTree.root),{activity:null,endSequencingSession:!0};if(!t){this.ensureSelectionAndRandomization(e);const t=e.getAvailableChildren();if(t.length>0)return{activity:t[0]||null,endSequencingSession:!1}}let i=e;for(;i;){const e=this.activityTree.getNextSibling(i);if(e)return{activity:e,endSequencingSession:!1};i=i.parent}return this.activityTree.root&&this.terminateDescendentAttempts(this.activityTree.root),{activity:null,endSequencingSession:!0}}traverseBackward(e){if(e.parent&&e.parent.sequencingControls.forwardOnly)return{activity:null,endSequencingSession:!1,exception:"SB.2.1-4"};const t=this.activityTree.getPreviousSibling(e);if(t)return{activity:this.getLastDescendant(t),endSequencingSession:!1};let i=e,s=0;for(;i&&i.parent;){if(++s>1e4)throw Error("Infinite loop detected in backward traversal");const e=this.activityTree.getPreviousSibling(i.parent);if(e)return{activity:this.getLastDescendant(e),endSequencingSession:!1};i=i.parent}return{activity:null,endSequencingSession:!1}}getLastDescendant(e){let t=e,i=0;for(;;){if(++i>1e4)throw Error("Infinite loop detected while getting last descendant");this.ensureSelectionAndRandomization(t);const e=t.getAvailableChildren();if(0===e.length)break;const s=e[e.length-1];if(!s)break;t=s}return t}flowActivityTraversalSubprocess(e,t,i,mode){const s=e.parent;if(s&&!s.sequencingControls.flow)return null;if(!e.isAvailable)return null;if(mode===Ve.FORWARD&&e.sequencingControls.stopForwardTraversal)return null;if(i){this.ensureSelectionAndRandomization(e);const t=e.getAvailableChildren();for(const e of t){const t=this.flowActivityTraversalSubprocess(e,mode===Ve.FORWARD,!0,mode);if(t)return t}}return 0===e.children.length&&this.checkActivityProcess(e)?e:null}checkActivityProcess(e){if(!e.isAvailable)return!1;if(0===e.children.length&&!e.isVisible)return!1;if(this.ruleEngine.checkLimitConditions(e))return!1;const t=this.ruleEngine.canDeliverActivity(e);return e.wasSkipped=t.wasSkipped,t.canDeliver}ensureSelectionAndRandomization(e){e.getAvailableChildren()===e.children&&(Ke.isSelectionNeeded(e)||Ke.isRandomizationNeeded(e))&&Ke.applySelectionAndRandomization(e,e.isNewAttempt)}isActivityLastOverall(e){if(e.children.length>0)return!1;let t=e;for(;t;){if(this.activityTree.getNextSibling(t))return!1;t=t.parent}return!0}terminateDescendentAttempts(e){e.isActive=!1;for(const t of e.children)this.terminateDescendentAttempts(t)}findFirstDeliverableActivity(e){if(0===e.children.length)return this.checkActivityProcess(e)?e:null;this.ensureSelectionAndRandomization(e);const t=e.getAvailableChildren();for(const e of t){const t=this.flowActivityTraversalSubprocess(e,!0,!0,Ve.FORWARD);if(t)return t}return null}canDeliver(e){return this.checkActivityProcess(e)}}var et=Object.defineProperty,tt=(e,t,i)=>((e,t,i)=>t in e?et(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class it{constructor(e,t){tt(this,"activityTree",e),tt(this,"traversalService",t)}handleStart(){const result=new ze;if(!this.activityTree.root)return result.exception="SB.2.5-1",result;if(this.activityTree.currentActivity)return result.exception="SB.2.5-2",result;const e=this.traversalService.findFirstDeliverableActivity(this.activityTree.root);return e?(result.deliveryRequest=Pe.DELIVER,result.targetActivity=e,result):(result.exception="SB.2.5-3",result)}handleResumeAll(){const result=new ze;return this.activityTree.suspendedActivity?this.activityTree.currentActivity?(result.exception="SB.2.6-2",result):(result.deliveryRequest=Pe.DELIVER,result.targetActivity=this.activityTree.suspendedActivity,result):(result.exception="SB.2.6-1",result)}handleContinue(e){const result=new ze;if(e.isActive)return result.exception="SB.2.7-1",result;if(e.parent&&!e.parent.sequencingControls.flow)return result.exception="SB.2.7-2",result;const t=this.traversalService.flowSubprocess(e,Ve.FORWARD);return result.endSequencingSession=t.endSequencingSession,t.deliverable&&t.identifiedActivity?(result.deliveryRequest=Pe.DELIVER,result.targetActivity=t.identifiedActivity,result):(result.exception=t.exception||"SB.2.7-2",result)}handlePrevious(e){const result=new ze;if(e.isActive)return result.exception="SB.2.8-1",result;if(e.parent&&!e.parent.sequencingControls.flow)return result.exception="SB.2.8-2",result;const t=this.checkForwardOnlyViolation(e);if(t)return result.exception=t,result;const i=this.traversalService.flowSubprocess(e,Ve.BACKWARD);return i.deliverable&&i.identifiedActivity?(result.deliveryRequest=Pe.DELIVER,result.targetActivity=i.identifiedActivity,result):(result.exception=i.exception||"SB.2.8-3",result)}checkForwardOnlyViolation(e){let t=e.parent;for(;t;){if(t.sequencingControls.forwardOnly)return"SB.2.9-5";t=t.parent}return null}}var st=Object.defineProperty,rt=(e,t,i)=>((e,t,i)=>t in e?st(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class nt{constructor(e,t,i,s){rt(this,"activityTree",e),rt(this,"constraintValidator",t),rt(this,"traversalService",i),rt(this,"treeQueries",s)}handleChoice(e,t){const result=new ze,i=this.activityTree.getActivity(e);if(!i)return result.exception="SB.2.9-1",result;if(t&&t.isActive)return result.exception="SB.2.9-6",result;const s=this.constraintValidator.validateChoice(t,i,{checkAvailability:!0});if(!s.valid)return result.exception=s.exception,result;const r=this.treeQueries.findCommonAncestor(t,i);t&&this.terminateDescendentAttemptsProcess(r||this.activityTree.root);const n=this.buildActivityPath(i,r);for(const e of n)if(!this.traversalService.checkActivityProcess(e))return result;let o=i;if(i.children.length>0){const e=this.choiceFlowSubprocess(i);if(!e)return result.exception="SB.2.9-7",result;o=e}return result.deliveryRequest=Pe.DELIVER,result.targetActivity=o,result}handleJump(e){const result=new ze,t=this.activityTree.getActivity(e);return t?this.treeQueries.isInTree(t)?t.isAvailable?(result.deliveryRequest=Pe.DELIVER,result.targetActivity=t,result):(result.exception="SB.2.13-3",result):(result.exception="SB.2.13-2",result):(result.exception="SB.2.13-1",result)}getAvailableChoices(){const e=this.activityTree.getAllActivities(),t=this.activityTree.currentActivity,i=[];for(const s of e)s!==this.activityTree.root&&!s.isHiddenFromChoice&&s.isAvailable&&s.isVisible&&(s.parent&&!s.parent.sequencingControls.choice||this.constraintValidator.validateChoice(t,s).valid&&i.push(s));return i}buildActivityPath(e,t){const i=[];let s=e;for(;s&&s!==t;)i.unshift(s),s=s.parent;return i}choiceFlowSubprocess(e){return 0===e.children.length?e:this.choiceFlowTreeTraversal(e)}choiceFlowTreeTraversal(e){this.traversalService.ensureSelectionAndRandomization(e);const t=e.getAvailableChildren(),i=this.constraintValidator.validateFlowConstraints(e,t);if(!i.valid)return null;for(const e of i.validChildren){const t=this.enhancedChoiceTraversal(e);if(t.activity)return t.activity}return null}enhancedChoiceTraversal(e){if(arguments.length>1&&void 0!==arguments[1]&&arguments[1]&&e===this.activityTree.root)return new ke(null,"SB.2.4-3");if(!e.isAvailable)return new ke(null,null);if(e.isHiddenFromChoice)return new ke(null,null);if(e.sequencingControls&&e.sequencingControls.stopForwardTraversal)return new ke(null,"SB.2.4-1");const t=this.constraintValidator.validateTraversalConstraints(e);if(!t.canTraverse)return new ke(null,null);if(0===e.children.length)return this.traversalService.checkActivityProcess(e)?new ke(e,null):new ke(null,null);if(e.parent?.sequencingControls.constrainChoice&&!t.canTraverseInto)return new ke(null,"SB.2.4-2");if(t.canTraverseInto){const t=this.choiceFlowTreeTraversal(e);return new ke(t,null)}return new ke(null,null)}terminateDescendentAttemptsProcess(e){e.isActive=!1;for(const t of e.children)this.terminateDescendentAttemptsProcess(t)}}var ot=Object.defineProperty,at=(e,t,i)=>((e,t,i)=>t in e?ot(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class ct{constructor(e,t){at(this,"activityTree",e),at(this,"ruleEngine",t)}handleExit(e){const result=new ze;return e.parent?e.parent.sequencingControls.choiceExit?(this.terminateDescendentAttempts(e),result):(result.exception="SB.2.11-2",result):(result.exception="SB.2.11-1",result)}handleExitAll(){const result=new ze;return this.activityTree.root&&this.terminateDescendentAttempts(this.activityTree.root),result}handleAbandon(e){const result=new ze;return e.isActive=!1,this.activityTree.currentActivity=e.parent,result}handleAbandonAll(){const result=new ze;return this.activityTree.currentActivity=null,result}handleSuspendAll(e){const result=new ze;return e===this.activityTree.root?(result.exception="SB.2.15-1",result):(e.isSuspended=!0,this.activityTree.suspendedActivity=e,this.activityTree.currentActivity=null,result)}terminateDescendentAttempts(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=null;t||(i=this.ruleEngine.evaluateExitRules(e)),e.isActive=!1;for(const i of e.children)this.terminateDescendentAttempts(i,t);i&&!t&&this.processDeferredExitAction(i,e)}processDeferredExitAction(e,t){switch(e){case Ee.EXIT:break;case Ee.EXIT_PARENT:t.parent&&t.parent.isActive&&this.terminateDescendentAttempts(t.parent,!0);break;case Ee.EXIT_ALL:this.activityTree.root&&this.activityTree.root!==t&&this.activityTree.getAllActivities().some(e=>e.isActive)&&this.terminateDescendentAttempts(this.activityTree.root,!0)}}}var lt=Object.defineProperty,ut=(e,t,i)=>((e,t,i)=>t in e?lt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class ht{constructor(e,t){ut(this,"activityTree",e),ut(this,"traversalService",t)}handleRetry(e){const result=new ze;if(e.isActive||e.isSuspended)return result.exception="SB.2.10-2",result;if(e.children.length>0){this.traversalService.ensureSelectionAndRandomization(e);const t=e.getAvailableChildren();let i=null;for(const e of t)if(i=this.traversalService.flowActivityTraversalSubprocess(e,!0,!0,Ve.FORWARD),i)break;return i?(result.deliveryRequest=Pe.DELIVER,result.targetActivity=i,result):(result.exception="SB.2.10-3",result)}return this.terminateDescendentAttempts(e),result.deliveryRequest=Pe.DELIVER,result.targetActivity=e,result}handleRetryAll(){if(this.activityTree.currentActivity=null,!this.activityTree.root){const e=new ze;return e.exception="SB.2.10-1",e}const e=this.traversalService.findFirstDeliverableActivity(this.activityTree.root),result=new ze;return e?(result.deliveryRequest=Pe.DELIVER,result.targetActivity=e,result):(result.exception="SB.2.10-3",result)}terminateDescendentAttempts(e){e.isActive=!1;for(const t of e.children)this.terminateDescendentAttempts(t)}}var dt=Object.defineProperty,mt=(e,t,i)=>((e,t,i)=>t in e?dt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class pt{constructor(e,t,i){let s=arguments.length>4?arguments[4]:void 0;mt(this,"activityTree"),mt(this,"treeQueries"),mt(this,"constraintValidator"),mt(this,"ruleEngine"),mt(this,"traversalService"),mt(this,"flowHandler"),mt(this,"choiceHandler"),mt(this,"exitHandler"),mt(this,"retryHandler"),mt(this,"_now"),mt(this,"_getAttemptElapsedSecondsHook"),this.activityTree=e,this._now=s?.now||(()=>new Date),this._getAttemptElapsedSecondsHook=s?.getAttemptElapsedSeconds,this.treeQueries=new je(e),this.ruleEngine=new Ue({now:this._now,getAttemptElapsedSecondsHook:this._getAttemptElapsedSecondsHook}),this.constraintValidator=new xe(e,this.treeQueries),this.traversalService=new Ze(e,this.ruleEngine),this.flowHandler=new it(e,this.traversalService),this.choiceHandler=new nt(e,this.constraintValidator,this.traversalService,this.treeQueries),this.exitHandler=new ct(e,this.ruleEngine),this.retryHandler=new ht(e,this.traversalService)}get now(){return this._now}set now(e){this._now=e,Me.setNowProvider(e),this.ruleEngine=new Ue({now:e,getAttemptElapsedSecondsHook:this._getAttemptElapsedSecondsHook}),this.traversalService=new Ze(this.activityTree,this.ruleEngine),this.flowHandler=new it(this.activityTree,this.traversalService),this.choiceHandler=new nt(this.activityTree,this.constraintValidator,this.traversalService,this.treeQueries),this.retryHandler=new ht(this.activityTree,this.traversalService)}get getAttemptElapsedSecondsHook(){return this._getAttemptElapsedSecondsHook}set getAttemptElapsedSecondsHook(e){this._getAttemptElapsedSecondsHook=e,Me.setElapsedSecondsHook(e),this.ruleEngine=new Ue({now:this._now,getAttemptElapsedSecondsHook:e}),this.traversalService=new Ze(this.activityTree,this.ruleEngine),this.flowHandler=new it(this.activityTree,this.traversalService),this.choiceHandler=new nt(this.activityTree,this.constraintValidator,this.traversalService,this.treeQueries),this.retryHandler=new ht(this.activityTree,this.traversalService)}sequencingRequestProcess(request){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;const t=this.activityTree.currentActivity;switch(request){case Le.START:return this.flowHandler.handleStart();case Le.RESUME_ALL:return this.flowHandler.handleResumeAll();case Le.CONTINUE:return t?this.flowHandler.handleContinue(t):new ze(Pe.DO_NOT_DELIVER,null,"SB.2.12-1");case Le.PREVIOUS:return t?this.flowHandler.handlePrevious(t):new ze(Pe.DO_NOT_DELIVER,null,"SB.2.12-1");case Le.CHOICE:return e?this.choiceHandler.handleChoice(e,t):new ze(Pe.DO_NOT_DELIVER,null,"SB.2.12-5");case Le.JUMP:return e?this.choiceHandler.handleJump(e):new ze(Pe.DO_NOT_DELIVER,null,"SB.2.12-5");case Le.EXIT:return t?this.exitHandler.handleExit(t):new ze(Pe.DO_NOT_DELIVER,null,"SB.2.12-1");case Le.EXIT_ALL:return t?this.exitHandler.handleExitAll():new ze(Pe.DO_NOT_DELIVER,null,"SB.2.12-1");case Le.ABANDON:return t?this.exitHandler.handleAbandon(t):new ze(Pe.DO_NOT_DELIVER,null,"SB.2.12-1");case Le.ABANDON_ALL:return t?this.exitHandler.handleAbandonAll():new ze(Pe.DO_NOT_DELIVER,null,"SB.2.12-1");case Le.SUSPEND_ALL:return t?this.exitHandler.handleSuspendAll(t):new ze(Pe.DO_NOT_DELIVER,null,"SB.2.12-1");case Le.RETRY:return t?this.retryHandler.handleRetry(t):new ze(Pe.DO_NOT_DELIVER,null,"SB.2.12-1");case Le.RETRY_ALL:return this.retryHandler.handleRetryAll();default:return new ze(Pe.DO_NOT_DELIVER,null,"SB.2.12-6")}}evaluatePostConditionRules(e){return this.ruleEngine.evaluatePostConditions(e)}canActivityBeDelivered(e){return this.traversalService.canDeliver(e)}validateNavigationRequest(request){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(!Object.values(Le).includes(request))return{valid:!1,exception:"SB.2.12-6"};switch(request){case Le.CONTINUE:case Le.PREVIOUS:if(!t)return{valid:!1,exception:"SB.2.12-1"};if(t.isActive)return{valid:!1,exception:request===Le.CONTINUE?"SB.2.7-1":"SB.2.8-1"};if(t.parent&&!t.parent.sequencingControls.flow)return{valid:!1,exception:request===Le.CONTINUE?"SB.2.7-2":"SB.2.8-2"};if(request===Le.PREVIOUS){const e=this.constraintValidator.checkForwardOnlyViolation(t);if(!e.valid)return e}break;case Le.CHOICE:{if(!e)return{valid:!1,exception:"SB.2.12-5"};const i=this.activityTree.getActivity(e);if(!i)return{valid:!1,exception:"SB.2.9-1"};const s=this.constraintValidator.validateChoice(t,i,{checkAvailability:!0});if(!s.valid)return s;if(!this.traversalService.canDeliver(i))return{valid:!1,exception:"SB.2.9-6"};if(this.ruleEngine.checkSequencingRules(i,i.sequencingRules.preConditionRules)===Ee.HIDE_FROM_CHOICE)return{valid:!1,exception:"SB.2.9-4"};break}case Le.JUMP:if(!e)return{valid:!1,exception:"SB.2.12-5"};if(!this.activityTree.getActivity(e))return{valid:!1,exception:"SB.2.13-1"}}return{valid:!0,exception:null}}getAvailableChoices(){return this.choiceHandler.getAvailableChoices()}getTreeQueries(){return this.treeQueries}getConstraintValidator(){return this.constraintValidator}getRuleEngine(){return this.ruleEngine}getTraversalService(){return this.traversalService}}var _t=Object.defineProperty,vt=(e,t,i)=>((e,t,i)=>t in e?_t(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class gt{constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};vt(this,"eventService"),vt(this,"loggingService"),vt(this,"callbacks"),vt(this,"currentDeliveredActivity",null),vt(this,"pendingDelivery",null),this.eventService=e,this.loggingService=t,this.callbacks=i}processSequencingResult(result){if(result.exception)return this.loggingService.error("Sequencing error: "+result.exception),void this.callbacks.onSequencingError?.(result.exception);result.deliveryRequest===Pe.DELIVER&&result.targetActivity?this.deliverActivity(result.targetActivity):this.loggingService.info("Sequencing completed with no delivery request"),this.callbacks.onSequencingComplete?.(result)}deliverActivity(e){this.currentDeliveredActivity!==e?(this.currentDeliveredActivity&&this.unloadActivity(this.currentDeliveredActivity),this.pendingDelivery=e,this.loggingService.info(`Delivering activity: ${e.id} - ${e.title}`),this.eventService.processListeners("ActivityDelivery",e.id,e),this.callbacks.onDeliverActivity?.(e),this.currentDeliveredActivity=e,this.pendingDelivery=null,e.isActive=!0):this.loggingService.info("Skipping delivery - activity already delivered: "+e.id)}unloadActivity(e){this.loggingService.info(`Unloading activity: ${e.id} - ${e.title}`),this.eventService.processListeners("ActivityUnload",e.id,e),this.callbacks.onUnloadActivity?.(e),e.isActive=!1}getCurrentDeliveredActivity(){return this.currentDeliveredActivity}getPendingDelivery(){return this.pendingDelivery}updateCallbacks(e){this.callbacks={...this.callbacks,...e}}reset(){this.currentDeliveredActivity&&this.unloadActivity(this.currentDeliveredActivity),this.currentDeliveredActivity=null,this.pendingDelivery=null}}var ft=Object.defineProperty,St=(e,t,i)=>((e,t,i)=>t in e?ft(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class bt{constructor(e,t){St(this,"settings"),St(this,"error_codes"),this.settings=e,this.error_codes=t}processHttpRequest(e,t){return this._performAsyncRequest(e,t,arguments.length>2&&void 0!==arguments[2]&&arguments[2],arguments.length>3?arguments[3]:void 0,arguments.length>4?arguments[4]:void 0),{result:f,errorCode:0}}async _performAsyncRequest(e,t,i,s,r){try{const s=this.settings.requestHandler(t);let n;n=i&&"never"!==this.settings.asyncModeBeaconBehavior?await this.performBeacon(e,s):await this.performFetch(e,s);const result=await this.transformResponse(n,r);this._isSuccessResponse(n,result)?r("CommitSuccess"):r("CommitError",void 0,result.errorCode)}catch(e){s("processHttpRequest","Async request failed: "+(e instanceof Error?e.message:e+""),B.ERROR),r("CommitError")}}_prepareRequestBody(e){return{body:e instanceof Array?e.join("&"):JSON.stringify(e),contentType:e instanceof Array?"application/x-www-form-urlencoded":this.settings.commitRequestDataType}}async performFetch(e,t){if("always"===this.settings.asyncModeBeaconBehavior)return this.performBeacon(e,t);const{body:i,contentType:s}=this._prepareRequestBody(t),r={method:"POST",mode:this.settings.fetchMode,body:i,headers:{...this.settings.xhrHeaders,"Content-Type":s},keepalive:!0};return this.settings.xhrWithCredentials&&(r.credentials="include"),fetch(e,r)}async performBeacon(e,t){const{body:i,contentType:s}=this._prepareRequestBody(t),r=navigator.sendBeacon(e,new Blob([i],{type:s}));return Promise.resolve({status:r?200:0,ok:r,json:async()=>({result:r?"true":"false",errorCode:r?0:this.error_codes.GENERAL_COMMIT_FAILURE||391}),text:async()=>JSON.stringify({result:r?"true":"false",errorCode:r?0:this.error_codes.GENERAL_COMMIT_FAILURE||391})})}async transformResponse(e,t){let result;try{result="function"==typeof this.settings.responseHandler?await this.settings.responseHandler(e):await e.json()}catch(t){const i=await e.text().catch(()=>"Unable to read response text");return{result:S,errorCode:this.error_codes.GENERAL_COMMIT_FAILURE||391,errorMessage:"Failed to parse LMS response: "+(t instanceof Error?t.message:t+""),errorDetails:JSON.stringify({status:e.status,statusText:e.statusText,url:e.url,responseText:i.substring(0,500),parseError:t instanceof Error?t.message:t+""})}}return Object.hasOwnProperty.call(result,"errorCode")||(result.errorCode=this._isSuccessResponse(e,result)?0:this.error_codes.GENERAL_COMMIT_FAILURE||391),this._isSuccessResponse(e,result)||(result.errorDetails={status:e.status,statusText:e.statusText,url:e.url,...result.errorDetails}),result}_isSuccessResponse(e,result){const t=result.result;return!(200>e.status||e.status>299||!0!==t&&"true"!==t&&t!==f)}updateSettings(e){this.settings=e}}var yt=Object.defineProperty;const Ct="{target=";function At(e,t){const i=e[t];return void 0===i?(void 0!==console&&console.warn&&console.warn("CMIValueAccessService: Unknown error code key: "+t),e.GENERAL??0):i}class Et{constructor(e){var t;((e,t,i)=>{t in e?yt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i})(this,"context"+"",t),this.context=e}getUndefinedDataModelErrorCode(e){return At(this.context.errorCodes,e?"UNDEFINED_DATA_MODEL":"GENERAL")}setCMIValue(e,t,i,s){if(!i||""===i)return t&&this.context.throwSCORMError(i,At(this.context.errorCodes,"GENERAL_SET_FAILURE"),"The data model element was not specified"),S;this.context.setLastErrorCode("0");const r=i.split(".");let n=this.context.getDataModel(),o=S,a=!1;const c=`The data model element passed to ${e} (${i}) is not a valid SCORM data model element.`,l=this.getUndefinedDataModelErrorCode(t);for(let e=0;r.length>e;e++){if(e===r.length-1){o=this.setFinalAttribute(n,r[e],s,i,t,l,c);break}{const o=this.traverseToNextLevel(n,r,e,s,i,t,a,l,c);if(o.error)break;n=o.refObject,e=o.idx,a=o.foundFirstIndex}}return o===S&&this.context.apiLog(e,`There was an error setting the value for: ${i}, value of: ${s}`,B.WARN),o}getCMIValue(e,t,i){if(!i||""===i)return t&&this.context.throwSCORMError(i,At(this.context.errorCodes,"GENERAL_GET_FAILURE"),"The data model element was not specified"),"";if(t&&i.endsWith("._version")&&"cmi._version"!==i)return this.context.throwSCORMError(i,At(this.context.errorCodes,"GENERAL_GET_FAILURE"),"The _version keyword was used incorrectly"),"";const s=i.split(".");let r=this.context.getDataModel(),n=null;const o=`The data model element passed to ${e} (${i}) has not been initialized.`,a=`The data model element passed to ${e} (${i}) is not a valid SCORM data model element.`,c=this.getUndefinedDataModelErrorCode(t);for(let e=0;s.length>e;e++){n=s[e];const l=this.validateGetAttribute(r,n,i,t,c,a,e===s.length-1);if(void 0!==l.returnValue)return l.returnValue;if(l.error)return"";if(null==n){this.context.throwSCORMError(i,c,a);break}if(r=r[n],void 0===r){this.context.throwSCORMError(i,c,a);break}if(r instanceof x){const t=this.handleGetArrayAccess(r,s,e,i,o);if(t.error)return"";r=t.refObject,e=t.idx}}return null==r?(t||("_children"===n?this.context.throwSCORMError(i,At(this.context.errorCodes,"CHILDREN_ERROR"),void 0):"_count"===n&&this.context.throwSCORMError(i,At(this.context.errorCodes,"COUNT_ERROR"),void 0)),""):r}setFinalAttribute(e,t,i,s,r,n,o){return r&&t?.startsWith(Ct)?this.context.isInitialized()?(this.context.throwSCORMError(s,At(this.context.errorCodes,"READ_ONLY_ELEMENT")),S):f:void 0!==t&&this.context.checkObjectHasProperty(e,t)?c(s,"\\.correct_responses\\.\\d+$")&&this.context.isInitialized()&&"pattern"!==t&&(this.context.validateCorrectResponse(s,i),"0"!==this.context.getLastErrorCode())?(this.context.throwSCORMError(s,At(this.context.errorCodes,"TYPE_MISMATCH")),S):r&&"0"!==this.context.getLastErrorCode()?S:void 0===t||"__proto__"===t||"constructor"===t?(this.context.throwSCORMError(s,n,o),S):r&&"id"===t&&this.context.isInitialized()&&this.context.checkForDuplicateId(s,i)?(this.context.throwSCORMError(s,At(this.context.errorCodes,"GENERAL_SET_FAILURE")),S):(e[t]=i,f):(this.context.throwSCORMError(s,n,o),S)}traverseToNextLevel(e,t,i,s,r,n,o,a,c){const l=t[i];if(void 0===l||!this.context.checkObjectHasProperty(e,l))return this.context.throwSCORMError(r,a,c),{refObject:e,idx:i,foundFirstIndex:o,error:!0};if(!(e=e[l]))return this.context.throwSCORMError(r,a,c),{refObject:e,idx:i,foundFirstIndex:o,error:!0};if(e instanceof x){const l=this.handleSetArrayAccess(e,t,i,s,r,n,o,a,c);return l.error?{refObject:e,idx:i,foundFirstIndex:o,error:!0}:l}return{refObject:e,idx:i,foundFirstIndex:o,error:!1}}handleSetArrayAccess(e,t,i,s,r,n,o,a,c){const l=parseInt(t[i+1]||"0",10);if(!isNaN(l)){const t=e.childArray[l];if(t)return{refObject:t,idx:i+1,foundFirstIndex:!0,error:!1};{if(l>e.childArray.length){const t=n?At(this.context.errorCodes,"GENERAL_SET_FAILURE"):At(this.context.errorCodes,"INVALID_SET_VALUE")||At(this.context.errorCodes,"GENERAL_SET_FAILURE");return this.context.throwSCORMError(r,t,`Cannot set array element at index ${l}. Array indices must be sequential. Current array length is ${e.childArray.length}, expected index ${e.childArray.length}.`),{refObject:e,idx:i,foundFirstIndex:o,error:!0}}const t=this.context.getChildElement(r,s,o);return t?(e.initialized&&t.initialize(),e.childArray[l]=t,{refObject:t,idx:i+1,foundFirstIndex:!0,error:!1}):("0"===this.context.getLastErrorCode()&&this.context.throwSCORMError(r,a,c),{refObject:e,idx:i,foundFirstIndex:o,error:!0})}}return{refObject:e,idx:i,foundFirstIndex:o,error:!1}}validateGetAttribute(e,t,i,s,r,n,o){if(s){const s=t+"";if(s.startsWith(Ct)&&"function"==typeof e._isTargetValid){const t=s.substring(8,s.length-1);return{error:!1,returnValue:e._isTargetValid(t)}}if(void 0===t||!this.context.checkObjectHasProperty(e,t))return"_children"===t?(this.context.throwSCORMError(i,At(this.context.errorCodes,"GENERAL_GET_FAILURE"),"The data model element does not have children"),{error:!0}):"_count"===t?(this.context.throwSCORMError(i,At(this.context.errorCodes,"GENERAL_GET_FAILURE"),"The data model element is not a collection and therefore does not have a count"),{error:!0}):(this.context.throwSCORMError(i,r,n),{error:!0})}else if(o&&(void 0===t||!this.context.checkObjectHasProperty(e,t)))return this.context.throwSCORMError(i,r,n),{error:!0};return{error:!1}}handleGetArrayAccess(e,t,i,s,r){const n=parseInt(t[i+1]||"",10);if(!isNaN(n)){const t=e.childArray[n];return t?{refObject:t,idx:i+1,error:!1}:(this.context.throwSCORMError(s,At(this.context.errorCodes,"VALUE_NOT_INITIALIZED"),r),{refObject:e,idx:i,error:!0})}return{refObject:e,idx:i,error:!1}}}var wt=Object.defineProperty,Mt=(e,t,i)=>((e,t,i)=>t in e?wt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);const Ot=class e{constructor(){Mt(this,"_logLevel",B.ERROR),Mt(this,"_logHandler"),this._logHandler=$}static getInstance(){return e._instance||(e._instance=new e),e._instance}setLogLevel(e){this._logLevel=e}getLogLevel(){return this._logLevel}setLogHandler(e){this._logHandler=e}log(e,t){this.shouldLog(e)&&this._logHandler(e,t)}error(e){this.log(B.ERROR,e)}warn(e){this.log(B.WARN,e)}info(e){this.log(B.INFO,e)}debug(e){this.log(B.DEBUG,e)}shouldLog(e){return this.getNumericLevel(e)>=this.getNumericLevel(this._logLevel)}getNumericLevel(e){if(void 0===e)return B.NONE;if("number"==typeof e)return e;switch("string"==typeof e?e.toUpperCase():e){case"1":case"DEBUG":return B.DEBUG;case"2":case"INFO":return B.INFO;case"3":case"WARN":return B.WARN;case"4":case"ERROR":default:return B.ERROR;case"5":case"NONE":return B.NONE}}};Mt(Ot,"_instance");let Rt=Ot;function Tt(){return Rt.getInstance()}var jt=Object.defineProperty,It=(e,t,i)=>((e,t,i)=>t in e?jt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Nt{constructor(e,t,i,s){It(this,"_lastErrorCode","0"),It(this,"_lastDiagnostic",""),It(this,"_errorCodes"),It(this,"_apiLog"),It(this,"_getLmsErrorMessageDetails"),It(this,"_loggingService"),this._errorCodes=e,this._apiLog=t,this._getLmsErrorMessageDetails=i,this._loggingService=s||Tt()}get lastErrorCode(){return this._lastErrorCode}set lastErrorCode(e){this._lastErrorCode=e}get lastDiagnostic(){return this._lastDiagnostic}throwSCORMError(e,t,i){this._lastDiagnostic=i||"",i||(i=this._getLmsErrorMessageDetails(t,!0));const s=`SCORM Error ${t}: ${i}${e?` [Element: ${e}]`:""}`;this._apiLog("throwSCORMError",t+": "+i,B.ERROR,e),this._loggingService.error(s),this._lastErrorCode=t+""}clearSCORMError(e){void 0!==e&&e!==S&&(this._lastErrorCode="0")}handleValueAccessException(e,t,i){if(t instanceof g){const s=t;this._lastErrorCode=s.errorCode+"",this._lastDiagnostic="",this._loggingService.warn(`Validation Error ${s.errorCode}: ${s.message} [Element: ${e}]`),i=S}else if(t instanceof Error){const s=t.constructor.name;this._loggingService.error(`${s}: ${t.message} [Element: ${e}]\n${t.stack||""}`),this.throwSCORMError(e,this._errorCodes.GENERAL,`${s}: ${t.message}`),i=S}else{this._loggingService.error(`Unknown error occurred while accessing [Element: ${e}]`);try{const e=JSON.stringify(t);this._loggingService.error("Error details: "+e)}catch(e){this._loggingService.error("Could not stringify error object for details")}this.throwSCORMError(e,this._errorCodes.GENERAL,"Unknown error"),i=S}return i}get errorCodes(){return this._errorCodes}}var xt=Object.defineProperty,qt=(e,t,i)=>((e,t,i)=>t in e?xt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Dt{constructor(e){qt(this,"listenerMap",new Map),qt(this,"listenerCount",0),qt(this,"apiLog"),this.apiLog=e}parseListenerName(e){if(!e)return null;const t=e.split("."),i=t[0];let s=null;return t.length>1&&(s=e.replace(i+".","")),{functionName:i??e,CMIElement:s}}on(e,t){if(!t)return;const i=e.split(" ");for(const e of i){const i=this.parseListenerName(e);if(!i)continue;const{functionName:s,CMIElement:r}=i,n=this.listenerMap.get(s)??[];n.push({functionName:s,CMIElement:r,callback:t}),this.listenerMap.set(s,n),this.listenerCount++,this.apiLog("on","Added event listener: "+this.listenerCount,B.INFO,s)}}off(e,t){if(!t)return;const i=e.split(" ");for(const e of i){const i=this.parseListenerName(e);if(!i)continue;const{functionName:s,CMIElement:r}=i,n=this.listenerMap.get(s);if(!n)continue;const o=n.findIndex(e=>e.CMIElement===r&&e.callback===t);-1!==o&&(n.splice(o,1),this.listenerCount--,0===n.length&&this.listenerMap.delete(s),this.apiLog("off","Removed event listener: "+this.listenerCount,B.INFO,s))}}clear(e){const t=e.split(" ");for(const e of t){const t=this.parseListenerName(e);if(!t)continue;const{functionName:i,CMIElement:s}=t;if(this.listenerMap.has(i)){const e=this.listenerMap.get(i),t=null===s?[]:e.filter(e=>e.CMIElement!==s);this.listenerCount-=e.length-t.length,0===t.length?this.listenerMap.delete(i):this.listenerMap.set(i,t)}}}processListeners(e,t,i){this.apiLog(e,i,B.INFO,t);const s=this.listenerMap.get(e);if(s)for(const r of s){const s=!!r.CMIElement;let n=!1;if(t&&r.CMIElement)if(r.CMIElement.endsWith("*")){const e=r.CMIElement.slice(0,-1);n=t.startsWith(e)}else n=r.CMIElement===t;s&&!n||(this.apiLog("processListeners","Processing listener: "+r.functionName,B.DEBUG,t),e.startsWith("Sequence")||"CommitError"===e?r.callback(i):"CommitSuccess"===e?r.callback():r.callback(t,i))}}reset(){this.listenerMap.clear(),this.listenerCount=0}}var Lt=Object.defineProperty,Pt=(e,t,i)=>((e,t,i)=>t in e?Lt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class zt{constructor(e,t,i){Pt(this,"apiLog",i),Pt(this,"settings"),Pt(this,"error_codes"),Pt(this,"storeName","scorm_again_offline_data"),Pt(this,"syncQueue","scorm_again_sync_queue"),Pt(this,"isOnline",navigator.onLine),Pt(this,"syncInProgress",!1),Pt(this,"boundOnlineStatusChangeHandler"),Pt(this,"boundCustomNetworkStatusHandler"),this.settings=e,this.error_codes=t,this.boundOnlineStatusChangeHandler=this.handleOnlineStatusChange.bind(this),this.boundCustomNetworkStatusHandler=this.handleCustomNetworkStatus.bind(this),window.addEventListener("online",this.boundOnlineStatusChangeHandler),window.addEventListener("offline",this.boundOnlineStatusChangeHandler),window.addEventListener("scorm-again:network-status",this.boundCustomNetworkStatusHandler)}handleOnlineStatusChange(){const e=this.isOnline;this.isOnline=navigator.onLine,!e&&this.isOnline?(this.apiLog("OfflineStorageService","Device is back online, attempting to sync...",B.INFO),this.syncOfflineData().then(e=>{e?this.apiLog("OfflineStorageService","Sync completed successfully",B.INFO):this.apiLog("OfflineStorageService","Sync failed",B.ERROR)},e=>{this.apiLog("OfflineStorageService","Error during sync: "+e,B.ERROR)})):e&&!this.isOnline&&this.apiLog("OfflineStorageService","Device is offline, data will be stored locally",B.INFO)}handleCustomNetworkStatus(e){if(!(e instanceof CustomEvent))return void this.apiLog("OfflineStorageService","Invalid network status event received",B.WARN);const{online:t}=e.detail;if("boolean"!=typeof t)return void this.apiLog("OfflineStorageService","Invalid online status value in custom event",B.WARN);const i=this.isOnline;this.isOnline=t,this.apiLog("OfflineStorageService","Network status updated via custom event: "+(t?"online":"offline"),B.INFO),!i&&this.isOnline?(this.apiLog("OfflineStorageService","Device is back online, attempting to sync...",B.INFO),this.syncOfflineData().then(e=>{e?this.apiLog("OfflineStorageService","Sync completed successfully",B.INFO):this.apiLog("OfflineStorageService","Sync failed",B.ERROR)},e=>{this.apiLog("OfflineStorageService","Error during sync: "+e,B.ERROR)})):i&&!this.isOnline&&this.apiLog("OfflineStorageService","Device is offline, data will be stored locally",B.INFO)}storeOffline(e,t){try{const i={id:`${e}_${Date.now()}_${Math.random().toString(36).substring(2,9)}`,courseId:e,timestamp:Date.now(),data:t,syncAttempts:0},s=this.getFromStorage(this.syncQueue)||[];return s.push(i),this.saveToStorage(this.syncQueue,s),this.saveToStorage(`${this.storeName}_${e}`,t),this.apiLog("OfflineStorageService","Stored data offline for course "+e,B.INFO),{result:f,errorCode:0}}catch(t){const i=(t instanceof Error?t.message:t+"").includes("storage quota");return this.apiLog("OfflineStorageService",i?"storage quota exceeded - cannot store offline data for course "+e:"Error storing offline data: "+t,B.ERROR),{result:S,errorCode:this.error_codes.GENERAL??0}}}async getOfflineData(e){try{return this.getFromStorage(`${this.storeName}_${e}`)||null}catch(e){return this.apiLog("OfflineStorageService","Error retrieving offline data: "+e,B.ERROR),null}}async syncOfflineData(){if(this.syncInProgress||!this.isOnline)return!1;this.syncInProgress=!0;try{const e=this.getFromStorage(this.syncQueue)||[];if(0===e.length)return this.syncInProgress=!1,!0;this.apiLog("OfflineStorageService",`Found ${e.length} items to sync`,B.INFO);const t=[];for(const i of e){const e=this.settings.maxSyncAttempts??5;if(e>i.syncAttempts)try{const e=await this.sendDataToLMS(i.data);!0===e.result||e.result===f?this.apiLog("OfflineStorageService","Successfully synced item "+i.id,B.INFO):(i.syncAttempts++,t.push(i),this.apiLog("OfflineStorageService",`Failed to sync item ${i.id}, attempt #${i.syncAttempts}`,B.WARN))}catch(e){i.syncAttempts++,t.push(i),this.apiLog("OfflineStorageService",`Error syncing item ${i.id}: ${e}`,B.ERROR)}else this.apiLog("OfflineStorageService",`Removing abandoned item ${i.id} after ${e} failed sync attempts`,B.WARN)}return this.saveToStorage(this.syncQueue,t),this.apiLog("OfflineStorageService",`Sync completed. ${e.length-t.length} items synced, ${t.length} items remaining`,B.INFO),this.syncInProgress=!1,!0}catch(e){return this.apiLog("OfflineStorageService","Error during sync process: "+e,B.ERROR),this.syncInProgress=!1,!1}}async sendDataToLMS(e){if(!this.settings.lmsCommitUrl)return{result:S,errorCode:this.error_codes.GENERAL||101};try{const t=this.settings.requestHandler(e),i={method:"POST",mode:this.settings.fetchMode,body:JSON.stringify(t),headers:{...this.settings.xhrHeaders,"Content-Type":this.settings.commitRequestDataType}};this.settings.xhrWithCredentials&&(i.credentials="include");const s=await fetch(this.settings.lmsCommitUrl,i),result="function"==typeof this.settings.responseHandler?await this.settings.responseHandler(s):await s.json();return 200>s.status||s.status>299||!0!==result.result&&result.result!==f?(Object.hasOwnProperty.call(result,"errorCode")||(result.errorCode=this.error_codes.GENERAL),result):(Object.hasOwnProperty.call(result,"errorCode")||(result.errorCode=0),result)}catch(e){return this.apiLog("OfflineStorageService","Error sending data to LMS: "+e,B.ERROR),{result:S,errorCode:this.error_codes.GENERAL||101}}}isDeviceOnline(){return this.isOnline}getFromStorage(e){const t=localStorage.getItem(e);if(t)try{return JSON.parse(t)}catch(e){return null}return null}saveToStorage(e,t){try{localStorage.setItem(e,JSON.stringify(t))}catch(e){if(e instanceof DOMException&&"QuotaExceededError"===e.name)throw Error("storage quota exceeded - localStorage is full",{cause:e});throw e}}async hasPendingOfflineData(e){return(this.getFromStorage(this.syncQueue)||[]).some(t=>t.courseId===e)}updateSettings(e){this.settings=e}destroy(){window.removeEventListener("online",this.boundOnlineStatusChangeHandler),window.removeEventListener("offline",this.boundOnlineStatusChangeHandler),window.removeEventListener("scorm-again:network-status",this.boundCustomNetworkStatusHandler)}}const Ft=l((e,t,i,s,r,n)=>{if("string"!=typeof t)return!1;const o=RegExp(i),a=t.match(o);if(n&&""===t)return!0;if(!a||""===a[0])throw new r(e,s);return!0},(e,t,i,s,r,n)=>`${e}:${"string"==typeof t?t:`[${typeof t}]`}:${i}:${s}:${n||!1}`),kt=l((e,t,i,s,r)=>{const n=i.split("#");if(isNaN(t=+t))throw new r(e,s);const o=n[0],a=n[1],c=void 0!==a&&""!==a&&"*"!==a;if(void 0!==o&&""!==o&&+o>t)throw new r(e,s);if(c&&t>+a)throw new r(e,s);return!0},(e,t,i,s,r)=>`${e}:${t}:${i}:${s}`);function Vt(e,t,i,s){return Ft(e,t,i,j.TYPE_MISMATCH,O,s)}function Ht(e,t,i){return kt(e,t,i,j.VALUE_OUT_OF_RANGE,O)}var Bt=Object.defineProperty,Ut=(e,t,i)=>((e,t,i)=>t in e?Bt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i),$t=(e=>(e.SATISFIED="satisfied",e.NOT_SATISFIED="notSatisfied",e.COMPLETED="completed",e.INCOMPLETE="incomplete",e))($t||{}),Gt=(e=>(e.ALL="all",e.ANY="any",e.NONE="none",e.AT_LEAST_COUNT="atLeastCount",e.AT_LEAST_PERCENT="atLeastPercent",e))(Gt||{});class Yt extends d{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"always",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Map;super("rollupCondition"),Ut(this,"_condition","always"),Ut(this,"_parameters",new Map),this._condition=e,this._parameters=t}reset(){this._initialized=!1}get condition(){return this._condition}set condition(e){this._condition=e}get parameters(){return this._parameters}set parameters(e){this._parameters=e}evaluate(e){switch(this._condition){case"satisfied":return!0===e.objectiveSatisfiedStatus||e.successStatus===P;case"objectiveStatusKnown":return e.objectiveSatisfiedStatusKnown;case"objectiveMeasureKnown":return e.objectiveMeasureStatus;case"objectiveMeasureGreaterThan":{const t=this._parameters.get("threshold")||0;return e.objectiveMeasureStatus&&e.objectiveNormalizedMeasure>t}case"objectiveMeasureLessThan":{const t=this._parameters.get("threshold")||0;return e.objectiveMeasureStatus&&t>e.objectiveNormalizedMeasure}case"completed":return e.isCompleted;case"progressKnown":return e.completionStatus!==H;case"attempted":return e.attemptCount>0;case"notAttempted":return 0===e.attemptCount;case"always":return!0;default:return!1}}toJSON(){this.jsonString=!0;const result={condition:this._condition,parameters:Object.fromEntries(this._parameters)};return this.jsonString=!1,result}}class Wt extends d{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"satisfied",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"all",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;super("rollupRule"),Ut(this,"_conditions",[]),Ut(this,"_action","satisfied"),Ut(this,"_consideration","all"),Ut(this,"_minimumCount",0),Ut(this,"_minimumPercent",0),this._action=e,this._consideration=t,this._minimumCount=i,this._minimumPercent=s}reset(){this._initialized=!1,this._conditions=[]}get conditions(){return this._conditions}addCondition(e){if(!(e instanceof Yt))throw new O(this._cmi_element+".conditions",j.TYPE_MISMATCH);this._conditions.push(e)}removeCondition(e){const t=this._conditions.indexOf(e);return-1!==t&&(this._conditions.splice(t,1),!0)}get action(){return this._action}set action(e){this._action=e}get consideration(){return this._consideration}set consideration(e){this._consideration=e}get minimumCount(){return this._minimumCount}set minimumCount(e){0>e||(this._minimumCount=e)}get minimumPercent(){return this._minimumPercent}set minimumPercent(e){0>e||e>100||(this._minimumPercent=e)}evaluate(e){if(0===e.length)return!1;const t=e.filter(e=>this._conditions.every(t=>t.evaluate(e)));switch(this._consideration){case"all":return t.length===e.length;case"any":return t.length>0;case"none":return 0===t.length;case"atLeastCount":return t.length>=this._minimumCount;case"atLeastPercent":return t.length/e.length*100>=this._minimumPercent;default:return!1}}toJSON(){this.jsonString=!0;const result={conditions:this._conditions,action:this._action,consideration:this._consideration,minimumCount:this._minimumCount,minimumPercent:this._minimumPercent};return this.jsonString=!1,result}}class Jt extends d{constructor(){super("rollupRules"),Ut(this,"_rules",[])}reset(){this._initialized=!1,this._rules=[]}get rules(){return this._rules}addRule(e){if(!(e instanceof Wt))throw new O(this._cmi_element+".rules",j.TYPE_MISMATCH);this._rules.push(e)}removeRule(e){const t=this._rules.indexOf(e);return-1!==t&&(this._rules.splice(t,1),!0)}processRollup(e){if(!e||0===e.children.length)return;const t=e.getAvailableChildren();let i=!1,s=!1;if(e.sequencingControls.rollupObjectiveSatisfied&&null!==this._objectiveRollupUsingMeasure(e,t)&&(s=!0),!s)for(const r of this._rules)if(r.evaluate(t))switch(r.action){case"satisfied":e.successStatus=P,s=!0;break;case"notSatisfied":e.successStatus=z,s=!0;break;case"completed":e.completionStatus=k,e.isCompleted=!0,i=!0;break;case"incomplete":e.completionStatus=V,e.isCompleted=!1,i=!0}i||this._defaultCompletionRollup(e,t),s||this._defaultSuccessRollup(e,t)}_defaultCompletionRollup(e,t){t.every(e=>e.isCompleted)?(e.completionStatus=k,e.isCompleted=!0):t.some(e=>e.completionStatus===V)&&(e.completionStatus=V,e.isCompleted=!1)}_objectiveRollupUsingMeasure(e,t){if(0>=e.sequencingControls.objectiveMeasureWeight)return null;let i=0,s=0,r=!1;for(const e of t)if(e.sequencingControls.rollupObjectiveSatisfied&&e.objectiveMeasureStatus&&!0===e.objectiveMeasureStatus){const t=e.sequencingControls.objectiveMeasureWeight;t>0&&(s+=e.objectiveNormalizedMeasure*t,i+=t,r=!0)}if(!r||0===i)return null;const n=s/i;return e.objectiveNormalizedMeasure=n,e.objectiveMeasureStatus=!0,e.scaledPassingScore>n?(e.successStatus=z,e.objectiveSatisfiedStatus=!1,!1):(e.successStatus=P,e.objectiveSatisfiedStatus=!0,!0)}_defaultSuccessRollup(e,t){t.every(e=>e.successStatus===P)?e.successStatus=P:t.some(e=>e.successStatus===z)&&(e.successStatus=z)}toJSON(){this.jsonString=!0;const result={rules:this._rules};return this.jsonString=!1,result}}var Kt=Object.defineProperty,Xt=(e,t,i)=>((e,t,i)=>t in e?Kt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Qt{constructor(id){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};Xt(this,"_id"),Xt(this,"_description"),Xt(this,"_satisfiedByMeasure"),Xt(this,"_minNormalizedMeasure"),Xt(this,"_mapInfo"),Xt(this,"_isPrimary"),Xt(this,"_satisfiedStatus",!1),Xt(this,"_satisfiedStatusKnown",!1),Xt(this,"_measureStatus",!1),Xt(this,"_normalizedMeasure",0),Xt(this,"_progressMeasure",0),Xt(this,"_progressMeasureStatus",!1),Xt(this,"_completionStatus",H),Xt(this,"_progressStatus",!1),Xt(this,"_satisfiedStatusDirty",!1),Xt(this,"_normalizedMeasureDirty",!1),Xt(this,"_completionStatusDirty",!1),Xt(this,"_progressMeasureDirty",!1),this._id=id,this._description=e.description??null,this._satisfiedByMeasure=e.satisfiedByMeasure??!1,this._minNormalizedMeasure=e.minNormalizedMeasure??null,this._mapInfo=e.mapInfo?[...e.mapInfo]:[],this._isPrimary=e.isPrimary??!1}get id(){return this._id}get description(){return this._description}get satisfiedByMeasure(){return this._satisfiedByMeasure}set satisfiedByMeasure(e){this._satisfiedByMeasure=e}get minNormalizedMeasure(){return this._minNormalizedMeasure}set minNormalizedMeasure(e){this._minNormalizedMeasure=e}get mapInfo(){return this._mapInfo}set mapInfo(e){this._mapInfo=[...e]}get isPrimary(){return this._isPrimary}set isPrimary(e){this._isPrimary=e}get satisfiedStatus(){return this._satisfiedStatus}set satisfiedStatus(e){this._satisfiedStatus!==e&&(this._satisfiedStatus=e,this._satisfiedStatusDirty=!0)}get satisfiedStatusKnown(){return this._satisfiedStatusKnown}set satisfiedStatusKnown(e){this._satisfiedStatusKnown=e}get measureStatus(){return this._measureStatus}set measureStatus(e){this._measureStatus=e}get normalizedMeasure(){return this._normalizedMeasure}set normalizedMeasure(e){this._normalizedMeasure!==e&&(this._normalizedMeasure=e,this._normalizedMeasureDirty=!0)}get progressMeasure(){return this._progressMeasure}set progressMeasure(e){this._progressMeasure!==e&&(this._progressMeasure=e,this._progressMeasureDirty=!0)}get progressMeasureStatus(){return this._progressMeasureStatus}set progressMeasureStatus(e){this._progressMeasureStatus=e}get completionStatus(){return this._completionStatus}set completionStatus(e){this._completionStatus!==e&&(this._completionStatus=e,this._completionStatusDirty=!0)}get progressStatus(){return this._progressStatus}set progressStatus(e){this._progressStatus=e}isDirty(e){switch(e){case"satisfiedStatus":return this._satisfiedStatusDirty;case"normalizedMeasure":return this._normalizedMeasureDirty;case"completionStatus":return this._completionStatusDirty;case"progressMeasure":return this._progressMeasureDirty}}clearDirty(e){switch(e){case"satisfiedStatus":this._satisfiedStatusDirty=!1;break;case"normalizedMeasure":this._normalizedMeasureDirty=!1;break;case"completionStatus":this._completionStatusDirty=!1;break;case"progressMeasure":this._progressMeasureDirty=!1}}clearAllDirty(){this._satisfiedStatusDirty=!1,this._normalizedMeasureDirty=!1,this._completionStatusDirty=!1,this._progressMeasureDirty=!1}initializeFromCMI(e,t,i){this._satisfiedStatus=e,this._satisfiedStatusDirty=!0,this._normalizedMeasure=t,this._normalizedMeasureDirty=!0,this._measureStatus=i}resetState(){this._satisfiedStatus=!1,this._satisfiedStatusKnown=!1,this._measureStatus=!1,this._normalizedMeasure=0,this._progressMeasure=0,this._progressMeasureStatus=!1,this._completionStatus=H,this._progressStatus=!1,this.clearAllDirty()}updateFromActivity(e){this._satisfiedStatus!==e.objectiveSatisfiedStatus&&(this._satisfiedStatus=e.objectiveSatisfiedStatus,this._satisfiedStatusDirty=!0),this._satisfiedStatusKnown=e.objectiveSatisfiedStatusKnown,this._measureStatus=e.objectiveMeasureStatus,this._normalizedMeasure!==e.objectiveNormalizedMeasure&&(this._normalizedMeasure=e.objectiveNormalizedMeasure,this._normalizedMeasureDirty=!0),this._progressMeasure!==e.progressMeasure&&(this._progressMeasure=e.progressMeasure,this._progressMeasureDirty=!0),this._progressMeasureStatus=e.progressMeasureStatus,this._completionStatus!==e.completionStatus&&(this._completionStatus=e.completionStatus,this._completionStatusDirty=!0)}applyToActivity(e){this._isPrimary&&e.setPrimaryObjectiveState(this._satisfiedStatus,this._measureStatus,this._normalizedMeasure,this._progressMeasure,this._progressMeasureStatus,this._completionStatus)}}class Zt extends d{constructor(){let id=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";super("activity"),Xt(this,"_id",""),Xt(this,"_title",""),Xt(this,"_children",[]),Xt(this,"_parent",null),Xt(this,"_isVisible",!0),Xt(this,"_isActive",!1),Xt(this,"_isSuspended",!1),Xt(this,"_isCompleted",!1),Xt(this,"_completionStatus",H),Xt(this,"_successStatus",F),Xt(this,"_attemptCount",0),Xt(this,"_attemptCompletionAmount",0),Xt(this,"_attemptAbsoluteDuration","PT0H0M0S"),Xt(this,"_attemptExperiencedDuration","PT0H0M0S"),Xt(this,"_activityAbsoluteDuration","PT0H0M0S"),Xt(this,"_activityExperiencedDuration","PT0H0M0S"),Xt(this,"_attemptAbsoluteDurationValue","PT0H0M0S"),Xt(this,"_attemptExperiencedDurationValue","PT0H0M0S"),Xt(this,"_activityAbsoluteDurationValue","PT0H0M0S"),Xt(this,"_activityExperiencedDurationValue","PT0H0M0S"),Xt(this,"_activityStartTimestampUtc",null),Xt(this,"_attemptStartTimestampUtc",null),Xt(this,"_activityEndedDate",null),Xt(this,"_objectiveSatisfiedStatus",!1),Xt(this,"_objectiveSatisfiedStatusKnown",!1),Xt(this,"_objectiveMeasureStatus",!1),Xt(this,"_objectiveNormalizedMeasure",0),Xt(this,"_scaledPassingScore",.7),Xt(this,"_objectiveSatisfiedStatusDirty",!1),Xt(this,"_objectiveNormalizedMeasureDirty",!1),Xt(this,"_objectiveMeasureStatusDirty",!1),Xt(this,"_progressMeasure",0),Xt(this,"_progressMeasureStatus",!1),Xt(this,"_location",""),Xt(this,"_attemptAbsoluteStartTime",""),Xt(this,"_learnerPrefs",null),Xt(this,"_activityAttemptActive",!1),Xt(this,"_isHiddenFromChoice",!1),Xt(this,"_isAvailable",!0),Xt(this,"_hideLmsUi",[]),Xt(this,"_auxiliaryResources",[]),Xt(this,"_attemptLimit",null),Xt(this,"_attemptAbsoluteDurationLimit",null),Xt(this,"_activityAbsoluteDurationLimit",null),Xt(this,"_timeLimitAction",null),Xt(this,"_timeLimitDuration",null),Xt(this,"_beginTimeLimit",null),Xt(this,"_endTimeLimit",null),Xt(this,"_launchData",""),Xt(this,"_credit","credit"),Xt(this,"_maxTimeAllowed",""),Xt(this,"_completionThreshold",""),Xt(this,"_sequencingControls"),Xt(this,"_sequencingRules"),Xt(this,"_rollupRules"),Xt(this,"_processedChildren",null),Xt(this,"_isNewAttempt",!1),Xt(this,"_primaryObjective",null),Xt(this,"_objectives",[]),Xt(this,"_rollupConsiderations",{requiredForSatisfied:"always",requiredForNotSatisfied:"always",requiredForCompleted:"always",requiredForIncomplete:"always",measureSatisfactionIfActive:!0}),Xt(this,"_requiredForSatisfied","always"),Xt(this,"_requiredForNotSatisfied","always"),Xt(this,"_requiredForCompleted","always"),Xt(this,"_requiredForIncomplete","always"),Xt(this,"_wasSkipped",!1),Xt(this,"_attemptProgressStatus",!1),Xt(this,"_wasAutoCompleted",!1),Xt(this,"_wasAutoSatisfied",!1),Xt(this,"_completedByMeasure",!1),Xt(this,"_minProgressMeasure",1),Xt(this,"_progressWeight",1),Xt(this,"_attemptCompletionAmountStatus",!1),this._id=id,this._title=e,this._sequencingControls=new Je,this._sequencingRules=new Re,this._rollupRules=new Jt,this._primaryObjective=null,this._objectives=[]}initialize(){super.initialize();for(const e of this._children)e.initialize()}reset(){this._initialized=!1,this._isActive=!1,this._isSuspended=!1,this._isCompleted=!1,this._completionStatus=H,this._successStatus=F,this._attemptCount=0,this._attemptCompletionAmount=0,this._attemptAbsoluteDuration="PT0H0M0S",this._attemptExperiencedDuration="PT0H0M0S",this._activityAbsoluteDuration="PT0H0M0S",this._activityExperiencedDuration="PT0H0M0S",this._attemptAbsoluteDurationValue="PT0H0M0S",this._attemptExperiencedDurationValue="PT0H0M0S",this._activityAbsoluteDurationValue="PT0H0M0S",this._activityExperiencedDurationValue="PT0H0M0S",this._activityStartTimestampUtc=null,this._attemptStartTimestampUtc=null,this._activityEndedDate=null,this._objectiveSatisfiedStatus=!1,this._objectiveSatisfiedStatusKnown=!1,this._objectiveMeasureStatus=!1,this._objectiveNormalizedMeasure=0,this._progressMeasure=0,this._progressMeasureStatus=!1,this._location="",this._attemptAbsoluteStartTime="",this._learnerPrefs=null,this._activityAttemptActive=!1,this._primaryObjective&&(this._primaryObjective.resetState(),this._primaryObjective.updateFromActivity(this));for(const e of this._objectives)e.resetState();for(const e of this._children)e.reset();this._wasSkipped=!1,this._attemptProgressStatus=!1,this._wasAutoCompleted=!1,this._wasAutoSatisfied=!1,this._completedByMeasure=!1,this._minProgressMeasure=1,this._progressWeight=1,this._attemptCompletionAmountStatus=!1,this.clearAllObjectiveDirty()}get id(){return this._id}set id(id){Vt(this._cmi_element+".id",id,ce)&&(this._id=id)}get title(){return this._title}set title(e){Vt(this._cmi_element+".title",e,ie)&&(this._title=e)}get children(){return this._children}addChild(e){if(!(e instanceof Zt))throw new O(this._cmi_element+".children",j.TYPE_MISMATCH);e._parent=this,this._children.push(e)}setChildOrder(e){if(0===e.length)return;const t=new Map(this._children.map(e=>[e.id,e])),i=[];for(const id of e){const e=t.get(id);e&&(i.push(e),t.delete(id))}if(t.size>0)for(const e of this._children)t.has(e.id)&&(i.push(e),t.delete(e.id));i.length===this._children.length&&this._children.splice(0,this._children.length,...i)}removeChild(e){const t=this._children.indexOf(e);return-1!==t&&(this._children.splice(t,1),e._parent=null,!0)}get parent(){return this._parent}get isVisible(){return this._isVisible}set isVisible(e){this._isVisible=e}get isActive(){return this._isActive}set isActive(e){this._isActive=e}get isSuspended(){return this._isSuspended}set isSuspended(e){this._isSuspended=e}get isCompleted(){return this._isCompleted}set isCompleted(e){this._isCompleted=e,this._completionStatus=e?k:V}get completionStatus(){return this._completionStatus}set completionStatus(e){this._completionStatus=e,this._isCompleted=e===k,this.updatePrimaryObjectiveFromActivity()}get successStatus(){return this._successStatus}set successStatus(e){this._successStatus=e}get attemptCount(){return this._attemptCount}set attemptCount(e){this._attemptCount=e}get attemptCompletionAmount(){return this._attemptCompletionAmount}set attemptCompletionAmount(e){this._attemptCompletionAmount=e}incrementAttemptCount(){this._attemptCount++,this._isNewAttempt=!0;const e=this._sequencingControls;"onEachNewAttempt"!==e.selectionTiming&&"onEachNewAttempt"!==e.randomizationTiming||(this._processedChildren=null)}get objectiveSatisfiedStatus(){return this._objectiveSatisfiedStatus}set objectiveSatisfiedStatus(e){this._objectiveSatisfiedStatus!==e&&(this._objectiveSatisfiedStatus=e,this._objectiveSatisfiedStatusDirty=!0),this._objectiveSatisfiedStatusKnown=!0,this._successStatus=e?P:z,this.updatePrimaryObjectiveFromActivity()}get objectiveSatisfiedStatusKnown(){return this._objectiveSatisfiedStatusKnown}set objectiveSatisfiedStatusKnown(e){this._objectiveSatisfiedStatusKnown=e}get objectiveMeasureStatus(){return this._objectiveMeasureStatus}set objectiveMeasureStatus(e){this._objectiveMeasureStatus!==e&&(this._objectiveMeasureStatus=e,this._objectiveMeasureStatusDirty=!0),this.updatePrimaryObjectiveFromActivity()}get objectiveNormalizedMeasure(){return this._objectiveNormalizedMeasure}set objectiveNormalizedMeasure(e){this._objectiveNormalizedMeasure!==e&&(this._objectiveNormalizedMeasure=e,this._objectiveNormalizedMeasureDirty=!0),this.updatePrimaryObjectiveFromActivity()}get scaledPassingScore(){return this._scaledPassingScore}set scaledPassingScore(e){-1>e||e>1||(this._scaledPassingScore=e)}get progressMeasure(){return this._progressMeasure}set progressMeasure(e){this._progressMeasure=e,this.updatePrimaryObjectiveFromActivity()}get progressMeasureStatus(){return this._progressMeasureStatus}set progressMeasureStatus(e){this._progressMeasureStatus=e,this.updatePrimaryObjectiveFromActivity()}get location(){return this._location}set location(location){this._location=location}get attemptAbsoluteStartTime(){return this._attemptAbsoluteStartTime}set attemptAbsoluteStartTime(e){this._attemptAbsoluteStartTime=e}get learnerPrefs(){return this._learnerPrefs}set learnerPrefs(e){this._learnerPrefs=e}get activityAttemptActive(){return this._activityAttemptActive}set activityAttemptActive(e){this._activityAttemptActive=e}get isHiddenFromChoice(){return this._isHiddenFromChoice}set isHiddenFromChoice(e){this._isHiddenFromChoice=e}get isAvailable(){return this._isAvailable}set isAvailable(e){this._isAvailable=e}get attemptLimit(){return this._attemptLimit}set attemptLimit(e){this._attemptLimit=e}hasAttemptLimitExceeded(){return null!==this._attemptLimit&&this._attemptCount>=this._attemptLimit}get timeLimitDuration(){return this._timeLimitDuration}set timeLimitDuration(e){this._timeLimitDuration=e}get timeLimitAction(){return this._timeLimitAction}set timeLimitAction(e){this._timeLimitAction=e}get beginTimeLimit(){return this._beginTimeLimit}set beginTimeLimit(e){this._beginTimeLimit=e}get endTimeLimit(){return this._endTimeLimit}set endTimeLimit(e){this._endTimeLimit=e}get attemptAbsoluteDurationLimit(){return this._attemptAbsoluteDurationLimit}set attemptAbsoluteDurationLimit(e){if(null!==e&&!n(e,ne))throw new O(this._cmi_element+".attemptAbsoluteDurationLimit",j.TYPE_MISMATCH);this._attemptAbsoluteDurationLimit=e}get attemptExperiencedDuration(){return this._attemptExperiencedDuration}set attemptExperiencedDuration(e){if(!n(e,ne))throw new O(this._cmi_element+".attemptExperiencedDuration",j.TYPE_MISMATCH);this._attemptExperiencedDuration=e}get activityAbsoluteDurationLimit(){return this._activityAbsoluteDurationLimit}set activityAbsoluteDurationLimit(e){if(null!==e&&!n(e,ne))throw new O(this._cmi_element+".activityAbsoluteDurationLimit",j.TYPE_MISMATCH);this._activityAbsoluteDurationLimit=e}get activityExperiencedDuration(){return this._activityExperiencedDuration}set activityExperiencedDuration(e){if(!n(e,ne))throw new O(this._cmi_element+".activityExperiencedDuration",j.TYPE_MISMATCH);this._activityExperiencedDuration=e}get attemptAbsoluteDuration(){return this._attemptAbsoluteDurationLimit||"PT0H0M0S"}set attemptAbsoluteDuration(e){this._attemptAbsoluteDurationLimit=e}get activityAbsoluteDuration(){return this._activityAbsoluteDurationLimit||"PT0H0M0S"}set activityAbsoluteDuration(e){this._activityAbsoluteDurationLimit=e}get attemptAbsoluteDurationValue(){return this._attemptAbsoluteDurationValue}set attemptAbsoluteDurationValue(e){if(!n(e,ne))throw new O(this._cmi_element+".attemptAbsoluteDurationValue",j.TYPE_MISMATCH);this._attemptAbsoluteDurationValue=e}get attemptExperiencedDurationValue(){return this._attemptExperiencedDurationValue}set attemptExperiencedDurationValue(e){if(!n(e,ne))throw new O(this._cmi_element+".attemptExperiencedDurationValue",j.TYPE_MISMATCH);this._attemptExperiencedDurationValue=e}get activityAbsoluteDurationValue(){return this._activityAbsoluteDurationValue}set activityAbsoluteDurationValue(e){if(!n(e,ne))throw new O(this._cmi_element+".activityAbsoluteDurationValue",j.TYPE_MISMATCH);this._activityAbsoluteDurationValue=e}get activityExperiencedDurationValue(){return this._activityExperiencedDurationValue}set activityExperiencedDurationValue(e){if(!n(e,ne))throw new O(this._cmi_element+".activityExperiencedDurationValue",j.TYPE_MISMATCH);this._activityExperiencedDurationValue=e}get activityStartTimestampUtc(){return this._activityStartTimestampUtc}set activityStartTimestampUtc(timestamp){this._activityStartTimestampUtc=timestamp}get attemptStartTimestampUtc(){return this._attemptStartTimestampUtc}set attemptStartTimestampUtc(timestamp){this._attemptStartTimestampUtc=timestamp}get activityEndedDate(){return this._activityEndedDate}set activityEndedDate(e){this._activityEndedDate=e}get sequencingControls(){return this._sequencingControls}set sequencingControls(e){this._sequencingControls=e}get sequencingRules(){return this._sequencingRules}set sequencingRules(e){this._sequencingRules=e}get rollupRules(){return this._rollupRules}set rollupRules(e){this._rollupRules=e}get rollupConsiderations(){return{...this._rollupConsiderations}}set rollupConsiderations(e){this._rollupConsiderations={...e}}applyRollupConsiderations(e){this._rollupConsiderations={...this._rollupConsiderations,...e}}get requiredForSatisfied(){return this._requiredForSatisfied}set requiredForSatisfied(e){this._requiredForSatisfied=e}get requiredForNotSatisfied(){return this._requiredForNotSatisfied}set requiredForNotSatisfied(e){this._requiredForNotSatisfied=e}get requiredForCompleted(){return this._requiredForCompleted}set requiredForCompleted(e){this._requiredForCompleted=e}get requiredForIncomplete(){return this._requiredForIncomplete}set requiredForIncomplete(e){this._requiredForIncomplete=e}get wasSkipped(){return this._wasSkipped}set wasSkipped(e){this._wasSkipped=e}get attemptProgressStatus(){return this._attemptProgressStatus}set attemptProgressStatus(e){this._attemptProgressStatus=e}get wasAutoCompleted(){return this._wasAutoCompleted}set wasAutoCompleted(e){this._wasAutoCompleted=e}get wasAutoSatisfied(){return this._wasAutoSatisfied}set wasAutoSatisfied(e){this._wasAutoSatisfied=e}get completedByMeasure(){return this._completedByMeasure}set completedByMeasure(e){this._completedByMeasure=e}get minProgressMeasure(){return this._minProgressMeasure}set minProgressMeasure(e){if(0>e||e>1)throw new O(this._cmi_element+".minProgressMeasure",j.TYPE_MISMATCH);this._minProgressMeasure=e}get progressWeight(){return this._progressWeight}set progressWeight(e){if(0>e)throw new O(this._cmi_element+".progressWeight",j.TYPE_MISMATCH);this._progressWeight=e}get attemptCompletionAmountStatus(){return this._attemptCompletionAmountStatus}set attemptCompletionAmountStatus(e){this._attemptCompletionAmountStatus=e}get primaryObjective(){return this._primaryObjective}set primaryObjective(e){this._primaryObjective=e,this._primaryObjective&&(this._primaryObjective.isPrimary=!0,null!==this._primaryObjective.minNormalizedMeasure&&(this._scaledPassingScore=this._primaryObjective.minNormalizedMeasure??this._scaledPassingScore),this._primaryObjective.updateFromActivity(this)),this.syncPrimaryObjectiveCollection()}get objectives(){return this._objectives.filter(e=>e.id!==this._primaryObjective?.id)}set objectives(objectives){this._objectives=[...objectives],this.syncPrimaryObjectiveCollection()}addObjective(e){this._objectives.find(t=>t.id===e.id)||this._objectives.push(e)}syncPrimaryObjectiveCollection(){if(!this._primaryObjective)return void(this._objectives=this._objectives.filter(e=>!e.isPrimary));const e=this._objectives.findIndex(e=>e.id===this._primaryObjective?.id);0>e?this._objectives=[this._primaryObjective,...this._objectives]:this._objectives[e]=this._primaryObjective}getObjectiveById(e){if(this._primaryObjective?.id===e)return{objective:this._primaryObjective,isPrimary:!0};const t=this._objectives.find(t=>t.id===e);return t?{objective:t,isPrimary:!1}:null}getAllObjectives(){const objectives=[];this._primaryObjective&&objectives.push(this._primaryObjective);const e=this._objectives.filter(e=>e!==this._primaryObjective&&e.id!==this._primaryObjective?.id);return objectives.concat(e)}updatePrimaryObjectiveFromActivity(){this._primaryObjective&&this._primaryObjective.updateFromActivity(this)}isObjectiveDirty(e){switch(e){case"satisfiedStatus":return this._objectiveSatisfiedStatusDirty;case"normalizedMeasure":return this._objectiveNormalizedMeasureDirty;case"measureStatus":return this._objectiveMeasureStatusDirty}}clearObjectiveDirty(e){switch(e){case"satisfiedStatus":this._objectiveSatisfiedStatusDirty=!1;break;case"normalizedMeasure":this._objectiveNormalizedMeasureDirty=!1;break;case"measureStatus":this._objectiveMeasureStatusDirty=!1}}clearAllObjectiveDirty(){this._objectiveSatisfiedStatusDirty=!1,this._objectiveNormalizedMeasureDirty=!1,this._objectiveMeasureStatusDirty=!1}setPrimaryObjectiveState(e,t,i,s,r,n){this._objectiveSatisfiedStatus!==e&&(this._objectiveSatisfiedStatus=e,this._objectiveSatisfiedStatusDirty=!0),this._objectiveSatisfiedStatusKnown=!0,this._objectiveMeasureStatus!==t&&(this._objectiveMeasureStatus=t,this._objectiveMeasureStatusDirty=!0),this._objectiveNormalizedMeasure!==i&&(this._objectiveNormalizedMeasure=i,this._objectiveNormalizedMeasureDirty=!0),this._progressMeasure=s,this._progressMeasureStatus=r,this._completionStatus=n,this._primaryObjective&&(this._primaryObjective.satisfiedStatus=e,this._primaryObjective.measureStatus=t,this._primaryObjective.normalizedMeasure=i,this._primaryObjective.progressMeasure=s,this._primaryObjective.progressMeasureStatus=r,this._primaryObjective.completionStatus=n)}getObjectiveStateSnapshot(){return{primary:this._primaryObjective?{id:this._primaryObjective.id,satisfiedStatus:this.objectiveSatisfiedStatus,measureStatus:this.objectiveMeasureStatus,normalizedMeasure:this.objectiveNormalizedMeasure,progressMeasure:this.progressMeasure??0,progressMeasureStatus:this.progressMeasureStatus,progressStatus:this._primaryObjective.progressStatus,completionStatus:this.completionStatus,satisfiedByMeasure:this._primaryObjective.satisfiedByMeasure,minNormalizedMeasure:this._primaryObjective.minNormalizedMeasure}:null,objectives:this._objectives.map(e=>({id:e.id,satisfiedStatus:e.satisfiedStatus,measureStatus:e.measureStatus,normalizedMeasure:e.normalizedMeasure,progressMeasure:e.progressMeasure,progressMeasureStatus:e.progressMeasureStatus,progressStatus:e.progressStatus,completionStatus:e.completionStatus,satisfiedByMeasure:e.satisfiedByMeasure,minNormalizedMeasure:e.minNormalizedMeasure}))}}applyObjectiveStateSnapshot(e){if(e.primary){const t=this.getObjectiveById(e.primary.id);if(t&&t.isPrimary){const i=e.primary;t.objective.satisfiedByMeasure=i.satisfiedByMeasure??t.objective.satisfiedByMeasure,t.objective.minNormalizedMeasure=void 0!==i.minNormalizedMeasure?i.minNormalizedMeasure:t.objective.minNormalizedMeasure,this.setPrimaryObjectiveState(i.satisfiedStatus,i.measureStatus,i.normalizedMeasure,i.progressMeasure,i.progressMeasureStatus,i.completionStatus)}}for(const t of e.objectives){const e=this.getObjectiveById(t.id);if(e&&!e.isPrimary){const i=e.objective;i.satisfiedStatus=t.satisfiedStatus,i.measureStatus=t.measureStatus,i.normalizedMeasure=t.normalizedMeasure,i.progressMeasure=t.progressMeasure,i.progressMeasureStatus=t.progressMeasureStatus,i.completionStatus=t.completionStatus,i.satisfiedByMeasure=t.satisfiedByMeasure??i.satisfiedByMeasure,i.minNormalizedMeasure=void 0!==t.minNormalizedMeasure?t.minNormalizedMeasure:i.minNormalizedMeasure}}}getAvailableChildren(){return 0===this._children.length?[]:null!==this._processedChildren?this._processedChildren:this._children}setProcessedChildren(e){this._processedChildren=e}resetProcessedChildren(){this._processedChildren=null}get isNewAttempt(){return this._isNewAttempt}set isNewAttempt(e){this._isNewAttempt=e}get launchData(){return this._launchData}set launchData(e){this._launchData=e}get credit(){return this._credit}set credit(credit){this._credit=credit}get maxTimeAllowed(){return this._maxTimeAllowed}set maxTimeAllowed(e){this._maxTimeAllowed=e}get completionThreshold(){return this._completionThreshold}set completionThreshold(e){this._completionThreshold=e}getSuspensionState(){return{id:this._id,title:this._title,isVisible:this._isVisible,isActive:this._isActive,isSuspended:this._isSuspended,isCompleted:this._isCompleted,completionStatus:this._completionStatus,successStatus:this._successStatus,attemptCount:this._attemptCount,attemptCompletionAmount:this._attemptCompletionAmount,attemptAbsoluteDuration:this._attemptAbsoluteDuration,attemptExperiencedDuration:this._attemptExperiencedDuration,activityAbsoluteDuration:this._activityAbsoluteDuration,activityExperiencedDuration:this._activityExperiencedDuration,attemptAbsoluteDurationValue:this._attemptAbsoluteDurationValue,attemptExperiencedDurationValue:this._attemptExperiencedDurationValue,activityAbsoluteDurationValue:this._activityAbsoluteDurationValue,activityExperiencedDurationValue:this._activityExperiencedDurationValue,activityStartTimestampUtc:this._activityStartTimestampUtc,attemptStartTimestampUtc:this._attemptStartTimestampUtc,objectiveSatisfiedStatus:this._objectiveSatisfiedStatus,objectiveSatisfiedStatusKnown:this._objectiveSatisfiedStatusKnown,objectiveMeasureStatus:this._objectiveMeasureStatus,objectiveNormalizedMeasure:this._objectiveNormalizedMeasure,scaledPassingScore:this._scaledPassingScore,progressMeasure:this._progressMeasure,progressMeasureStatus:this._progressMeasureStatus,location:this._location,attemptAbsoluteStartTime:this._attemptAbsoluteStartTime,activityAttemptActive:this._activityAttemptActive,isHiddenFromChoice:this._isHiddenFromChoice,isAvailable:this._isAvailable,rollupConsiderations:{...this._rollupConsiderations},wasSkipped:this._wasSkipped,attemptProgressStatus:this._attemptProgressStatus,wasAutoCompleted:this._wasAutoCompleted,wasAutoSatisfied:this._wasAutoSatisfied,completedByMeasure:this._completedByMeasure,minProgressMeasure:this._minProgressMeasure,progressWeight:this._progressWeight,attemptCompletionAmountStatus:this._attemptCompletionAmountStatus,processedChildren:this._processedChildren?this._processedChildren.map(e=>e.id):null,isNewAttempt:this._isNewAttempt,selectionCountStatus:this._sequencingControls.selectionCountStatus,reorderChildren:this._sequencingControls.reorderChildren,primaryObjective:this._primaryObjective?{id:this._primaryObjective.id,satisfiedStatus:this._primaryObjective.satisfiedStatus,measureStatus:this._primaryObjective.measureStatus,normalizedMeasure:this._primaryObjective.normalizedMeasure,progressMeasure:this._primaryObjective.progressMeasure,progressMeasureStatus:this._primaryObjective.progressMeasureStatus,completionStatus:this._primaryObjective.completionStatus,satisfiedByMeasure:this._primaryObjective.satisfiedByMeasure,minNormalizedMeasure:this._primaryObjective.minNormalizedMeasure,progressStatus:this._primaryObjective.progressStatus,mapInfo:this._primaryObjective.mapInfo}:null,objectives:this._objectives.map(e=>({id:e.id,satisfiedStatus:e.satisfiedStatus,measureStatus:e.measureStatus,normalizedMeasure:e.normalizedMeasure,progressMeasure:e.progressMeasure,progressMeasureStatus:e.progressMeasureStatus,completionStatus:e.completionStatus,satisfiedByMeasure:e.satisfiedByMeasure,minNormalizedMeasure:e.minNormalizedMeasure,progressStatus:e.progressStatus,mapInfo:e.mapInfo})),children:this._children.map(e=>e.getSuspensionState())}}restoreSuspensionState(e){if(e){if(this._isVisible=e.isVisible??this._isVisible,this._isActive=e.isActive??this._isActive,this._isSuspended=e.isSuspended??this._isSuspended,this._isCompleted=e.isCompleted??this._isCompleted,this._completionStatus=e.completionStatus??this._completionStatus,this._successStatus=e.successStatus??this._successStatus,this._attemptCount=e.attemptCount??this._attemptCount,this._attemptCompletionAmount=e.attemptCompletionAmount??this._attemptCompletionAmount,this._attemptAbsoluteDuration=e.attemptAbsoluteDuration??this._attemptAbsoluteDuration,this._attemptExperiencedDuration=e.attemptExperiencedDuration??this._attemptExperiencedDuration,this._activityAbsoluteDuration=e.activityAbsoluteDuration??this._activityAbsoluteDuration,this._activityExperiencedDuration=e.activityExperiencedDuration??this._activityExperiencedDuration,this._attemptAbsoluteDurationValue=e.attemptAbsoluteDurationValue??this._attemptAbsoluteDurationValue,this._attemptExperiencedDurationValue=e.attemptExperiencedDurationValue??this._attemptExperiencedDurationValue,this._activityAbsoluteDurationValue=e.activityAbsoluteDurationValue??this._activityAbsoluteDurationValue,this._activityExperiencedDurationValue=e.activityExperiencedDurationValue??this._activityExperiencedDurationValue,this._activityStartTimestampUtc=e.activityStartTimestampUtc??this._activityStartTimestampUtc,this._attemptStartTimestampUtc=e.attemptStartTimestampUtc??this._attemptStartTimestampUtc,this._objectiveSatisfiedStatus=e.objectiveSatisfiedStatus??this._objectiveSatisfiedStatus,this._objectiveSatisfiedStatusKnown=e.objectiveSatisfiedStatusKnown??this._objectiveSatisfiedStatusKnown,this._objectiveMeasureStatus=e.objectiveMeasureStatus??this._objectiveMeasureStatus,this._objectiveNormalizedMeasure=e.objectiveNormalizedMeasure??this._objectiveNormalizedMeasure,this._scaledPassingScore=e.scaledPassingScore??this._scaledPassingScore,this._progressMeasure=e.progressMeasure??this._progressMeasure,this._progressMeasureStatus=e.progressMeasureStatus??this._progressMeasureStatus,this._location=e.location??this._location,this._attemptAbsoluteStartTime=e.attemptAbsoluteStartTime??this._attemptAbsoluteStartTime,this._activityAttemptActive=e.activityAttemptActive??this._activityAttemptActive,this._isHiddenFromChoice=e.isHiddenFromChoice??this._isHiddenFromChoice,this._isAvailable=e.isAvailable??this._isAvailable,e.rollupConsiderations&&(this._rollupConsiderations={...e.rollupConsiderations}),this._wasSkipped=e.wasSkipped??this._wasSkipped,this._attemptProgressStatus=e.attemptProgressStatus??this._attemptProgressStatus,this._wasAutoCompleted=e.wasAutoCompleted??this._wasAutoCompleted,this._wasAutoSatisfied=e.wasAutoSatisfied??this._wasAutoSatisfied,this._completedByMeasure=e.completedByMeasure??this._completedByMeasure,this._minProgressMeasure=e.minProgressMeasure??this._minProgressMeasure,this._progressWeight=e.progressWeight??this._progressWeight,this._attemptCompletionAmountStatus=e.attemptCompletionAmountStatus??this._attemptCompletionAmountStatus,this._isNewAttempt=e.isNewAttempt??this._isNewAttempt,void 0!==e.selectionCountStatus&&(this._sequencingControls.selectionCountStatus=e.selectionCountStatus),void 0!==e.reorderChildren&&(this._sequencingControls.reorderChildren=e.reorderChildren),e.processedChildren){const t=new Map(this._children.map(e=>[e.id,e]));this._processedChildren=e.processedChildren.map(id=>t.get(id)).filter(e=>void 0!==e)}else this._processedChildren=null;if(e.primaryObjective&&this._primaryObjective&&(this._primaryObjective.satisfiedStatus=e.primaryObjective.satisfiedStatus??this._primaryObjective.satisfiedStatus,this._primaryObjective.measureStatus=e.primaryObjective.measureStatus??this._primaryObjective.measureStatus,this._primaryObjective.normalizedMeasure=e.primaryObjective.normalizedMeasure??this._primaryObjective.normalizedMeasure,this._primaryObjective.progressMeasure=e.primaryObjective.progressMeasure??this._primaryObjective.progressMeasure,this._primaryObjective.progressMeasureStatus=e.primaryObjective.progressMeasureStatus??this._primaryObjective.progressMeasureStatus,this._primaryObjective.completionStatus=e.primaryObjective.completionStatus??this._primaryObjective.completionStatus,this._primaryObjective.progressStatus=e.primaryObjective.progressStatus??this._primaryObjective.progressStatus),e.objectives)for(const t of e.objectives){const e=this._objectives.find(e=>e.id===t.id);e&&(e.satisfiedStatus=t.satisfiedStatus??e.satisfiedStatus,e.measureStatus=t.measureStatus??e.measureStatus,e.normalizedMeasure=t.normalizedMeasure??e.normalizedMeasure,e.progressMeasure=t.progressMeasure??e.progressMeasure,e.progressMeasureStatus=t.progressMeasureStatus??e.progressMeasureStatus,e.completionStatus=t.completionStatus??e.completionStatus,e.progressStatus=t.progressStatus??e.progressStatus)}if(e.children&&Array.isArray(e.children))for(let t=0;e.children.length>t&&this._children.length>t;t++){const i=e.children[t],s=this._children.find(e=>e.id===i.id);s&&s.restoreSuspensionState(i)}}}toJSON(){this.jsonString=!0;const result={id:this._id,title:this._title,isVisible:this._isVisible,isActive:this._isActive,isSuspended:this._isSuspended,isCompleted:this._isCompleted,completionStatus:this._completionStatus,successStatus:this._successStatus,attemptCount:this._attemptCount,attemptCompletionAmount:this._attemptCompletionAmount,attemptAbsoluteDuration:this._attemptAbsoluteDuration,attemptExperiencedDuration:this._attemptExperiencedDuration,activityAbsoluteDuration:this._activityAbsoluteDuration,activityExperiencedDuration:this._activityExperiencedDuration,objectiveSatisfiedStatus:this._objectiveSatisfiedStatus,objectiveSatisfiedStatusKnown:this._objectiveSatisfiedStatusKnown,objectiveMeasureStatus:this._objectiveMeasureStatus,objectiveNormalizedMeasure:this._objectiveNormalizedMeasure,rollupConsiderations:{...this._rollupConsiderations},wasSkipped:this._wasSkipped,completedByMeasure:this._completedByMeasure,minProgressMeasure:this._minProgressMeasure,progressWeight:this._progressWeight,attemptCompletionAmountStatus:this._attemptCompletionAmountStatus,hideLmsUi:[...this._hideLmsUi],auxiliaryResources:this._auxiliaryResources.map(e=>({...e})),children:this._children.map(e=>e.toJSON())};return this.jsonString=!1,result}get auxiliaryResources(){return this._auxiliaryResources.map(e=>({...e}))}set auxiliaryResources(e){const t=[],i=new Set;for(const s of e||[]){if(!s)continue;const e="string"==typeof s.resourceId?s.resourceId.trim():"",r="string"==typeof s.purpose?s.purpose.trim():"";e&&!i.has(e)&&(i.add(e),t.push({resourceId:e,purpose:r}))}this._auxiliaryResources=t}addAuxiliaryResource(e){this.auxiliaryResources=[...this._auxiliaryResources,e]}captureRollupStatus(){return{measureStatus:this._objectiveMeasureStatus,normalizedMeasure:this._objectiveNormalizedMeasure,objectiveProgressStatus:null!=this._objectiveSatisfiedStatus,objectiveSatisfiedStatus:this._objectiveSatisfiedStatus,attemptProgressStatus:this._completionStatus!==H,attemptCompletionStatus:this._completionStatus===k}}static compareRollupStatus(e,t){return e.measureStatus===t.measureStatus&&1e-4>Math.abs(e.normalizedMeasure-t.normalizedMeasure)&&e.objectiveProgressStatus===t.objectiveProgressStatus&&e.objectiveSatisfiedStatus===t.objectiveSatisfiedStatus&&e.attemptProgressStatus===t.attemptProgressStatus&&e.attemptCompletionStatus===t.attemptCompletionStatus}get hideLmsUi(){return[...this._hideLmsUi]}set hideLmsUi(e){const t=new Set(be),i=new Set,s=[];for(const r of e)t.has(r)&&!i.has(r)&&(i.add(r),s.push(r));this._hideLmsUi=s}}class ei{checkChildForRollupSubprocess(e,t,i){if(!1===e.sequencingControls.tracked)return!1;let s=!1;if("measure"===t||"objective"===t){if(!e.sequencingControls.rollupObjectiveSatisfied)return!1;s=!0;const t=e.requiredForSatisfied,r=e.requiredForNotSatisfied;"satisfied"===i&&"ifNotSuspended"===t||"notSatisfied"===i&&"ifNotSuspended"===r?(!e.attemptProgressStatus||e.attemptCount>0&&e.isSuspended)&&(s=!1):"satisfied"===i&&"ifAttempted"===t||"notSatisfied"===i&&"ifAttempted"===r?e.attemptProgressStatus&&0!==e.attemptCount||(s=!1):("satisfied"===i&&"ifNotSkipped"===t||"notSatisfied"===i&&"ifNotSkipped"===r)&&e.wasSkipped&&(s=!1)}if("progress"===t){if(!e.sequencingControls.rollupProgressCompletion)return!1;s=!0;const t=e.requiredForCompleted,r=e.requiredForIncomplete;"completed"===i&&"ifNotSuspended"===t||"incomplete"===i&&"ifNotSuspended"===r?(!e.attemptProgressStatus||e.attemptCount>0&&e.isSuspended)&&(s=!1):"completed"===i&&"ifAttempted"===t||"incomplete"===i&&"ifAttempted"===r?e.attemptProgressStatus&&0!==e.attemptCount||(s=!1):("completed"===i&&"ifNotSkipped"===t||"incomplete"===i&&"ifNotSkipped"===r)&&e.wasSkipped&&(s=!1)}return!(s&&!e.isAvailable)&&s}filterChildrenForRequirement(e,t,mode,i){return e.filter(e=>this.shouldIncludeChildForRollup(e,t,mode,i))}shouldIncludeChildForRollup(e,t,mode,i){return!(!this.checkChildForRollupSubprocess(e,t,mode)||"objective"===t&&!i.measureSatisfactionIfActive&&(e.activityAttemptActive||e.isActive))}isChildSatisfiedForRollup(e){return!0===e.objectiveSatisfiedStatus||!1!==e.objectiveSatisfiedStatus&&e.successStatus===P}isChildCompletedForRollup(e){return!("completed"!==e.completionStatus&&!e.isCompleted)}getTrackableChildren(e){return e.children.filter(e=>!1!==e.sequencingControls.tracked)}}var ti=Object.defineProperty;class ii{constructor(e){var t;((e,t,i)=>{t in e?ti(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i})(this,"childFilter"+"",t),this.childFilter=e}evaluateRollupRule(e,t){const i=e.getAvailableChildren();let s=0,r=0;for(const e of i){let i=!1;switch(t.action){case $t.SATISFIED:i=this.childFilter.checkChildForRollupSubprocess(e,"objective","satisfied");break;case $t.NOT_SATISFIED:i=this.childFilter.checkChildForRollupSubprocess(e,"objective","notSatisfied");break;case $t.COMPLETED:i=this.childFilter.checkChildForRollupSubprocess(e,"progress","completed");break;case $t.INCOMPLETE:i=this.childFilter.checkChildForRollupSubprocess(e,"progress","incomplete")}i&&(s++,this.evaluateRollupConditionsSubprocess(e,t)&&r++)}return t.consideration===Gt.ALL?s>0&&r===s:null!==t.minimumCount?r>=t.minimumCount:null!==t.minimumPercent?(s>0?r/s:0)>=t.minimumPercent:s>0&&r===s}evaluateRollupConditionsSubprocess(e,t){if(0===t.conditions.length)return!0;switch(t.consideration){case Gt.ALL:return t.conditions.every(t=>t.evaluate(e));case Gt.ANY:return t.conditions.some(t=>t.evaluate(e));case Gt.NONE:return!t.conditions.some(t=>t.evaluate(e));case Gt.AT_LEAST_COUNT:case Gt.AT_LEAST_PERCENT:return t.conditions.every(t=>t.evaluate(e));default:return!1}}evaluateRulesForAction(e,t,i){const s=t.filter(e=>e.action===i);if(0===s.length)return null;for(const t of s)if(this.evaluateRollupRule(e,t))return!0;return!1}}var si=Object.defineProperty,ri=(e,t,i)=>((e,t,i)=>t in e?si(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class ni{constructor(e,t){ri(this,"childFilter"),ri(this,"eventCallback"),this.childFilter=e,this.eventCallback=t||null}measureRollupProcess(e){if(!e.sequencingControls.rollupObjectiveSatisfied)return[];const t=e.getAvailableChildren();if(0===t.length)return[];const i=e.rollupConsiderations,s=t.filter(e=>!(!this.childFilter.checkChildForRollupSubprocess(e,"measure")||!e.objectiveMeasureStatus||null===e.objectiveNormalizedMeasure||!i.measureSatisfactionIfActive&&(e.activityAttemptActive||e.isActive)));if(0===s.length)return e.objectiveMeasureStatus=!1,[];const r=this.calculateComplexWeightedMeasure(e,s,{enableThresholdBias:!1});return e.objectiveNormalizedMeasure=r,e.objectiveMeasureStatus=!0,this.identifyActivityClusters(s)}completionMeasureRollupProcess(e){const t=e.getAvailableChildren();if(0===t.length)return;const i=t.filter(e=>e.attemptCompletionAmountStatus);if(0===i.length)return void(e.attemptCompletionAmountStatus=!1);let s=0,r=0;for(const e of i)s+=e.attemptCompletionAmount*e.progressWeight,r+=e.progressWeight;r>0&&(e.attemptCompletionAmount=s/r,e.attemptCompletionAmountStatus=!0)}calculateComplexWeightedMeasure(e,t,i){let s=0,r=0;const n=[],o=i?.enableThresholdBias??!0;for(const e of t)if(this.childFilter.checkChildForRollupSubprocess(e,"measure")&&e.objectiveMeasureStatus&&null!==e.objectiveNormalizedMeasure){const t=this.calculateAdjustedWeight(e,e.sequencingControls.objectiveMeasureWeight,o);s+=e.objectiveNormalizedMeasure*t,r+=t,n.push({childId:e.id,measure:e.objectiveNormalizedMeasure,weight:t})}return this.eventCallback?.("complex_weighting_calculated",{activityId:e.id,weightingDetails:n,totalWeight:r,totalWeightedMeasure:s,result:r>0?s/r:0}),r>0?s/r:0}calculateAdjustedWeight(e,t){let i=2>=arguments.length||void 0===arguments[2]||arguments[2],s=t;return"completed"!==e.completionStatus&&(s*=.8),e.attemptCount>1&&(s*=Math.max(.5,1-.1*(e.attemptCount-1))),e.hasAttemptLimitExceeded()&&(s*=.6),i&&e.objectiveMeasureStatus&&(s*=(e.scaledPassingScore??.7)>e.objectiveNormalizedMeasure?.95:1.05),Math.max(0,s)}identifyActivityClusters(e){const t=[];for(const i of e)i.children.length>0&&i.sequencingControls.flow&&t.push(i);return t}}var oi=Object.defineProperty,ai=(e,t,i)=>((e,t,i)=>t in e?oi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class ci{constructor(e,t,i){ai(this,"childFilter"),ai(this,"ruleEvaluator"),ai(this,"eventCallback"),this.childFilter=e,this.ruleEvaluator=t,this.eventCallback=i||null}objectiveRollupProcess(e){const t=this.objectiveRollupUsingRules(e,e.rollupRules.rules);if(null!==t)return e.objectiveSatisfiedStatus=t,void this.syncPrimaryObjectiveFromActivity(e);const i=this.objectiveRollupUsingMeasure(e);if(null!==i)return e.objectiveSatisfiedStatus=i,void this.syncPrimaryObjectiveFromActivity(e);e.objectiveSatisfiedStatus=this.objectiveRollupUsingDefault(e),this.syncPrimaryObjectiveFromActivity(e)}objectiveRollupUsingRules(e,t){const i=t.filter(e=>e.action===$t.SATISFIED),s=t.filter(e=>e.action===$t.NOT_SATISFIED);for(const t of i)if(this.ruleEvaluator.evaluateRollupRule(e,t))return!0;for(const t of s)if(this.ruleEvaluator.evaluateRollupRule(e,t))return!1;return null}objectiveRollupUsingMeasure(e){return e.objectiveMeasureStatus&&null!==e.scaledPassingScore?e.objectiveNormalizedMeasure>=e.scaledPassingScore:null}objectiveRollupUsingDefault(e){const t=e.getAvailableChildren();if(0===t.length)return!1;const i=e.rollupConsiderations,s=t.filter(e=>!(!this.childFilter.checkChildForRollupSubprocess(e,"objective","satisfied")||!this.childFilter.checkChildForRollupSubprocess(e,"objective","notSatisfied")||!i.measureSatisfactionIfActive&&(e.activityAttemptActive||e.isActive)));return 0!==s.length&&!s.some(e=>!this.childFilter.isChildSatisfiedForRollup(e))&&s.every(e=>this.childFilter.isChildSatisfiedForRollup(e))}syncPrimaryObjectiveFromActivity(e){e.primaryObjective&&(e.primaryObjective.satisfiedStatus=e.objectiveSatisfiedStatus,e.primaryObjective.satisfiedStatusKnown=e.objectiveSatisfiedStatusKnown,e.primaryObjective.measureStatus=e.objectiveMeasureStatus,e.primaryObjective.normalizedMeasure=e.objectiveNormalizedMeasure,e.primaryObjective.progressMeasure=e.progressMeasure,e.primaryObjective.progressMeasureStatus=e.progressMeasureStatus,e.primaryObjective.completionStatus=e.completionStatus)}}var li=Object.defineProperty,ui=(e,t,i)=>((e,t,i)=>t in e?li(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class hi{constructor(e,t,i,s){ui(this,"childFilter"),ui(this,"ruleEvaluator"),ui(this,"objectiveProcessor"),ui(this,"eventCallback"),this.childFilter=e,this.ruleEvaluator=t,this.objectiveProcessor=i,this.eventCallback=s||null}activityProgressRollupProcess(e){if(this.activityProgressRollupUsingMeasure(e))return;const t=e.rollupRules,i=t.rules.filter(e=>e.action===$t.COMPLETED),s=t.rules.filter(e=>e.action===$t.INCOMPLETE);for(const t of i)if(this.ruleEvaluator.evaluateRollupRule(e,t))return e.completionStatus=k,void this.objectiveProcessor.syncPrimaryObjectiveFromActivity(e);for(const t of s)if(this.ruleEvaluator.evaluateRollupRule(e,t))return e.completionStatus=V,void this.objectiveProcessor.syncPrimaryObjectiveFromActivity(e);const r=e.getAvailableChildren().filter(e=>this.childFilter.checkChildForRollupSubprocess(e,"progress","completed")&&this.childFilter.checkChildForRollupSubprocess(e,"progress","incomplete"));return 0===r.length||r.some(e=>!this.childFilter.isChildCompletedForRollup(e))?(e.completionStatus=V,void this.objectiveProcessor.syncPrimaryObjectiveFromActivity(e)):(e.completionStatus=k,void this.objectiveProcessor.syncPrimaryObjectiveFromActivity(e))}activityProgressRollupUsingMeasure(e){return!!e.completedByMeasure&&(e.attemptCompletionAmountStatus?(e.completionStatus=e.minProgressMeasure>e.attemptCompletionAmount?V:k,this.objectiveProcessor.syncPrimaryObjectiveFromActivity(e),!0):(e.completionStatus=H,this.objectiveProcessor.syncPrimaryObjectiveFromActivity(e),!0))}}var di=Object.defineProperty;class mi{constructor(e){var t;((e,t,i)=>{t in e?di(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i})(this,"eventCallback"+"",t),this.eventCallback=e||null}durationRollupProcess(e){if(0===e.children.length)return;const t=e.getAvailableChildren();if(0===t.length)return;let s=null,n=null,o=null,a=null,c=0,l=0;for(const i of t){i.activityStartTimestampUtc&&(s&&i.activityStartTimestampUtc>=s||(s=i.activityStartTimestampUtc)),i.activityEndedDate&&(o&&o>=i.activityEndedDate||(o=i.activityEndedDate));const t="PT0H0M0S"!==i.activityExperiencedDurationValue?i.activityExperiencedDurationValue:i.activityExperiencedDuration;if(t&&"PT0H0M0S"!==t&&(c+=r(t,ne)),!e.attemptStartTimestampUtc||i.attemptStartTimestampUtc&&i.attemptStartTimestampUtc>=e.attemptStartTimestampUtc){i.attemptStartTimestampUtc&&(n&&i.attemptStartTimestampUtc>=n||(n=i.attemptStartTimestampUtc)),i.activityEndedDate&&(a&&a>=i.activityEndedDate||(a=i.activityEndedDate));const e="PT0H0M0S"!==i.attemptExperiencedDurationValue?i.attemptExperiencedDurationValue:i.attemptExperiencedDuration;e&&"PT0H0M0S"!==e&&(l+=r(e,ne))}}if(null!==s){if(e.activityStartTimestampUtc=s,!e.attemptStartTimestampUtc&&n&&(e.attemptStartTimestampUtc=n),e.activityEndedDate=o,o&&e.activityStartTimestampUtc){const t=new Date(e.activityStartTimestampUtc),s=o.getTime()-t.getTime();e.activityAbsoluteDurationValue=i(Math.max(0,s/1e3))}if(a&&e.attemptStartTimestampUtc){const t=new Date(e.attemptStartTimestampUtc),s=a.getTime()-t.getTime();e.attemptAbsoluteDurationValue=i(Math.max(0,s/1e3))}e.activityExperiencedDurationValue=i(c),e.attemptExperiencedDurationValue=i(l),this.eventCallback?.("duration_rollup_completed",{activityId:e.id,activityAbsoluteDuration:e.activityAbsoluteDurationValue,attemptAbsoluteDuration:e.attemptAbsoluteDurationValue,activityExperiencedDuration:e.activityExperiencedDurationValue,attemptExperiencedDuration:e.attemptExperiencedDurationValue,childCount:t.length})}}}var pi=Object.defineProperty,_i=(e,t,i)=>((e,t,i)=>t in e?pi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class vi{constructor(e,t,i,s){_i(this,"measureProcessor"),_i(this,"objectiveProcessor"),_i(this,"progressProcessor"),_i(this,"eventCallback"),_i(this,"processingClusters",new Set),this.measureProcessor=e,this.objectiveProcessor=t,this.progressProcessor=i,this.eventCallback=s||null}processCrossClusterDependencies(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(10>i)if(this.processingClusters.has(e.id))this.eventCallback?.("cross_cluster_skip_reentrant",{activityId:e.id});else try{this.processingClusters.add(e.id),this.eventCallback?.("cross_cluster_processing_started",{activityId:e.id,clusterCount:t.length,depth:i});const s=new Map;for(const e of t)this.analyzeCrossClusterDependencies(e,s);const r=this.resolveDependencyOrder(s);for(const e of r){const s=t.find(t=>t.id===e);s&&this.processClusterRollup(s,i)}this.eventCallback?.("cross_cluster_processing_completed",{activityId:e.id,processedClusters:r.length,dependencyMap:Array.from(s.entries())})}catch(t){this.eventCallback?.("cross_cluster_processing_error",{activityId:e.id,error:t instanceof Error?t.message:t+""})}finally{this.processingClusters.delete(e.id)}else this.eventCallback?.("cross_cluster_max_depth_reached",{activityId:e.id,depth:i,maxDepth:10})}identifyActivityClusters(e){const t=[];for(const i of e)i.children.length>0&&i.sequencingControls.flow&&t.push(i);return t}analyzeCrossClusterDependencies(e,t){t.set(e.id,[])}resolveDependencyOrder(e){const t=[],i=new Set,s=id=>{if(t.includes(id))return;if(i.has(id))return void this.eventCallback?.("circular_dependency_detected",{activityId:id});i.add(id);const r=e.get(id)||[];for(const e of r)s(e);i.delete(id),t.push(id)};for(const id of Array.from(e.keys()))s(id);return t}processClusterRollup(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const i=this.measureProcessor.measureRollupProcess(e);e.sequencingControls.rollupObjectiveSatisfied&&this.objectiveProcessor.objectiveRollupProcess(e),e.sequencingControls.rollupProgressCompletion&&this.progressProcessor.activityProgressRollupProcess(e),i.length>1&&this.processCrossClusterDependencies(e,i,t+1)}}var gi=Object.defineProperty;class fi{constructor(e){var t;((e,t,i)=>{t in e?gi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i})(this,"eventCallback"+"",t),this.eventCallback=e||null}processGlobalObjectiveMapping(e,t){try{this.eventCallback?.("global_objective_processing_started",{activityId:e.id,globalObjectiveCount:t.size});const i=[];this.collectActivitiesRecursive(e,i);for(const e of i)this.syncGlobalObjectivesWritePhase(e,t);for(const e of i)this.syncGlobalObjectivesReadPhase(e,t);this.eventCallback?.("global_objective_processing_completed",{activityId:e.id,processedObjectives:t.size})}catch(t){this.eventCallback?.("global_objective_processing_error",{activityId:e.id,error:t instanceof Error?t.message:t+""})}}collectActivitiesRecursive(e,result){result.push(e);for(const t of e.children)this.collectActivitiesRecursive(t,result)}syncGlobalObjectivesWritePhase(e,t){const objectives=e.getAllObjectives();for(const i of objectives){const s=i.mapInfo.length>0?i.mapInfo:[this.createDefaultMapInfo(i)];for(const r of s){const s=this.ensureGlobalObjectiveEntry(t,r.targetObjectiveID||i.id,i);r.writeSatisfiedStatus&&i.measureStatus&&i.isDirty("satisfiedStatus")&&(s.satisfiedStatus=i.satisfiedStatus,s.satisfiedStatusKnown=!0,i.clearDirty("satisfiedStatus")),r.writeNormalizedMeasure&&i.measureStatus&&i.isDirty("normalizedMeasure")&&(s.normalizedMeasure=i.normalizedMeasure,s.normalizedMeasureKnown=!0,i.clearDirty("normalizedMeasure"),s.satisfiedByMeasure||i.satisfiedByMeasure)&&(s.satisfiedStatus=i.normalizedMeasure>=(i.minNormalizedMeasure??e.scaledPassingScore??.7),s.satisfiedStatusKnown=!0,i.clearDirty("satisfiedStatus")),r.writeCompletionStatus&&i.completionStatus!==H&&i.isDirty("completionStatus")&&(s.completionStatus=i.completionStatus,s.completionStatusKnown=!0,i.clearDirty("completionStatus")),r.writeProgressMeasure&&i.progressMeasureStatus&&i.isDirty("progressMeasure")&&(s.progressMeasure=i.progressMeasure,s.progressMeasureKnown=!0,i.clearDirty("progressMeasure")),r.updateAttemptData&&this.updateActivityAttemptData(e,s,i)}}}syncGlobalObjectivesReadPhase(e,t){const objectives=e.getAllObjectives();for(const i of objectives){const s=i.mapInfo.length>0?i.mapInfo:[this.createDefaultMapInfo(i)];for(const r of s){const s=t.get(r.targetObjectiveID||i.id);if(!s)continue;const n=i.isPrimary;r.readSatisfiedStatus&&s.satisfiedStatusKnown&&(i.satisfiedStatus=s.satisfiedStatus,i.measureStatus=!0),r.readNormalizedMeasure&&s.normalizedMeasureKnown&&(i.normalizedMeasure=s.normalizedMeasure,i.measureStatus=!0,s.satisfiedByMeasure||i.satisfiedByMeasure)&&(i.satisfiedStatus=s.normalizedMeasure>=(i.minNormalizedMeasure??e.scaledPassingScore??.7)),r.readProgressMeasure&&s.progressMeasureKnown&&(i.progressMeasure=s.progressMeasure,i.progressMeasureStatus=!0),r.readCompletionStatus&&s.completionStatusKnown&&(i.completionStatus=s.completionStatus),n&&i.applyToActivity(e),this.eventCallback?.("objective_synchronized",{activityId:e.id,objectiveId:i.id,globalState:s,synchronizationTime:(new Date).toISOString()})}}}synchronizeGlobalObjectives(e,t){const objectives=e.getAllObjectives();for(const i of objectives){const s=i.mapInfo.length>0?i.mapInfo:[this.createDefaultMapInfo(i)];for(const r of s){const s=this.ensureGlobalObjectiveEntry(t,r.targetObjectiveID||i.id,i);this.syncObjectiveState(e,i,r,s)}}}syncObjectiveState(e,t,i,s){try{const r=this.getLocalObjectiveState(e,t,t.isPrimary);i.readSatisfiedStatus&&s.satisfiedStatusKnown&&(t.satisfiedStatus=s.satisfiedStatus,t.measureStatus=!0),i.readNormalizedMeasure&&s.normalizedMeasureKnown&&(t.normalizedMeasure=s.normalizedMeasure,t.measureStatus=!0,s.satisfiedByMeasure||t.satisfiedByMeasure)&&(t.satisfiedStatus=s.normalizedMeasure>=(t.minNormalizedMeasure??e.scaledPassingScore??.7)),i.readProgressMeasure&&s.progressMeasureKnown&&(t.progressMeasure=s.progressMeasure,t.progressMeasureStatus=!0),i.readCompletionStatus&&s.completionStatusKnown&&(t.completionStatus=s.completionStatus),t.isPrimary&&t.applyToActivity(e),i.writeSatisfiedStatus&&t.measureStatus&&(s.satisfiedStatus=t.satisfiedStatus,s.satisfiedStatusKnown=!0),i.writeNormalizedMeasure&&t.measureStatus&&(s.normalizedMeasure=t.normalizedMeasure,s.normalizedMeasureKnown=!0,s.satisfiedByMeasure||t.satisfiedByMeasure)&&(s.satisfiedStatus=t.normalizedMeasure>=(t.minNormalizedMeasure??e.scaledPassingScore??.7),s.satisfiedStatusKnown=!0),i.writeCompletionStatus&&t.completionStatus!==H&&(s.completionStatus=t.completionStatus,s.completionStatusKnown=!0),i.writeProgressMeasure&&t.progressMeasureStatus&&(s.progressMeasure=t.progressMeasure,s.progressMeasureKnown=!0),i.updateAttemptData&&this.updateActivityAttemptData(e,s,t),this.eventCallback?.("objective_synchronized",{activityId:e.id,objectiveId:t.id,localState:r,globalState:s,synchronizationTime:(new Date).toISOString()})}catch(i){this.eventCallback?.("objective_sync_error",{activityId:e.id,objectiveId:t.id,error:i instanceof Error?i.message:i+"",timestamp:(new Date).toISOString()})}}ensureGlobalObjectiveEntry(e,t,i){return e.has(t)||e.set(t,{id:t,satisfiedStatus:i.satisfiedStatus,satisfiedStatusKnown:i.satisfiedStatusKnown,normalizedMeasure:i.normalizedMeasure,normalizedMeasureKnown:i.measureStatus,progressMeasure:i.progressMeasure,progressMeasureKnown:i.progressMeasureStatus,completionStatus:i.completionStatus,completionStatusKnown:i.completionStatus!==H,satisfiedByMeasure:i.satisfiedByMeasure,minNormalizedMeasure:i.minNormalizedMeasure}),e.get(t)}createDefaultMapInfo(e){return{targetObjectiveID:e.id,readSatisfiedStatus:!1,writeSatisfiedStatus:!0,readNormalizedMeasure:!1,writeNormalizedMeasure:!0,readCompletionStatus:!1,writeCompletionStatus:!0,readProgressMeasure:!1,writeProgressMeasure:!0,updateAttemptData:e.isPrimary}}getLocalObjectiveState(e,t,i){return i?{id:t.id,satisfiedStatus:e.objectiveSatisfiedStatus,measureStatus:e.objectiveMeasureStatus,normalizedMeasure:e.objectiveNormalizedMeasure,progressMeasure:e.progressMeasure,progressMeasureStatus:e.progressMeasureStatus,completionStatus:e.completionStatus,scaledPassingScore:e.scaledPassingScore}:{id:t.id,satisfiedStatus:t.satisfiedStatus,measureStatus:t.measureStatus,normalizedMeasure:t.normalizedMeasure,progressMeasure:t.progressMeasure,progressMeasureStatus:t.progressMeasureStatus,completionStatus:t.completionStatus,scaledPassingScore:t.minNormalizedMeasure}}updateActivityAttemptData(e,t,i){try{if(!i.isPrimary&&!t.updateAttemptData)return;const s=e.rollupRules.rules.some(e=>"completed"===e.action||"incomplete"===e.action);t.satisfiedStatusKnown&&t.satisfiedStatus&&(s||e.completionStatus!==H&&e.completionStatus!==V||(e.completionStatus=k),"unknown"===e.successStatus&&(e.successStatus="passed")),t.attemptCount&&t.attemptCount>e.attemptCount&&(e.attemptCount=t.attemptCount),t.progressMeasureKnown&&void 0!==t.progressMeasure&&(e.attemptCompletionAmount=t.progressMeasure),t.attemptAbsoluteDuration&&(e.attemptAbsoluteDuration=t.attemptAbsoluteDuration),t.attemptExperiencedDuration&&(e.attemptExperiencedDuration=t.attemptExperiencedDuration),t.activityAbsoluteDuration&&(e.activityAbsoluteDuration=t.activityAbsoluteDuration),t.activityExperiencedDuration&&(e.activityExperiencedDuration=t.activityExperiencedDuration),void 0!==t.location&&(e.location=t.location),void 0!==t.suspendData&&(e.isSuspended=t.suspendData.length>0)}catch(t){this.eventCallback?.("attempt_data_update_error",{activityId:e.id,error:t instanceof Error?t.message:t+"",timestamp:(new Date).toISOString()})}}}var Si=Object.defineProperty,bi=(e,t,i)=>((e,t,i)=>t in e?Si(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class yi{constructor(e,t){bi(this,"rollupStateLog",[]),bi(this,"childFilter"),bi(this,"eventCallback"),this.childFilter=e,this.eventCallback=t||null}validateRollupStateConsistency(e){try{this.eventCallback?.("rollup_validation_started",{activityId:e.id,timestamp:(new Date).toISOString()});const t=[];return this.validateActivityRollupState(e,t),t.length>0?(this.eventCallback?.("rollup_state_inconsistencies",{activityId:e.id,inconsistencies:t,count:t.length}),!1):(this.eventCallback?.("rollup_validation_completed",{activityId:e.id,result:"consistent"}),!0)}catch(t){return this.eventCallback?.("rollup_validation_error",{activityId:e.id,error:t instanceof Error?t.message:t+""}),!1}}validateActivityRollupState(e,t){const i=e.id;e.objectiveMeasureStatus&&null===e.objectiveNormalizedMeasure&&t.push(`Activity ${i}: measure status true but normalized measure is null`),e.objectiveMeasureStatus&&null!==e.scaledPassingScore&&"unknown"!==e.successStatus&&e.objectiveSatisfiedStatus!==e.objectiveNormalizedMeasure>=e.scaledPassingScore&&t.push(`Activity ${i}: satisfaction status inconsistent with measure`);const s=e.sequencingControls,r=e.getAvailableChildren();if(r.length>0&&s.rollupObjectiveSatisfied){const s=r.filter(e=>this.childFilter.checkChildForRollupSubprocess(e,"objective","satisfied")&&this.childFilter.isChildSatisfiedForRollup(e)),n=r.filter(e=>this.childFilter.checkChildForRollupSubprocess(e,"objective","notSatisfied")&&!this.childFilter.isChildSatisfiedForRollup(e));s.length>0&&0===n.length&&!1===e.objectiveSatisfiedStatus&&0===e.rollupRules.rules.length&&t.push(`Activity ${i}: all children satisfied but parent is not satisfied (no rollup rules to override)`)}if(r.length>0&&s.rollupProgressCompletion){const s=r.filter(e=>this.childFilter.checkChildForRollupSubprocess(e,"progress","completed")&&this.childFilter.isChildCompletedForRollup(e)),n=r.filter(e=>this.childFilter.checkChildForRollupSubprocess(e,"progress","incomplete")&&!this.childFilter.isChildCompletedForRollup(e));s.length>0&&0===n.length&&"completed"!==e.completionStatus&&0===e.rollupRules.rules.length&&t.push(`Activity ${i}: all children completed but parent is incomplete (no rollup rules to override)`)}for(const e of r)this.validateActivityRollupState(e,t);this.rollupStateLog.push({activity:i,timestamp:(new Date).toISOString(),state:{measureStatus:e.objectiveMeasureStatus,measure:e.objectiveNormalizedMeasure,satisfiedStatus:e.objectiveSatisfiedStatus,completionStatus:e.completionStatus}})}getRollupStateLog(){return[...this.rollupStateLog]}clearRollupStateLog(){this.rollupStateLog=[]}}var Ci=Object.defineProperty,Ai=(e,t,i)=>((e,t,i)=>t in e?Ci(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Ei{constructor(e){Ai(this,"childFilter"),Ai(this,"ruleEvaluator"),Ai(this,"measureProcessor"),Ai(this,"objectiveProcessor"),Ai(this,"progressProcessor"),Ai(this,"durationProcessor"),Ai(this,"globalObjectiveSynchronizer"),Ai(this,"stateValidator"),Ai(this,"crossClusterProcessor"),Ai(this,"eventCallback"),this.eventCallback=e||null,this.childFilter=new ei,this.ruleEvaluator=new ii(this.childFilter),this.measureProcessor=new ni(this.childFilter,e),this.objectiveProcessor=new ci(this.childFilter,this.ruleEvaluator,e),this.progressProcessor=new hi(this.childFilter,this.ruleEvaluator,this.objectiveProcessor,e),this.durationProcessor=new mi(e),this.globalObjectiveSynchronizer=new fi(e),this.stateValidator=new yi(this.childFilter,e),this.crossClusterProcessor=new vi(this.measureProcessor,this.objectiveProcessor,this.progressProcessor,e)}overallRollupProcess(e){const t=[];let i=e.parent,s=!1,r=!0;for(;i;){if(i.children.length>0&&this.durationProcessor.durationRollupProcess(i),!s){const e=i.captureRollupStatus();if(i.sequencingControls.rollupObjectiveSatisfied||i.sequencingControls.rollupProgressCompletion){if(i.children.length>0){const e=this.measureProcessor.measureRollupProcess(i);this.measureProcessor.completionMeasureRollupProcess(i),e.length>1&&this.crossClusterProcessor.processCrossClusterDependencies(i,e)}i.sequencingControls.rollupObjectiveSatisfied&&this.objectiveProcessor.objectiveRollupProcess(i),i.sequencingControls.rollupProgressCompletion&&this.progressProcessor.activityProgressRollupProcess(i)}const n=i.captureRollupStatus();r||!Zt.compareRollupStatus(e,n)||(this.eventCallback?.("rollup_optimization_activated",{activityId:i.id,depth:t.length}),s=!0),!r&&Zt.compareRollupStatus(e,n)||t.push(i)}i=i.parent,r=!1}return t}validateRollupStateConsistency(e){return this.stateValidator.validateRollupStateConsistency(e)}processGlobalObjectiveMapping(e,t){this.globalObjectiveSynchronizer.processGlobalObjectiveMapping(e,t)}calculateComplexWeightedMeasure(e,t,i){return this.measureProcessor.calculateComplexWeightedMeasure(e,t,i)}processCrossClusterDependencies(e,t){this.crossClusterProcessor.processCrossClusterDependencies(e,t)}getChildFilter(){return this.childFilter}getRuleEvaluator(){return this.ruleEvaluator}getMeasureProcessor(){return this.measureProcessor}getObjectiveProcessor(){return this.objectiveProcessor}getProgressProcessor(){return this.progressProcessor}getDurationProcessor(){return this.durationProcessor}getGlobalObjectiveSynchronizer(){return this.globalObjectiveSynchronizer}getStateValidator(){return this.stateValidator}getCrossClusterProcessor(){return this.crossClusterProcessor}}var wi=Object.defineProperty;const Mi=[k,V,H],Oi=[P,z,F];function Ri(e){return e&&Mi.includes(e)?e:null}function Ti(e){return e&&Oi.includes(e)?e:null}class ji{constructor(e){var t;((e,t,i)=>{t in e?wi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i})(this,"context"+"",t),this.context=e}transferRteData(e){if(!this.context.getCMIData)return;const t=this.context.getCMIData();t&&(this.transferPrimaryObjective(e,t),this.transferNonPrimaryObjectives(e,t),this.context.fireEvent("onRteDataTransfer",{activityId:e.id,timestamp:(new Date).toISOString()}))}transferPrimaryObjective(e,t){const i=Ri(t.completion_status);i&&i!==H&&(e.completionStatus=i,e.attemptProgressStatus=!0);let s=!1,r=!1,n=!1,o=0;const a=Ti(t.success_status);if(a&&a!==F&&(r=a===P,s=!0,e.objectiveSatisfiedStatus=r,e.objectiveSatisfiedStatusKnown=!0,e.successStatus=a,e.objectiveMeasureStatus=!0),t.score){const i=this.normalizeScore(t.score);null!==i&&(o=i,n=!0,e.objectiveNormalizedMeasure=o,e.objectiveMeasureStatus=!0)}if(e.primaryObjective&&(s||n)&&(e.primaryObjective.initializeFromCMI(s?r:e.primaryObjective.satisfiedStatus,n?o:e.primaryObjective.normalizedMeasure,s||n),s&&(e.primaryObjective.satisfiedStatusKnown=!0,e.primaryObjective.progressStatus=!0)),t.progress_measure&&""!==t.progress_measure){const i=parseFloat(t.progress_measure);isNaN(i)||(e.progressMeasure=i,e.progressMeasureStatus=!0,e.primaryObjective&&(e.primaryObjective.progressMeasure=i,e.primaryObjective.progressMeasureStatus=!0))}}transferNonPrimaryObjectives(e,t){if(t.objectives&&0!==t.objectives.length)for(const i of t.objectives){if(!i.id)continue;const t=e.getObjectiveById(i.id);if(!t||t.isPrimary)continue;const s=t.objective;let r=!1,n=!1,o=!1,a=0;const c=Ti(i.success_status);c&&c!==F&&(n=c===P,r=!0,s.progressStatus=!0);const l=Ri(i.completion_status);if(l&&l!==H&&(s.completionStatus=l),i.score){const e=this.normalizeScore(i.score);null!==e&&(a=e,o=!0)}if((r||o)&&s.initializeFromCMI(r?n:s.satisfiedStatus,o?a:s.normalizedMeasure,o),i.progress_measure&&""!==i.progress_measure){const e=parseFloat(i.progress_measure);isNaN(e)||(s.progressMeasure=e,s.progressMeasureStatus=!0)}}}normalizeScore(score){if(score.scaled&&""!==score.scaled){const e=parseFloat(score.scaled);if(!isNaN(e))return e}if(score.raw&&""!==score.raw&&score.min&&""!==score.min&&score.max&&""!==score.max){const e=parseFloat(score.raw),t=parseFloat(score.min),i=parseFloat(score.max);if(!isNaN(e)&&!isNaN(t)&&!isNaN(i)&&i>t)return Math.max(-1,Math.min(1,(e-t)/(i-t)))}return null}}var Ii=Object.defineProperty,Ni=(e,t,i)=>((e,t,i)=>t in e?Ii(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class xi{constructor(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,n=arguments.length>5?arguments[5]:void 0;Ni(this,"activityTree"),Ni(this,"sequencingProcess"),Ni(this,"rollupProcess"),Ni(this,"globalObjectiveMap"),Ni(this,"eventCallback"),Ni(this,"getCMIData"),Ni(this,"is4thEdition"),Ni(this,"invalidateCacheCallback",null),Ni(this,"_rteDataTransferService"),this.activityTree=e,this.sequencingProcess=t,this.rollupProcess=i,this.globalObjectiveMap=s,this.eventCallback=r,this.getCMIData=n?.getCMIData||null,this.is4thEdition=n?.is4thEdition||!1,this._rteDataTransferService=new ji({getCMIData:this.getCMIData,fireEvent:(e,t)=>this.fireEvent(e,t)})}setInvalidateCacheCallback(e){this.invalidateCacheCallback=e}processTerminationRequest(request){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],t=arguments.length>2?arguments[2]:void 0;const i=this.activityTree.currentActivity;if(!i)return{terminationRequest:request,sequencingRequest:null,exception:"TB.2.3-1",valid:!1};if((request===Le.EXIT||request===Le.ABANDON)&&!i.isActive)return{terminationRequest:request,sequencingRequest:null,exception:"TB.2.3-2",valid:!1};if(this.fireEvent("onTerminationRequestProcessing",{request:request,hasSequencingRequest:e,currentActivity:i.id,exitType:t}),"logout"===t)return this.fireEvent("onSequencingDebug",{message:"cmi.exit='logout' detected, treating as EXIT_ALL",activityId:i.id}),this.handleExitAll(i);switch(request){case Le.EXIT:return this.handleExit(i,e);case Le.EXIT_ALL:return this.handleExitAll(i);case Le.ABANDON:return this.handleAbandon(i,e);case Le.ABANDON_ALL:return this.handleAbandonAll(i);case Le.SUSPEND_ALL:return this.handleSuspendAll(i);default:return{terminationRequest:request,sequencingRequest:null,exception:"TB.2.3-7",valid:!1}}}handleExitTermination(e,t){return this.handleExit(e,t)}handleExit(e,t){e.children.length>0&&this.terminateDescendants(e),this.endAttempt(e);const i=this.evaluateExitRules(e);if("EXIT_ALL"===i.action)return this.handleExitAll(e);let s,r;"EXIT_PARENT"===i.action&&e.parent&&(this.activityTree.currentActivity=e.parent,this.endAttempt(this.activityTree.currentActivity));do{if(s=!1,r=this.evaluatePostConditions(this.activityTree.currentActivity||e),r.terminationRequest===Le.EXIT_ALL)return this.fireEvent("onPostConditionExitAll",{activity:(this.activityTree.currentActivity||e).id}),this.handleExitAll(this.activityTree.root);if(r.terminationRequest===Le.EXIT_PARENT){const t=this.activityTree.currentActivity||e;if(!t.parent)return{terminationRequest:Le.EXIT_PARENT,sequencingRequest:null,exception:"TB.2.3-4",valid:!1};this.activityTree.currentActivity=t.parent,this.endAttempt(this.activityTree.currentActivity),s=!0,this.fireEvent("onPostConditionExitParent",{fromActivity:t.id,toActivity:this.activityTree.currentActivity.id})}if(!s&&(this.activityTree.currentActivity||e)===this.activityTree.root&&r.sequencingRequest!==Le.RETRY)return{terminationRequest:Le.EXIT,sequencingRequest:Le.EXIT,exception:null,valid:!0}}while(s);if(!t&&!r.sequencingRequest){const t=this.activityTree.currentActivity||e;t.parent&&this.activityTree.setCurrentActivityWithoutActivation(t.parent)}return{terminationRequest:Le.EXIT,sequencingRequest:r.sequencingRequest,exception:null,valid:!0}}handleExitAll(e){return this.activityTree.root&&this.handleMultiLevelExit(this.activityTree.root),this.activityTree.root&&this.endAttempt(this.activityTree.root),this.activityTree.currentActivity=null,this.cleanupSuspendedActivity(),{terminationRequest:Le.EXIT_ALL,sequencingRequest:Le.EXIT,exception:null,valid:!0}}handleAbandon(e,t){return e.isActive=!1,t||(this.activityTree.currentActivity=e.parent),{terminationRequest:Le.ABANDON,sequencingRequest:null,exception:null,valid:!0}}handleAbandonAll(e){const t=[];let i=e;for(;null!==i;)t.push(i),i=i.parent;if(0===t.length)return{terminationRequest:Le.ABANDON_ALL,sequencingRequest:null,exception:"TB.2.3-6",valid:!1};for(const e of t)e.isActive=!1;return this.activityTree.currentActivity=null,this.cleanupSuspendedActivity(),{terminationRequest:Le.ABANDON_ALL,sequencingRequest:null,exception:null,valid:!0}}handleSuspendAll(e){const t=this.processSuspendAllRequest(e);return t.valid?{terminationRequest:Le.SUSPEND_ALL,sequencingRequest:Le.EXIT,exception:null,valid:!0}:t}processSuspendAllRequest(e){const t=this.activityTree.root;if(!e||!t)return this.fireEvent("onSuspendError",{exception:"TB.2.3-1",message:"No current activity to suspend",activity:e?.id}),{terminationRequest:Le.SUSPEND_ALL,sequencingRequest:null,exception:"TB.2.3-1",valid:!1};if(e===t&&!e.isActive&&!e.isSuspended)return this.fireEvent("onSuspendError",{exception:"TB.2.3-3",message:"Nothing to suspend (root activity)",activity:e.id}),{terminationRequest:Le.SUSPEND_ALL,sequencingRequest:null,exception:"TB.2.3-3",valid:!1};this.activityTree.suspendedActivity=e;const i=e,s=[];let r=i;for(;null!==r;)s.push(r),r=r.parent;if(0===s.length)return this.fireEvent("onSuspendError",{exception:"TB.2.3-5",message:"Activity path is empty",activity:i?.id}),{terminationRequest:Le.SUSPEND_ALL,sequencingRequest:null,exception:"TB.2.3-5",valid:!1};for(const e of s)e.isActive=!1,e.isSuspended=!0;return this.activityTree.currentActivity=t,t.isActive=!1,this.fireEvent("onActivitySuspended",{activity:i?.id,suspendedPath:s.map(e=>e.id),pathLength:s.length,timestamp:(new Date).toISOString()}),{terminationRequest:Le.SUSPEND_ALL,sequencingRequest:null,exception:null,valid:!0}}evaluateExitRules(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;t++;const i=e.sequencingRules.exitConditionRules;for(const s of i){let i;if(i="all"===s.conditionCombination?s.conditions.every(t=>t.evaluate(e)):s.conditions.some(t=>t.evaluate(e)),i){if(s.action===Ee.EXIT_PARENT)return{action:"EXIT_PARENT",recursionDepth:t};if(s.action===Ee.EXIT_ALL)return{action:"EXIT_ALL",recursionDepth:t}}}return{action:null,recursionDepth:t}}evaluatePostConditions(e){const t=this.sequencingProcess.evaluatePostConditionRules(e);return(t.sequencingRequest||t.terminationRequest)&&this.fireEvent("onPostConditionEvaluated",{activity:e.id,sequencingRequest:t.sequencingRequest,terminationRequest:t.terminationRequest,timestamp:(new Date).toISOString()}),t}handleMultiLevelExit(e){this.processExitAtLevel(e,0),this.terminateAll(e)}processExitAtLevel(e,t){const i=this.evaluateExitRules(e,0);i.action&&this.fireEvent("onMultiLevelExitAction",{activity:e.id,level:t,action:i.action});for(const i of e.children)this.processExitAtLevel(i,t+1)}cleanupSuspendedActivity(){const e=this.activityTree.suspendedActivity;if(e){let t=e;const i=[];for(;t;)t.isSuspended&&(t.isSuspended=!1,i.push(t.id)),t=t.parent;this.activityTree.suspendedActivity=null,this.fireEvent("onSuspendedActivityCleanup",{cleanedActivities:i,originalSuspendedActivity:e.id})}}terminateAll(e){for(const t of e.children)this.terminateAll(t);e.isActive&&this.endAttempt(e)}terminateDescendants(e){for(const t of e.children){t.children.length>0&&this.terminateDescendants(t);const e=this.exitActionRulesSubprocess(t);t.isActive&&("EXIT_ALL"===e&&this.terminateDescendants(t),this.endAttempt(t))}}exitActionRulesSubprocess(e){const t=e.sequencingRules.exitConditionRules;for(const i of t){let t;if(t="all"===i.conditionCombination?i.conditions.every(t=>t.evaluate(e)):i.conditions.some(t=>t.evaluate(e)),t){if(i.action===Ee.EXIT_PARENT)return"EXIT_PARENT";if(i.action===Ee.EXIT_ALL)return"EXIT_ALL"}}return null}clearSuspendedActivity(){if(this.activityTree.suspendedActivity){let e=this.activityTree.suspendedActivity;for(;e;)e.isSuspended=!1,e=e.parent;this.activityTree.suspendedActivity=null}}endAttempt(e){if(e.isActive){if(this._rteDataTransferService.transferRteData(e),e.isActive=!1,e.activityAttemptActive=!1,0===e.children.length){if(!e.isSuspended&&(e.sequencingControls.completionSetByContent||e.attemptProgressStatus||(e.attemptProgressStatus=!0,e.completionStatus="completed",e.wasAutoCompleted=!0,this.fireEvent("onAutoCompletion",{activityId:e.id,timestamp:(new Date).toISOString()})),!e.sequencingControls.objectiveSetByContent)){const t=e.primaryObjective;t&&(t.progressStatus||(t.progressStatus=!0,t.satisfiedStatus=!0,e.objectiveSatisfiedStatus=!0,e.successStatus="passed",e.wasAutoSatisfied=!0,this.fireEvent("onAutoSatisfaction",{activityId:e.id,timestamp:(new Date).toISOString()})))}}else{const t=e.children.some(e=>e.isSuspended);e.isSuspended=t}"unknown"===e.completionStatus&&(e.completionStatus="incomplete"),"unknown"===e.successStatus&&e.objectiveSatisfiedStatus&&(e.successStatus=e.objectiveSatisfiedStatus?"passed":"failed"),this.rollupProcess.processGlobalObjectiveMapping(this.activityTree.root||e,this.globalObjectiveMap),this.rollupProcess.overallRollupProcess(e),this.invalidateCacheCallback&&this.invalidateCacheCallback(),this.activityTree.root&&this.rollupProcess.validateRollupStateConsistency(this.activityTree.root),Ke.applySelectionAndRandomization(e,!1)}}fireEvent(e,t){try{this.eventCallback&&this.eventCallback(e,t)}catch(t){console.warn(`Failed to fire sequencing event ${e}: ${t}`)}}}var qi=Object.defineProperty,Di=(e,t,i)=>((e,t,i)=>t in e?qi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Li{constructor(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;Di(this,"valid"),Di(this,"targetActivity"),Di(this,"exception"),this.valid=e,this.targetActivity=t,this.exception=i}}const Pi=class e{constructor(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,n=arguments.length>5?arguments[5]:void 0;Di(this,"activityTree"),Di(this,"rollupProcess"),Di(this,"globalObjectiveMap"),Di(this,"adlNav"),Di(this,"eventCallback"),Di(this,"now"),Di(this,"defaultHideLmsUi"),Di(this,"defaultAuxiliaryResources"),Di(this,"_deliveryInProgress",!1),Di(this,"contentDelivered",!1),Di(this,"checkActivityCallback",null),Di(this,"invalidateCacheCallback",null),Di(this,"updateNavigationValidityCallback",null),Di(this,"clearSuspendedActivityCallback",null),this.activityTree=e,this.rollupProcess=t,this.globalObjectiveMap=i,this.adlNav=s,this.eventCallback=r,this.now=n?.now||(()=>new Date),this.defaultHideLmsUi=n?.defaultHideLmsUi?[...n.defaultHideLmsUi]:[],this.defaultAuxiliaryResources=n?.defaultAuxiliaryResources?n.defaultAuxiliaryResources.map(e=>({...e})):[]}setCheckActivityCallback(e){this.checkActivityCallback=e}setInvalidateCacheCallback(e){this.invalidateCacheCallback=e}setUpdateNavigationValidityCallback(e){this.updateNavigationValidityCallback=e}setClearSuspendedActivityCallback(e){this.clearSuspendedActivityCallback=e}isDeliveryInProgress(){return this._deliveryInProgress}hasContentBeenDelivered(){return this.contentDelivered}resetContentDelivered(){this.contentDelivered=!1}setContentDelivered(e){this.contentDelivered=e}processDeliveryRequest(e){if(this.fireEvent("onDeliveryRequestProcessing",{activity:e.id,timestamp:(new Date).toISOString()}),e.children.length>0)return new Li(!1,null,"DB.1.1-1");const t=this.getActivityPath(e,!0);if(0===t.length)return new Li(!1,null,"DB.1.1-2");for(const e of t)if(this.checkActivityCallback&&!this.checkActivityCallback(e))return new Li(!1,null,"DB.1.1-3");return new Li(!0,e)}contentDeliveryEnvironmentProcess(e){this._deliveryInProgress=!0;try{const t=e.isSuspended;this.activityTree.suspendedActivity&&this.clearSuspendedActivityCallback&&this.clearSuspendedActivityCallback();const i=this.getActivityPath(e,!0);for(const e of i)e.isActive||(t||e.isSuspended?e.isSuspended=!1:e.incrementAttemptCount(),e.isActive=!0,Ke.applySelectionAndRandomization(e,1>=e.attemptCount));this.activityTree.currentActivity=e,this.initializeForDelivery(e),this.setupAttemptTracking(e),this.contentDelivered=!0,this.adlNav&&this.updateNavigationValidityCallback&&this.updateNavigationValidityCallback(),this.fireDeliveryEvent(e)}finally{this._deliveryInProgress=!1}}initializeForDelivery(e){"unknown"===e.completionStatus&&0===e.children.length&&(e.completionStatus="not attempted"),null===e.objectiveSatisfiedStatus&&(e.objectiveSatisfiedStatus=!1),null===e.progressMeasure&&(e.progressMeasure=0,e.progressMeasureStatus=!1),null===e.objectiveNormalizedMeasure&&(e.objectiveNormalizedMeasure=0,e.objectiveMeasureStatus=!1),e.attemptAbsoluteDuration="PT0H0M0S",e.attemptExperiencedDuration="PT0H0M0S",e.isAvailable=!0}setupAttemptTracking(e){e.wasSkipped=!1,e.attemptAbsoluteStartTime=this.now().toISOString(),e.location||(e.location=""),e.activityAttemptActive=!0,e.learnerPrefs||(e.learnerPrefs={audioCaptioning:"0",audioLevel:"1",deliverySpeed:"1",language:""})}fireDeliveryEvent(e){try{this.eventCallback&&this.eventCallback("onActivityDelivery",e),console.debug(`Activity delivered: ${e.id} - ${e.title}`)}catch(e){console.warn("Failed to fire activity delivery event: "+e)}}getEffectiveHideLmsUi(t){const i=new Set;for(const e of this.defaultHideLmsUi)i.add(e);let s=t;for(;s;){for(const e of s.hideLmsUi)i.add(e);s=s.parent}return e.HIDE_LMS_UI_ORDER.filter(e=>i.has(e))}getEffectiveAuxiliaryResources(e){const t=new Map;for(const e of this.defaultAuxiliaryResources)e.resourceId&&t.set(e.resourceId,{...e});const i=[];let s=e;for(;s;)i.push(s),s=s.parent;for(const e of i.reverse())for(const i of e.auxiliaryResources)i.resourceId&&t.set(i.resourceId,{...i});return Array.from(t.values())}getContentActivityData(e){return{hideLmsUi:this.getEffectiveHideLmsUi(e),auxiliaryResources:this.getEffectiveAuxiliaryResources(e),location:e.location||"",credit:e.credit||"credit",launchData:e.launchData||"",maxTimeAllowed:e.attemptAbsoluteDurationLimit||"",completionThreshold:e.completionThreshold?.toString()||"",timeLimitAction:e.timeLimitAction||"continue,no message"}}getActivityPath(e){let t=1>=arguments.length||void 0===arguments[1]||arguments[1];const i=[];let s=e;for(;null!==s;)i.unshift(s),s=s.parent;return!t&&i.length>0&&i.pop(),i}fireEvent(e,t){try{this.eventCallback&&this.eventCallback(e,t)}catch(t){console.warn(`Failed to fire sequencing event ${e}: ${t}`)}}};Di(Pi,"HIDE_LMS_UI_ORDER",[...be]);let zi=Pi;var Fi=Object.defineProperty,ki=(e,t,i)=>((e,t,i)=>t in e?Fi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Vi{constructor(e,t){ki(this,"activityTree"),ki(this,"sequencingProcess"),ki(this,"cache",null),ki(this,"isDirty",!0),this.activityTree=e,this.sequencingProcess=t}predictContinueEnabled(){return this.ensureCacheValid(),this.cache?.continueEnabled??!1}predictPreviousEnabled(){return this.ensureCacheValid(),this.cache?.previousEnabled??!1}predictChoiceEnabled(e){return this.ensureCacheValid(),this.cache?.choiceEnabledMap.get(e)??!1}getAvailableChoices(){return this.ensureCacheValid(),Array.from(this.cache?.availableChoices??[])}getAllPredictions(){return this.ensureCacheValid(),{continueEnabled:this.cache?.continueEnabled??!1,previousEnabled:this.cache?.previousEnabled??!1,availableChoices:Array.from(this.cache?.availableChoices??[])}}invalidateCache(){this.isDirty=!0}updateCache(){this.isDirty=!0,this.ensureCacheValid()}ensureCacheValid(){const e=this.calculateTreeStateHash();!this.isDirty&&this.cache&&this.cache.treeStateHash===e||(this.recalculateCache(e),this.isDirty=!1)}recalculateCache(e){const t=this.activityTree.currentActivity;this.cache={continueEnabled:!1,previousEnabled:!1,availableChoices:new Set,choiceEnabledMap:new Map,treeStateHash:e},t?(this.cache.continueEnabled=this.predictContinueInternal(t),this.cache.previousEnabled=this.predictPreviousInternal(t),this.calculateAvailableChoices()):this.calculateAvailableChoicesFromRoot()}predictContinueInternal(e){return!!e.parent&&!!e.parent.sequencingControls.flow&&this.hasAvailableNextActivity(e)}hasAvailableNextActivity(e){const t=e.parent;if(!t)return!1;const i=t.children,s=i.indexOf(e);if(-1===s)return!1;if(i.length-1>s)for(let e=s+1;i.length>e;e++){const t=i[e];if(t&&this.isActivityPotentiallyDeliverableForward(t))return!0}return!(!t.parent||!t.sequencingControls.flow)&&this.hasAvailableNextActivity(t)}predictPreviousInternal(e){return!!e.parent&&!!e.parent.sequencingControls.flow&&!e.parent.sequencingControls.forwardOnly&&this.hasAvailablePreviousActivity(e)}hasAvailablePreviousActivity(e){const t=e.parent;if(!t)return!1;const i=t.children,s=i.indexOf(e);if(-1===s)return!1;if(s>0)for(let e=s-1;e>=0;e--){const t=i[e];if(t&&this.isActivityPotentiallyDeliverableBackward(t))return!0}return!(!t.parent||!t.sequencingControls.flow||t.sequencingControls.forwardOnly)&&this.hasAvailablePreviousActivity(t)}calculateAvailableChoicesFromRoot(){}calculateAvailableChoices(){this.cache&&this.activityTree.root&&this.recursivelyCheckChoiceAvailability(this.activityTree.root)}recursivelyCheckChoiceAvailability(e){if(!this.cache)return;const t=this.sequencingProcess.validateNavigationRequest(Le.CHOICE,e.id,this.activityTree.currentActivity).valid;if(this.cache.choiceEnabledMap.set(e.id,t),t&&this.cache.availableChoices.add(e.id),e.children)for(const t of e.children)this.recursivelyCheckChoiceAvailability(t)}isActivityPotentiallyDeliverableForward(e){if(e.isHiddenFromChoice||!e.isAvailable)return!1;if(0===e.children.length)return!!e.isVisible&&this.sequencingProcess.canActivityBeDelivered(e);for(const t of e.children)if(this.isActivityPotentiallyDeliverableForward(t))return!0;return!1}isActivityPotentiallyDeliverableBackward(e){if(e.isHiddenFromChoice||!e.isAvailable)return!1;if(0===e.children.length)return e.isVisible;for(const t of e.children)if(this.isActivityPotentiallyDeliverableBackward(t))return!0;return!1}calculateTreeStateHash(){const e=this.activityTree.currentActivity,t=this.activityTree.suspendedActivity;return[e?.id??"none",t?.id??"none",this.getActivityTreeStateSignature()].join("|")}getActivityTreeStateSignature(){if(!this.activityTree.root)return"empty";const e=[];return this.collectActivitySignatures(this.activityTree.root,e),e.join(":")}collectActivitySignatures(e,t){if(t.push(e.id+(e.isActive?"A":"-")+(e.isSuspended?"S":"-")+e.completionStatus+e.successStatus+e.attemptCount),e.children)for(const i of e.children)this.collectActivitySignatures(i,t)}}var Hi=Object.defineProperty,Bi=(e,t,i)=>((e,t,i)=>t in e?Hi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i),Ui=(e=>(e.START="start",e.RESUME_ALL="resumeAll",e.CONTINUE="continue",e.PREVIOUS="previous",e.CHOICE="choice",e.JUMP="jump",e.EXIT="exit",e.EXIT_ALL="exitAll",e.ABANDON="abandon",e.ABANDON_ALL="abandonAll",e.SUSPEND_ALL="suspendAll",e.NOT_VALID="_none_",e))(Ui||{});class $i{constructor(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;Bi(this,"valid"),Bi(this,"terminationRequest"),Bi(this,"sequencingRequest"),Bi(this,"targetActivityId"),Bi(this,"exception"),this.valid=e,this.terminationRequest=t,this.sequencingRequest=i,this.targetActivityId=s,this.exception=r}}class Gi{constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;Bi(this,"activityTree"),Bi(this,"sequencingProcess"),Bi(this,"adlNav"),Bi(this,"eventCallback"),Bi(this,"navigationLookAhead"),Bi(this,"getEffectiveHideLmsUiCallback",null),this.activityTree=e,this.sequencingProcess=t,this.adlNav=i,this.eventCallback=s,this.navigationLookAhead=new Vi(e,t)}setGetEffectiveHideLmsUiCallback(e){this.getEffectiveHideLmsUiCallback=e}getNavigationLookAhead(){return this.navigationLookAhead}validateRequest(request){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.fireEvent("onNavigationRequestProcessing",{request:request,targetActivityId:e});const t=this.activityTree.currentActivity;switch(request){case"start":return this.validateStartRequest(t);case"resumeAll":return this.validateResumeRequest(t);case"continue":return this.validateContinueRequest(t);case"previous":return this.validatePreviousRequest(t);case"choice":return this.validateChoiceRequest(t,e);case"jump":return this.validateJumpRequest(e);case"exit":return this.validateExitRequest(t);case"exitAll":return this.validateExitAllRequest(t);case"abandon":return this.validateAbandonRequest(t);case"abandonAll":return this.validateAbandonAllRequest(t);case"suspendAll":return this.validateSuspendAllRequest(t);default:return new $i(!1,null,null,null,"NB.2.1-18")}}validateStartRequest(e){return null!==e?new $i(!1,null,null,null,"NB.2.1-1"):new $i(!0,null,Le.START,null)}validateResumeRequest(e){return null!==e?new $i(!1,null,null,null,"NB.2.1-2"):null===this.activityTree.suspendedActivity?new $i(!1,null,null,null,"NB.2.1-3"):new $i(!0,null,Le.RESUME_ALL,null)}validateContinueRequest(e){return e?e.parent&&e.parent.sequencingControls.flow?new $i(!0,e.isActive?Le.EXIT:null,Le.CONTINUE,null):new $i(!1,null,null,null,"NB.2.1-5"):new $i(!1,null,null,null,"NB.2.1-4")}validatePreviousRequest(e){if(!e)return new $i(!1,null,null,null,"NB.2.1-6");if(!e.parent||!e.parent.sequencingControls.flow)return new $i(!1,null,null,null,"NB.2.1-7");const t=this.validateForwardOnlyConstraints(e);return t.valid?new $i(!0,e.isActive?Le.EXIT:null,Le.PREVIOUS,null):new $i(!1,null,null,null,t.exception)}validateChoiceRequest(e,t){if(!t)return new $i(!1,null,null,null,"NB.2.1-9");const i=this.activityTree.getActivity(t);if(!i)return new $i(!1,null,null,null,"NB.2.1-10");const s=this.validateChoicePath(e,i);return s.valid?new $i(!0,e?.isActive?Le.EXIT:null,Le.CHOICE,t):new $i(!1,null,null,null,s.exception)}validateJumpRequest(e){return e?new $i(!0,null,Le.JUMP,e):new $i(!1,null,null,null,"NB.2.1-12")}validateExitRequest(e){return e?new $i(!0,e===this.activityTree.root?Le.EXIT_ALL:Le.EXIT,null,null):new $i(!1,null,null,null,"NB.2.1-13")}validateExitAllRequest(e){return e?new $i(!0,Le.EXIT_ALL,null,null):new $i(!1,null,null,null,"NB.2.1-14")}validateAbandonRequest(e){return e?new $i(!0,Le.ABANDON,null,null):new $i(!1,null,null,null,"NB.2.1-15")}validateAbandonAllRequest(e){return e?new $i(!0,Le.ABANDON_ALL,null,null):new $i(!1,null,null,null,"NB.2.1-16")}validateSuspendAllRequest(e){return e?new $i(!0,Le.SUSPEND_ALL,null,null):new $i(!1,null,null,null,"NB.2.1-17")}validateChoicePath(e,t){if(t.isHiddenFromChoice)return{valid:!1,exception:"NB.2.1-11"};if(!t.isAvailable)return{valid:!1,exception:"NB.2.1-11"};if(this.isActivityDisabled(t))return{valid:!1,exception:"NB.2.1-11"};if(e){const i=this.findCommonAncestor(e,t);if(!i)return{valid:!1,exception:"NB.2.1-11"};let s=e;for(;s&&s!==i;){if(!0===s.isActive&&s.sequencingControls&&!1===s.sequencingControls.choiceExit&&t!==s&&!this.activityContains(s,t))return{valid:!1,exception:"NB.2.1-11"};s=s.parent}const r=this.validateConstrainChoice(e,t,i);if(!r.valid)return r;const n=this.validateChoiceSet(e,t,i);if(!n.valid)return n}let i=t;for(;i;){if(i.parent&&!i.parent.sequencingControls.choice)return{valid:!1,exception:"NB.2.1-11"};i=i.parent}return{valid:!0,exception:null}}validateForwardOnlyConstraints(e){if(e.parent?.sequencingControls.forwardOnly)return{valid:!1,exception:"NB.2.1-8"};let t=e.parent?.parent;for(;t;){if(t.sequencingControls.forwardOnly)return{valid:!1,exception:"NB.2.1-8"};t=t.parent}return{valid:!0,exception:null}}validateConstrainChoice(e,t,i){let s=i;for(;s;){if(s.sequencingControls?.constrainChoice||s.sequencingControls?.preventActivation){const i=this.findChildContaining(s,e);if(!i)return{valid:!1,exception:"NB.2.1-11"};if(t===s)return{valid:!1,exception:"NB.2.1-11"};const r=this.findChildContaining(s,t);if(!r)return{valid:!1,exception:"NB.2.1-11"};if(s.sequencingControls?.constrainChoice&&r!==i)return{valid:!1,exception:"NB.2.1-11"};if(s.sequencingControls?.preventActivation&&r!==i&&this.requiresNewActivation(r,t))return{valid:!1,exception:"NB.2.1-11"}}s=s.parent}return this.validateAncestors(i,e,t)}validateChoiceSet(e,t,i){if(!this.activityContains(i,t)&&t!==i)return{valid:!1,exception:"NB.2.1-11"};let s=t;for(;s&&s!==i;){if(!s.isAvailable||s.isHiddenFromChoice||this.isActivityDisabled(s))return{valid:!1,exception:"NB.2.1-11"};s=s.parent}return{valid:!0,exception:null}}isActivityDisabled(e){if(!e.isAvailable)return!0;if(e.isHiddenFromChoice)return!0;const t=this.evaluatePreConditionRulesForChoice(e);return!!t&&(t===Ee.DISABLED||t===Ee.HIDE_FROM_CHOICE||t===Ee.STOP_FORWARD_TRAVERSAL)}findChildContaining(e,t){for(const i of e.children){if(i===t)return i;if(this.activityContains(i,t))return i}return null}activityContains(e,t){let i=t;for(;i;){if(i===e)return!0;i=i.parent}return!1}findCommonAncestor(e,t){const i=[];let s=e;for(;s;)i.push(s),s=s.parent;for(s=t;s;){if(i.includes(s))return s;s=s.parent}return null}validateAncestors(e,t,i){const s=e.children;if(!s||0===s.length)return{valid:!0,exception:null};const r=this.findChildContaining(e,t),n=this.findChildContaining(e,i);if(!r||!n)return{valid:!1,exception:"NB.2.1-11"};const o=s.indexOf(r),a=s.indexOf(n);if(e.sequencingControls.forwardOnly&&o>a)return{valid:!1,exception:"NB.2.1-8"};const c=s.findIndex(e=>e?.sequencingControls.stopForwardTraversal);if(r.sequencingControls.stopForwardTraversal&&a>o)return{valid:!1,exception:"NB.2.1-11"};if(-1!==c&&a>c)return{valid:!1,exception:"NB.2.1-11"};if(a>o&&e.sequencingControls.forwardOnly)for(let e=o+1;a>e;e++){const t=s[e];if(t){if(t.sequencingControls.stopForwardTraversal)return{valid:!1,exception:"NB.2.1-11"};if(this.isActivityMandatory(t)&&!this.isActivityCompleted(t))return{valid:!1,exception:"NB.2.1-11"}}}return{valid:!0,exception:null}}requiresNewActivation(e,t){return!this.branchHasActiveAttempt(e)&&!t.activityAttemptActive&&!t.isActive}branchHasActiveAttempt(e){if(e.activityAttemptActive||e.isActive)return!0;for(const t of e.children)if(this.branchHasActiveAttempt(t))return!0;return!1}isActivityMandatory(e){if(!e.isAvailable||e.isHiddenFromChoice)return!1;const t=this.evaluatePreConditionRulesForChoice(e);return t!==Ee.SKIP&&t!==Ee.DISABLED&&t!==Ee.HIDE_FROM_CHOICE&&t!==Ee.STOP_FORWARD_TRAVERSAL&&!this.isActivityDisabled(e)&&!1!==e.mandatory}isActivityCompleted(e){if(!e.isAvailable||e.isHiddenFromChoice)return!0;const t=this.evaluatePreConditionRulesForChoice(e);return t===Ee.SKIP||t===Ee.DISABLED||t===Ee.HIDE_FROM_CHOICE||t===Ee.STOP_FORWARD_TRAVERSAL||!!this.isActivityDisabled(e)||"completed"===e.completionStatus||"passed"===e.successStatus||"passed"===e.successStatus}evaluatePreConditionRulesForChoice(e){if(!e.sequencingRules)return null;return e.sequencingRules.evaluatePreConditionRules(e)||null}updateNavigationValidity(){if(!this.adlNav||!this.activityTree.currentActivity)return;this.navigationLookAhead.invalidateCache();const e=this.navigationLookAhead.predictContinueEnabled();try{this.adlNav.request_valid.continue=e?"true":"false"}catch(e){}const t=this.navigationLookAhead.predictPreviousEnabled();try{this.adlNav.request_valid.previous=t?"true":"false"}catch(e){}const i=this.activityTree.getAllActivities(),s={},r={};for(const e of i){const t=this.validateRequest("choice",e.id);s[e.id]=t.valid?"true":"false";const i=this.validateRequest("jump",e.id);r[e.id]=i.valid?"true":"false"}try{this.adlNav.request_valid.choice=s}catch(e){}try{this.adlNav.request_valid.jump=r}catch(e){}const n=this.getEffectiveHideLmsUiCallback?this.getEffectiveHideLmsUiCallback(this.activityTree.currentActivity):[];this.fireEvent("onNavigationValidityUpdate",{continue:e,previous:t,choice:s,jump:r,hideLmsUi:n})}getAllPredictions(){return this.navigationLookAhead.getAllPredictions()}predictContinueEnabled(){return this.navigationLookAhead.predictContinueEnabled()}predictPreviousEnabled(){return this.navigationLookAhead.predictPreviousEnabled()}predictChoiceEnabled(e){return this.navigationLookAhead.predictChoiceEnabled(e)}getAvailableChoices(){return this.navigationLookAhead.getAvailableChoices()}invalidateCache(){this.navigationLookAhead.invalidateCache()}fireEvent(e,t){try{this.eventCallback&&this.eventCallback(e,t)}catch(t){console.warn(`Failed to fire sequencing event ${e}: ${t}`)}}}var Yi=Object.defineProperty,Wi=(e,t,i)=>((e,t,i)=>t in e?Yi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Ji{constructor(e){Wi(this,"globalObjectiveMap",new Map),Wi(this,"eventCallback",null),this.eventCallback=e||null}initialize(e){try{this.globalObjectiveMap.clear(),e&&this.collectObjectives(e),this.fireEvent("onGlobalObjectiveMapInitialized",{objectiveCount:this.globalObjectiveMap.size,timestamp:(new Date).toISOString()})}catch(e){this.fireEvent("onGlobalObjectiveMapError",{error:e instanceof Error?e.message:e+"",timestamp:(new Date).toISOString()})}}collectObjectives(e){const objectives=e.getAllObjectives();if(0===objectives.length){const t=e.id+"_default_objective";this.globalObjectiveMap.has(t)||this.globalObjectiveMap.set(t,{id:t,satisfiedStatus:e.objectiveSatisfiedStatus,satisfiedStatusKnown:e.objectiveMeasureStatus,normalizedMeasure:e.objectiveNormalizedMeasure,normalizedMeasureKnown:e.objectiveMeasureStatus,progressMeasure:e.progressMeasure,progressMeasureKnown:e.progressMeasureStatus,completionStatus:e.completionStatus,completionStatusKnown:e.completionStatus!==H,readSatisfiedStatus:!0,writeSatisfiedStatus:!0,readNormalizedMeasure:!0,writeNormalizedMeasure:!0,readCompletionStatus:!0,writeCompletionStatus:!0,readProgressMeasure:!0,writeProgressMeasure:!0,satisfiedByMeasure:null!==e.scaledPassingScore,minNormalizedMeasure:e.scaledPassingScore,updateAttemptData:!0})}for(const e of objectives){const t=e.mapInfo.length>0?e.mapInfo:[{targetObjectiveID:e.id,readSatisfiedStatus:!0,writeSatisfiedStatus:!0,readNormalizedMeasure:!0,writeNormalizedMeasure:!0,readProgressMeasure:!0,writeProgressMeasure:!0,readCompletionStatus:!0,writeCompletionStatus:!0,updateAttemptData:e.isPrimary}];for(const i of t){const t=i.targetObjectiveID||e.id;this.globalObjectiveMap.has(t)||this.globalObjectiveMap.set(t,{id:t,satisfiedStatus:e.satisfiedStatus,satisfiedStatusKnown:e.measureStatus,normalizedMeasure:e.normalizedMeasure,normalizedMeasureKnown:e.measureStatus,progressMeasure:e.progressMeasure,progressMeasureKnown:e.progressMeasureStatus,completionStatus:e.completionStatus,completionStatusKnown:e.completionStatus!==H,readSatisfiedStatus:i.readSatisfiedStatus??!1,writeSatisfiedStatus:i.writeSatisfiedStatus??!1,readNormalizedMeasure:i.readNormalizedMeasure??!1,writeNormalizedMeasure:i.writeNormalizedMeasure??!1,readProgressMeasure:i.readProgressMeasure??!1,writeProgressMeasure:i.writeProgressMeasure??!1,readCompletionStatus:i.readCompletionStatus??!1,writeCompletionStatus:i.writeCompletionStatus??!1,readRawScore:i.readRawScore??!1,writeRawScore:i.writeRawScore??!1,readMinScore:i.readMinScore??!1,writeMinScore:i.writeMinScore??!1,readMaxScore:i.readMaxScore??!1,writeMaxScore:i.writeMaxScore??!1,satisfiedByMeasure:e.satisfiedByMeasure,minNormalizedMeasure:e.minNormalizedMeasure,updateAttemptData:i.updateAttemptData??e.isPrimary})}}for(const t of e.children)this.collectObjectives(t)}getMap(){return this.globalObjectiveMap}getSnapshot(){return this.serialize()}restoreSnapshot(e){this.restore(e)}updateObjective(e,t){try{this.globalObjectiveMap.set(e,{...this.globalObjectiveMap.get(e),...t,lastUpdated:(new Date).toISOString()}),this.fireEvent("onGlobalObjectiveUpdated",{objectiveId:e,data:t,timestamp:(new Date).toISOString()})}catch(t){this.fireEvent("onGlobalObjectiveUpdateError",{objectiveId:e,error:t instanceof Error?t.message:t+"",timestamp:(new Date).toISOString()})}}synchronize(e,t){e&&t.processGlobalObjectiveMapping(e,this.globalObjectiveMap)}getObjective(e){return this.globalObjectiveMap.get(e)}hasObjective(e){return this.globalObjectiveMap.has(e)}getObjectiveIds(){return Array.from(this.globalObjectiveMap.keys())}getObjectiveCount(){return this.globalObjectiveMap.size}clear(){this.globalObjectiveMap.clear(),this.fireEvent("onGlobalObjectiveMapCleared",{timestamp:(new Date).toISOString()})}serialize(){const e={};return this.globalObjectiveMap.forEach((t,id)=>{e[id]={...t}}),e}restore(e){if(this.globalObjectiveMap.clear(),e){for(const[id,t]of Object.entries(e))this.globalObjectiveMap.set(id,{...t});this.fireEvent("onGlobalObjectiveMapRestored",{objectiveCount:this.globalObjectiveMap.size,timestamp:(new Date).toISOString()})}}fireEvent(e,t){try{this.eventCallback&&this.eventCallback(e,t)}catch(t){console.warn(`Failed to fire global objective event ${e}: ${t}`)}}}var Ki=Object.defineProperty,Xi=(e,t,i)=>((e,t,i)=>t in e?Ki(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Qi{constructor(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;Xi(this,"activityTree"),Xi(this,"globalObjectiveService"),Xi(this,"rollupProcess"),Xi(this,"adlNav"),Xi(this,"eventCallback"),Xi(this,"getEffectiveHideLmsUiCallback",null),Xi(this,"getEffectiveAuxiliaryResourcesCallback",null),Xi(this,"contentDeliveredGetter",null),Xi(this,"contentDeliveredSetter",null),this.activityTree=e,this.globalObjectiveService=t,this.rollupProcess=i,this.adlNav=s,this.eventCallback=r}setGetEffectiveHideLmsUiCallback(e){this.getEffectiveHideLmsUiCallback=e}setGetEffectiveAuxiliaryResourcesCallback(e){this.getEffectiveAuxiliaryResourcesCallback=e}setContentDeliveredAccessors(e,t){this.contentDeliveredGetter=e,this.contentDeliveredSetter=t}getState(){return{version:"1.0",timestamp:(new Date).toISOString(),contentDelivered:!!this.contentDeliveredGetter&&this.contentDeliveredGetter(),currentActivity:this.activityTree.currentActivity?.id||null,suspendedActivity:this.activityTree.suspendedActivity?.id||null,activityStates:this.serializeActivities(),navigationState:this.getNavigationState(),globalObjectiveMap:this.globalObjectiveService.getSnapshot()}}restoreState(e){try{if(!e||"1.0"!==e.version)return console.warn("Incompatible sequencing state version"),!1;if(this.contentDeliveredSetter&&this.contentDeliveredSetter(e.contentDelivered||!1),e.globalObjectiveMap&&this.globalObjectiveService.restoreSnapshot(e.globalObjectiveMap),e.activityStates&&this.deserializeActivities(e.activityStates),e.currentActivity){const t=this.activityTree.getActivity(e.currentActivity);t&&(this.activityTree.currentActivity=t,t.isActive=!0)}if(e.suspendedActivity){const t=this.activityTree.getActivity(e.suspendedActivity);t&&(this.activityTree.suspendedActivity=t,t.isSuspended=!0)}return e.navigationState&&this.restoreNavigationState(e.navigationState),this.activityTree.root&&this.globalObjectiveService.synchronize(this.activityTree.root,this.rollupProcess),console.debug("Sequencing state restored successfully"),!0}catch(e){return console.error("Failed to restore sequencing state: "+e),!1}}serializeActivities(){const e={},t=i=>{e[i.id]={id:i.id,title:i.title,isActive:i.isActive,isSuspended:i.isSuspended,isCompleted:i.isCompleted,completionStatus:i.completionStatus,successStatus:i.successStatus,attemptCount:i.attemptCount,attemptCompletionAmount:i.attemptCompletionAmount,attemptAbsoluteDuration:i.attemptAbsoluteDuration,attemptExperiencedDuration:i.attemptExperiencedDuration,activityAbsoluteDuration:i.activityAbsoluteDuration,activityExperiencedDuration:i.activityExperiencedDuration,objectiveSatisfiedStatus:i.objectiveSatisfiedStatus,objectiveMeasureStatus:i.objectiveMeasureStatus,objectiveNormalizedMeasure:i.objectiveNormalizedMeasure,progressMeasure:i.progressMeasure,progressMeasureStatus:i.progressMeasureStatus,isAvailable:i.isAvailable,isHiddenFromChoice:i.isHiddenFromChoice,location:i.location,attemptAbsoluteStartTime:i.attemptAbsoluteStartTime,objectives:i.getObjectiveStateSnapshot(),auxiliaryResources:i.auxiliaryResources,selectionRandomizationState:{selectionCountStatus:i.sequencingControls.selectionCountStatus,reorderChildren:i.sequencingControls.reorderChildren,childOrder:i.children.map(e=>e.id),selectedChildIds:i.children.filter(e=>e.isAvailable).map(e=>e.id),hiddenFromChoiceChildIds:i.children.filter(e=>e.isHiddenFromChoice).map(e=>e.id)}};for(const e of i.children)t(e)};return this.activityTree.root&&t(this.activityTree.root),e}deserializeActivities(e){const t=i=>{const s=e[i.id];s&&(i.isActive=s.isActive||!1,i.isSuspended=s.isSuspended||!1,i.isCompleted=s.isCompleted||!1,i.completionStatus=s.completionStatus||"unknown",i.successStatus=s.successStatus||"unknown",i.attemptCount=s.attemptCount||0,i.attemptCompletionAmount=s.attemptCompletionAmount||0,i.attemptAbsoluteDuration=s.attemptAbsoluteDuration||"PT0H0M0S",i.attemptExperiencedDuration=s.attemptExperiencedDuration||"PT0H0M0S",i.activityAbsoluteDuration=s.activityAbsoluteDuration||"PT0H0M0S",i.activityExperiencedDuration=s.activityExperiencedDuration||"PT0H0M0S",i.objectiveSatisfiedStatus=s.objectiveSatisfiedStatus||!1,i.objectiveMeasureStatus=s.objectiveMeasureStatus||!1,i.objectiveNormalizedMeasure=s.objectiveNormalizedMeasure||0,i.progressMeasure=s.progressMeasure??0,i.progressMeasureStatus=s.progressMeasureStatus||!1,i.isAvailable=!1!==s.isAvailable,i.isHiddenFromChoice=!0===s.isHiddenFromChoice,i.location=s.location||"",i.attemptAbsoluteStartTime=s.attemptAbsoluteStartTime||"",Array.isArray(s.auxiliaryResources)&&(i.auxiliaryResources=s.auxiliaryResources),s.objectives&&i.applyObjectiveStateSnapshot(s.objectives));for(const e of i.children)t(e);if(s?.selectionRandomizationState){const e=s.selectionRandomizationState,t=i.sequencingControls;void 0!==e.selectionCountStatus&&(t.selectionCountStatus=e.selectionCountStatus),void 0!==e.reorderChildren&&(t.reorderChildren=e.reorderChildren),e.childOrder&&e.childOrder.length>0&&i.setChildOrder(e.childOrder);const r=Array.isArray(e.selectedChildIds)?new Set(e.selectedChildIds):null,n=Array.isArray(e.hiddenFromChoiceChildIds)?new Set(e.hiddenFromChoiceChildIds):null;if(r||n)for(const e of i.children){if(r){const t=r.has(e.id);e.isAvailable=t,n||(e.isHiddenFromChoice=!t)}n&&(e.isHiddenFromChoice=n.has(e.id))}i.setProcessedChildren(i.children.filter(e=>e.isAvailable))}else i.resetProcessedChildren()};this.activityTree.root&&t(this.activityTree.root)}getNavigationState(){if(!this.adlNav)return null;const e=this.getEffectiveHideLmsUiCallback?this.getEffectiveHideLmsUiCallback(this.activityTree.currentActivity):[],t=this.getEffectiveAuxiliaryResourcesCallback?this.getEffectiveAuxiliaryResourcesCallback(this.activityTree.currentActivity):[];return{request:this.adlNav.request||"_none_",requestValid:{continue:this.adlNav.request_valid?.continue||"false",previous:this.adlNav.request_valid?.previous||"false",choice:"unknown",jump:"unknown",exit:this.adlNav.request_valid?.exit||"false",exitAll:this.adlNav.request_valid?.exitAll||"false",abandon:this.adlNav.request_valid?.abandon||"false",abandonAll:this.adlNav.request_valid?.abandonAll||"false",suspendAll:this.adlNav.request_valid?.suspendAll||"false"},hideLmsUi:e,auxiliaryResources:t}}restoreNavigationState(e){if(this.adlNav&&e)try{if(e.requestValid){const t=e.requestValid;this.adlNav.request_valid.continue=t.continue||"false",this.adlNav.request_valid.previous=t.previous||"false",this.adlNav.request_valid.exit=t.exit||"false",this.adlNav.request_valid.exitAll=t.exitAll||"false",this.adlNav.request_valid.abandon=t.abandon||"false",this.adlNav.request_valid.abandonAll=t.abandonAll||"false",this.adlNav.request_valid.suspendAll=t.suspendAll||"false"}}catch(e){console.warn("Could not fully restore navigation state: "+e)}}getSuspensionState(){const e={activityTree:this.activityTree.root?this.activityTree.root.getSuspensionState():null,currentActivityId:this.activityTree.currentActivity?.id||null,suspendedActivityId:this.activityTree.suspendedActivity?.id||null,globalObjectives:this.globalObjectiveService.getSnapshot(),timestamp:(new Date).toISOString()};return this.fireEvent("onSuspensionStateCaptured",{hasActivityTree:!!e.activityTree,currentActivityId:e.currentActivityId,suspendedActivityId:e.suspendedActivityId,globalObjectiveCount:Object.keys(e.globalObjectives).length,timestamp:e.timestamp}),e}restoreSuspensionState(e){if(e)try{if(e.globalObjectives&&this.globalObjectiveService.restoreSnapshot(e.globalObjectives),e.activityTree&&this.activityTree.root&&this.activityTree.root.restoreSuspensionState(e.activityTree),e.currentActivityId){const t=this.activityTree.getActivity(e.currentActivityId);t&&(this.activityTree.currentActivity=t)}if(e.suspendedActivityId){const t=this.activityTree.getActivity(e.suspendedActivityId);t&&(this.activityTree.suspendedActivity=t)}this.fireEvent("onSuspensionStateRestored",{currentActivityId:e.currentActivityId,suspendedActivityId:e.suspendedActivityId,globalObjectiveCount:e.globalObjectives?Object.keys(e.globalObjectives).length:0,originalTimestamp:e.timestamp,restoreTimestamp:(new Date).toISOString()})}catch(e){throw this.fireEvent("onSuspensionStateRestoreError",{error:e instanceof Error?e.message:e+"",timestamp:(new Date).toISOString()}),e}else this.fireEvent("onSuspensionStateRestoreError",{error:"No suspension state provided",timestamp:(new Date).toISOString()})}fireEvent(e,t){try{this.eventCallback&&this.eventCallback(e,t)}catch(t){console.warn(`Failed to fire state manager event ${e}: ${t}`)}}}var Zi=Object.defineProperty,es=(e,t,i)=>((e,t,i)=>t in e?Zi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class ts{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=arguments.length>2?arguments[2]:void 0;es(this,"activityTree"),es(this,"eventCallback"),es(this,"now"),es(this,"contentDeliveredGetter",null),this.activityTree=e,this.eventCallback=t,this.now=i?.now||(()=>new Date)}setContentDeliveredGetter(e){this.contentDeliveredGetter=e}validateTreeConsistency(e){if(!this.activityTree.root)return{consistent:!1,exception:"DB.1.1-4"};if(!this.isActivityPartOfTree(e,this.activityTree.root))return{consistent:!1,exception:"DB.1.1-5"};const t=this.getActiveActivities();if(t.length>1)return this.fireEvent("onStateInconsistency",{activeActivities:t.map(e=>e.id),targetActivity:e.id}),{consistent:!1,exception:"DB.1.1-6"};let i=e;for(;i?.parent;){if(!i.parent.children.includes(i))return{consistent:!1,exception:"DB.1.1-7"};i=i.parent}return{consistent:!0,exception:null}}validateResources(e){const t=this.getRequiredResources(e);for(const e of t)if(!this.isResourceAvailable(e))return{available:!1,exception:"DB.1.1-8"};return this.checkSystemLimits().adequate?{available:!0,exception:null}:{available:!1,exception:"DB.1.1-9"}}validateConcurrentDelivery(e){return this.contentDeliveredGetter&&this.contentDeliveredGetter()&&this.activityTree.currentActivity&&this.activityTree.currentActivity!==e?{allowed:!1,exception:"DB.1.1-10"}:this.hasPendingDeliveryRequests()?{allowed:!1,exception:"DB.1.1-11"}:this.isDeliveryLocked()?{allowed:!1,exception:"DB.1.1-12"}:{allowed:!0,exception:null}}validateDependencies(e){const t=this.getPrerequisites(e);for(const i of t)if(!this.isPrerequisiteSatisfied(i,e))return{satisfied:!1,exception:"DB.1.1-13"};const i=this.getObjectiveDependencies(e);for(const e of i)if(!this.isObjectiveDependencySatisfied(e))return{satisfied:!1,exception:"DB.1.1-14"};return this.getSequencingRuleDependencies(e).satisfied?{satisfied:!0,exception:null}:{satisfied:!1,exception:"DB.1.1-15"}}checkActivity(e){return!!e.isAvailable&&!!this.checkLimitConditions(e)}checkLimitConditions(e){let result=!0,t="";if(null!==e.attemptLimit&&e.attemptLimit>0&&(e.attemptLimit>e.attemptCount||(result=!1,t="Attempt limit exceeded")),result&&e.attemptAbsoluteDurationLimit){const i=r(e.attemptAbsoluteDurationLimit,ne);i>0&&(i>r(e.attemptAbsoluteDuration||"PT0H0M0S",ne)||(result=!1,t="Attempt duration limit exceeded"))}if(result&&e.activityAbsoluteDurationLimit){const i=r(e.activityAbsoluteDurationLimit,ne);i>0&&(i>r(e.activityAbsoluteDuration||"PT0H0M0S",ne)||(result=!1,t="Activity duration limit exceeded"))}if(result&&e.beginTimeLimit){const i=this.now();new Date(e.beginTimeLimit)>i&&(result=!1,t="Not yet time to begin")}return result&&e.endTimeLimit&&this.now()>new Date(e.endTimeLimit)&&(result=!1,t="Time limit expired"),this.fireEvent("onLimitConditionCheck",{activity:e,result:result,failureReason:t,checks:{attemptLimit:e.attemptLimit,attemptCount:e.attemptCount,attemptDurationLimit:e.attemptAbsoluteDurationLimit,activityDurationLimit:e.activityAbsoluteDurationLimit,beginTimeLimit:e.beginTimeLimit,endTimeLimit:e.endTimeLimit}}),result}isActivityPartOfTree(e,t){if(e===t)return!0;for(const i of t.children)if(this.isActivityPartOfTree(e,i))return!0;return!1}getActiveActivities(){const e=[];return this.activityTree.root&&this.collectActiveActivities(this.activityTree.root,e),e}collectActiveActivities(e,t){e.isActive&&t.push(e);for(const i of e.children)this.collectActiveActivities(i,t)}getRequiredResources(e){const t=[],i=(e.title+" "+e.location).toLowerCase();return(i.includes("video")||i.includes("multimedia"))&&t.push("video-codec"),(i.includes("audio")||i.includes("sound"))&&t.push("audio-codec"),(i.includes("flash")||i.includes(".swf"))&&t.push("flash-plugin"),(i.includes("java")||i.includes("applet"))&&t.push("java-runtime"),e.children&&e.children.length>0&&t.push("high-bandwidth"),e.attemptAbsoluteDurationLimit&&this.parseDurationToMinutes(e.attemptAbsoluteDurationLimit)>60&&t.push("extended-storage"),e.attemptLimit&&e.attemptLimit>1&&t.push("persistent-storage"),t}isResourceAvailable(e){try{switch(e){case"video-codec":return!!document.createElement("video").canPlayType;case"audio-codec":return!!document.createElement("audio").canPlayType;case"flash-plugin":return navigator.plugins&&Array.from(navigator.plugins).some(e=>"Shockwave Flash"===e.name);case"java-runtime":return navigator.plugins&&Array.from(navigator.plugins).some(e=>"Java"===e.name);case"high-bandwidth":if("connection"in navigator){const e=navigator.connection;return"4g"===e.effectiveType||e.downlink>5}return!0;case"extended-storage":default:return!0;case"persistent-storage":return"localStorage"in window&&"sessionStorage"in window}}catch(e){return!1}}checkSystemLimits(){try{let e=!0;if("memory"in performance){const t=performance.memory;t.usedJSHeapSize/t.jsHeapSizeLimit>.8&&(e=!1)}if("deviceMemory"in navigator&&2>navigator.deviceMemory&&(e=!1),"hardwareConcurrency"in navigator&&2>navigator.hardwareConcurrency&&(e=!1),"connection"in navigator){const t=navigator.connection;(t.saveData||"slow-2g"===t.effectiveType)&&(e=!1)}return{adequate:e}}catch(e){return{adequate:!0}}}hasPendingDeliveryRequests(){return this.activityTree&&this.activityTree.pendingRequests?this.activityTree.pendingRequests.length>0:!("undefined"==typeof window||!window.pendingScormRequests)&&window.pendingScormRequests>0}isDeliveryLocked(){return!(!this.activityTree||!this.activityTree.navigationLocked)||(!(!this.activityTree||!this.activityTree.terminationInProgress)||(!this.checkSystemLimits().adequate||!("undefined"==typeof window||!window.scormMaintenanceMode)))}getPrerequisites(e){const t=[];if(e.sequencingRules&&e.sequencingRules.preConditionRules)for(const i of e.sequencingRules.preConditionRules)if(i.conditions&&i.conditions.length>0)for(const s of i.conditions)s.referencedObjectiveID&&s.referencedObjectiveID!==e.id&&t.push(s.referencedObjectiveID);if(e.parent&&e.sequencingControls&&!e.sequencingControls.choiceExit){const i=e.parent.children;if(i){const s=i.indexOf(e);for(let e=0;s>e;e++){const s=i[e];s&&t.push(s.id)}}}return e.prerequisiteActivities&&t.push(...e.prerequisiteActivities),Array.from(new Set(t))}isPrerequisiteSatisfied(e,t){const i=this.activityTree.getActivity(e);return!!i&&"completed"===i.completionStatus}getObjectiveDependencies(e){const t=[],objectives=e.objectives;if(objectives&&objectives.length>0)for(const e of objectives)e.globalObjectiveID&&t.push(e.globalObjectiveID),!e.satisfiedByMeasure&&e.readNormalizedMeasure&&t.push(e.id+"_measure");if(e.sequencingRules){const i=[...e.sequencingRules.preConditionRules||[],...e.sequencingRules.exitConditionRules||[],...e.sequencingRules.postConditionRules||[]];for(const s of i)if(s.conditions&&s.conditions.length>0)for(const i of s.conditions)i.objectiveReference&&i.objectiveReference!==e.id&&t.push(i.objectiveReference)}return Array.from(new Set(t))}isObjectiveDependencySatisfied(e){if(this.activityTree&&this.activityTree.globalObjectives){const t=this.activityTree.globalObjectives[e];if(t)return!0===t.satisfied&&!0===t.statusKnown}if(e.endsWith("_measure")){const t=e.replace("_measure","");if(this.activityTree&&this.activityTree.globalObjectives){const e=this.activityTree.globalObjectives[t];if(e)return!0===e.measureKnown&&e.normalizedMeasure>=0}}const t=this.activityTree.getActivity(e);return!!t&&t.objectiveSatisfiedStatus&&t.objectiveMeasureStatus}getSequencingRuleDependencies(e){let t=!0;try{if(e.sequencingRules&&e.sequencingRules.preConditionRules)for(const i of e.sequencingRules.preConditionRules)if(i.conditions&&i.conditions.length>0)for(const s of i.conditions)switch(s.conditionType||s.condition){case"activityProgressKnown":e.progressMeasureStatus||(t=!1);break;case"objectiveStatusKnown":case"objectiveSatisfied":this.isObjectiveDependencySatisfied(s.referencedObjectiveID||e.id)||(t=!1);break;case"attemptLimitExceeded":null===e.attemptLimit&&(t=!1);break;case"timeLimitExceeded":e.attemptAbsoluteDurationLimit||e.activityAbsoluteDurationLimit||(t=!1);break;case"always":case"never":break;default:t=!1}if(e.sequencingRules&&e.sequencingRules.exitConditionRules)for(const i of e.sequencingRules.exitConditionRules)if(i.conditions&&i.conditions.length>0)for(const s of i.conditions)["objectiveStatusKnown","objectiveSatisfied"].includes(s.conditionType||s.condition)&&(this.isObjectiveDependencySatisfied(s.referencedObjectiveID||e.id)||(t=!1));if(e.rollupRules&&e.rollupRules.rules)for(const i of e.rollupRules.rules)if(i.conditions&&i.conditions.length>0&&e.children&&e.children.length>0)for(const i of e.children)if(!i.isCompleted){t=!1;break}}catch(e){t=!1}return{satisfied:t}}parseDurationToMinutes(e){return r(e,ne)/60}fireEvent(e,t){try{this.eventCallback&&this.eventCallback(e,t)}catch(t){console.warn(`Failed to fire delivery validator event ${e}: ${t}`)}}}var is=Object.defineProperty,ss=(e,t,i)=>((e,t,i)=>t in e?is(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class rs{constructor(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,n=arguments.length>5?arguments[5]:void 0;ss(this,"activityTree"),ss(this,"sequencingProcess"),ss(this,"rollupProcess"),ss(this,"adlNav"),ss(this,"eventCallback",null),ss(this,"terminationHandler"),ss(this,"deliveryHandler"),ss(this,"navigationValidityService"),ss(this,"globalObjectiveService"),ss(this,"stateManager"),ss(this,"deliveryValidator"),ss(this,"navigationLookAhead"),ss(this,"enhancedDeliveryValidation"),ss(this,"is4thEdition"),this.activityTree=e,this.sequencingProcess=t,this.rollupProcess=i,this.adlNav=s,this.eventCallback=r,this.enhancedDeliveryValidation=!0===n?.enhancedDeliveryValidation,this.is4thEdition=n?.is4thEdition||!1,this.globalObjectiveService=new Ji(r||void 0),this.globalObjectiveService.initialize(e.root);const o={};n?.now&&(o.now=n.now),this.deliveryValidator=new ts(e,r,o);const a={};n?.getCMIData&&(a.getCMIData=n.getCMIData),void 0!==n?.is4thEdition&&(a.is4thEdition=n.is4thEdition),this.terminationHandler=new xi(e,t,i,this.globalObjectiveService.getMap(),r,a);const c={};n?.now&&(c.now=n.now),n?.defaultHideLmsUi&&(c.defaultHideLmsUi=n.defaultHideLmsUi),n?.defaultAuxiliaryResources&&(c.defaultAuxiliaryResources=n.defaultAuxiliaryResources),this.deliveryHandler=new zi(e,i,this.globalObjectiveService.getMap(),s,r,c),this.navigationValidityService=new Gi(e,t,s,r),this.stateManager=new Qi(e,this.globalObjectiveService,i,s,r),this.navigationLookAhead=this.navigationValidityService.getNavigationLookAhead(),this.setupCallbacks()}setupCallbacks(){this.terminationHandler.setInvalidateCacheCallback(()=>{this.navigationLookAhead.invalidateCache()}),this.deliveryHandler.setCheckActivityCallback(e=>this.deliveryValidator.checkActivity(e)),this.deliveryHandler.setInvalidateCacheCallback(()=>{this.navigationLookAhead.invalidateCache()}),this.deliveryHandler.setUpdateNavigationValidityCallback(()=>{this.navigationValidityService.updateNavigationValidity()}),this.deliveryHandler.setClearSuspendedActivityCallback(()=>{this.terminationHandler.clearSuspendedActivity()}),this.deliveryValidator.setContentDeliveredGetter(()=>this.deliveryHandler.hasContentBeenDelivered()),this.navigationValidityService.setGetEffectiveHideLmsUiCallback(e=>this.deliveryHandler.getEffectiveHideLmsUi(e)),this.stateManager.setGetEffectiveHideLmsUiCallback(e=>this.deliveryHandler.getEffectiveHideLmsUi(e)),this.stateManager.setGetEffectiveAuxiliaryResourcesCallback(e=>this.deliveryHandler.getEffectiveAuxiliaryResources(e)),this.stateManager.setContentDeliveredAccessors(()=>this.deliveryHandler.hasContentBeenDelivered(),e=>this.deliveryHandler.setContentDelivered(e))}processNavigationRequest(e){let t=arguments.length>2?arguments[2]:void 0;const i=this.navigationValidityService.validateRequest(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:null);if(!i.valid)return new Li(!1,null,i.exception);if(i.terminationRequest){const s=!!i.sequencingRequest,r=this.terminationHandler.processTerminationRequest(i.terminationRequest,s,t);if(!r.valid)return new Li(!1,null,r.exception||"TB.2.3-1");if(null!==r.sequencingRequest&&(s||r.sequencingRequest!==Le.EXIT)&&(i.sequencingRequest=r.sequencingRequest),!i.sequencingRequest)return i.terminationRequest!==Le.EXIT_ALL&&i.terminationRequest!==Le.ABANDON_ALL||this.fireEvent("onSequencingSessionEnd",{reason:i.terminationRequest===Le.EXIT_ALL?"exit_all":"abandon_all",navigationRequest:e}),new Li(!0,null)}if(i.sequencingRequest){const t=this.sequencingProcess.sequencingRequestProcess(i.sequencingRequest,i.targetActivityId);if(t.endSequencingSession)return this.fireEvent("onSequencingSessionEnd",{reason:"end_of_content",exception:t.exception,navigationRequest:e}),new Li(!1,null,t.exception||"SESSION_ENDED");if(t.exception)return new Li(!1,null,t.exception);if(t.deliveryRequest===Pe.DELIVER&&t.targetActivity)return this.activityTree.root&&(this.rollupProcess.validateRollupStateConsistency(this.activityTree.root)||this.fireEvent("onSequencingDebug",{message:"Rollup state inconsistency detected before delivery",activityId:this.activityTree.root.id})),this.rollupProcess.processGlobalObjectiveMapping(t.targetActivity,this.globalObjectiveService.getMap()),this.processDelivery(t.targetActivity)}return new Li(!1,null,"OP.1-1")}processDelivery(e){if(this.enhancedDeliveryValidation){const t=this.deliveryValidator.validateTreeConsistency(e);if(!t.consistent)return new Li(!1,null,t.exception);const i=this.deliveryValidator.validateResources(e);if(!i.available)return new Li(!1,null,i.exception);const s=this.deliveryValidator.validateConcurrentDelivery(e);if(!s.allowed)return new Li(!1,null,s.exception);const r=this.deliveryValidator.validateDependencies(e);if(!r.satisfied)return new Li(!1,null,r.exception)}const t=this.deliveryHandler.processDeliveryRequest(e);return t.valid&&(this.deliveryHandler.contentDeliveryEnvironmentProcess(t.targetActivity),this.navigationLookAhead.invalidateCache(),this.activityTree.root&&this.rollupProcess.validateRollupStateConsistency(this.activityTree.root)),t}hasContentBeenDelivered(){return this.deliveryHandler.hasContentBeenDelivered()}isDeliveryInProgress(){return this.deliveryHandler.isDeliveryInProgress()}resetContentDelivered(){this.deliveryHandler.resetContentDelivered()}setContentDelivered(e){this.deliveryHandler.setContentDelivered(e)}updateNavigationValidity(){this.navigationValidityService.updateNavigationValidity()}synchronizeGlobalObjectives(){this.globalObjectiveService.synchronize(this.activityTree.root,this.rollupProcess)}getGlobalObjectiveMap(){return this.globalObjectiveService.getMap()}getGlobalObjectiveMapSnapshot(){return this.globalObjectiveService.getSnapshot()}restoreGlobalObjectiveMapSnapshot(e){this.globalObjectiveService.restoreSnapshot(e)}updateGlobalObjective(e,t){this.globalObjectiveService.updateObjective(e,t)}getSequencingState(){return this.stateManager.getState()}restoreSequencingState(e){return this.stateManager.restoreState(e)}getSuspensionState(){return this.stateManager.getSuspensionState()}restoreSuspensionState(e){this.stateManager.restoreSuspensionState(e)}getNavigationLookAhead(){return this.navigationValidityService.getAllPredictions()}predictContinueEnabled(){return this.navigationValidityService.predictContinueEnabled()}predictPreviousEnabled(){return this.navigationValidityService.predictPreviousEnabled()}predictChoiceEnabled(e){return this.navigationValidityService.predictChoiceEnabled(e)}getAvailableChoices(){return this.navigationValidityService.getAvailableChoices()}invalidateNavigationCache(){this.navigationValidityService.invalidateCache()}applyDeliveryControls(e){e.sequencingControls.completionSetByContent||e.completionStatus===H&&(e.completionStatus=k,e.wasAutoCompleted=!0),e.sequencingControls.objectiveSetByContent||e.successStatus===F&&(e.successStatus=P,e.wasAutoSatisfied=!0)}getEffectiveHideLmsUi(e){return this.deliveryHandler.getEffectiveHideLmsUi(e)}getEffectiveAuxiliaryResources(e){return this.deliveryHandler.getEffectiveAuxiliaryResources(e)}getContentActivityData(e){return this.deliveryHandler.getContentActivityData(e)}terminationRequestProcess(request,e,t){return this.terminationHandler.processTerminationRequest(request,e,t)}contentDeliveryEnvironmentProcess(e){this.deliveryHandler.contentDeliveryEnvironmentProcess(e)}endAttemptProcess(e){this.terminationHandler.endAttempt(e)}handleExitTermination(e,t){return this.terminationHandler.handleExitTermination(e,t)}fireEvent(e,t){try{this.eventCallback&&this.eventCallback(e,t)}catch(t){console.warn(`Failed to fire sequencing event ${e}: ${t}`)}}}var ns=Object.defineProperty,os=(e,t,i)=>((e,t,i)=>t in e?ns(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class as{constructor(e,cmi,adl,t,i){let s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};os(this,"sequencing"),os(this,"cmi"),os(this,"adl"),os(this,"eventService"),os(this,"loggingService"),os(this,"activityDeliveryService"),os(this,"rollupProcess"),os(this,"overallSequencingProcess",null),os(this,"sequencingProcess",null),os(this,"eventListeners",{}),os(this,"configuration"),os(this,"isInitialized",!1),os(this,"isSequencingActive",!1),os(this,"lastCMIValues",new Map),os(this,"lastSequencingResult",null),this.sequencing=e,this.cmi=cmi,this.adl=adl,this.eventService=t,this.loggingService=i,this.configuration={autoRollupOnCMIChange:!0,autoProgressOnCompletion:!1,validateNavigationRequests:!0,enableEventSystem:!0,logLevel:"info",now:()=>new Date,...s},this.activityDeliveryService=new gt(t,i,{onDeliverActivity:e=>this.handleActivityDelivery(e),onUnloadActivity:e=>this.handleActivityUnload(e),onSequencingComplete:result=>this.handleSequencingComplete(result),onSequencingError:e=>this.handleSequencingError(e)}),this.rollupProcess=new Ei,this.configuration.now&&Me.setNowProvider(this.configuration.now),this.setupCMIChangeWatchers(),this.createSequencingProcesses()}createSequencingProcesses(){try{if(this.sequencing.initialized||this.sequencing.initialize(),this.sequencing.adlNav=this.adl.nav,this.sequencing.activityTree.root){const e={};this.configuration.now&&(e.now=this.configuration.now),this.configuration.getAttemptElapsedSeconds&&(e.getAttemptElapsedSeconds=this.configuration.getAttemptElapsedSeconds),this.configuration.getActivityElapsedSeconds&&(e.getActivityElapsedSeconds=this.configuration.getActivityElapsedSeconds),this.sequencingProcess=new pt(this.sequencing.activityTree,this.sequencing.sequencingRules,this.sequencing.sequencingControls,this.adl.nav,e);const t={};this.configuration.now&&(t.now=this.configuration.now),t.defaultHideLmsUi=[...this.sequencing.hideLmsUi],this.sequencing.auxiliaryResources.length>0&&(t.defaultAuxiliaryResources=this.sequencing.auxiliaryResources.map(e=>({resourceId:e.resourceId,purpose:e.purpose}))),t.getCMIData=()=>this.getCMIDataForTransfer(),this.overallSequencingProcess=new rs(this.sequencing.activityTree,this.sequencingProcess,this.rollupProcess,this.adl.nav,(e,t)=>this.handleSequencingProcessEvent(e,t),t),this.sequencing.overallSequencingProcess=this.overallSequencingProcess,this.isInitialized=!0,this.log("info","Sequencing processes created and ready for navigation")}}catch(e){this.log("error","Failed to create sequencing processes: "+e)}}initialize(){try{return this.log("info","Initializing sequencing service for SCO session"),this.isInitialized||this.createSequencingProcesses(),this.shouldAutoStartSequencing()&&!this.isSequencingActive&&this.startSequencing(),this.initializeCMITracking(),this.fireEvent("onSequencingStart",this.sequencing.getCurrentActivity()),this.log("info","Sequencing service initialized successfully"),f}catch(e){const t="Failed to initialize sequencing service: "+e;return this.log("error",t),this.fireEvent("onSequencingError",t,"initialization"),S}}terminate(){try{return this.log("info","Terminating sequencing service"),this.triggerFinalRollup(),this.endSequencing(),this.isInitialized=!1,this.fireEvent("onSequencingEnd"),this.log("info","Sequencing service terminated successfully"),f}catch(e){const t="Failed to terminate sequencing service: "+e;return this.log("error",t),this.fireEvent("onSequencingError",t,"termination"),S}}processNavigationRequest(request,e,t){if(!this.isInitialized||!this.overallSequencingProcess)return this.log("warn",`Navigation request '${request}' ignored - sequencing not initialized`),!1;try{this.log("info",`Processing navigation request: ${request}${e?` (target: ${e})`:""}${t?` (exit: ${t})`:""}`),this.fireEvent("onNavigationRequest",request,e);const i=this.parseNavigationRequest(request);if(null===i)return this.log("warn","Invalid navigation request: "+request),!1;const s=this.overallSequencingProcess.processNavigationRequest(i,e||null,t),r={deliveryRequest:s.valid?Pe.DELIVER:Pe.DO_NOT_DELIVER,targetActivity:s.targetActivity,exception:s.exception||null,endSequencingSession:!1};return this.lastSequencingResult=r,s.valid&&s.targetActivity?(this.activityDeliveryService.processSequencingResult(r),this.overallSequencingProcess.updateNavigationValidity(),this.log("info",`Navigation request '${request}' resulted in activity delivery: ${s.targetActivity.id}`),!0):(s.exception?(this.log("warn",`Navigation request '${request}' failed: ${s.exception}`),this.fireEvent("onSequencingError",s.exception,"navigation")):this.log("info",`Navigation request '${request}' completed with no activity delivery`),s.valid)}catch(e){const t=`Error processing navigation request '${request}': ${e}`;return this.log("error",t),this.fireEvent("onSequencingError",t,"navigation"),!1}}triggerRollupOnCMIChange(e,t,i){if(this.configuration.autoRollupOnCMIChange&&this.isInitialized&&["cmi.completion_status","cmi.success_status","cmi.score.scaled","cmi.score.raw","cmi.score.min","cmi.score.max","cmi.progress_measure","cmi.objectives.n.success_status","cmi.objectives.n.completion_status","cmi.objectives.n.score.scaled"].some(t=>e.startsWith(t)))try{this.log("debug",`Triggering rollup due to CMI change: ${e} = ${i} (was ${t})`);const s=this.sequencing.getCurrentActivity();if(!s)return void this.log("debug","No current activity for rollup");this.updateActivityFromCMI(s),this.rollupProcess.overallRollupProcess(s),this.overallSequencingProcess&&this.overallSequencingProcess.synchronizeGlobalObjectives(),this.overallSequencingProcess&&this.overallSequencingProcess.updateNavigationValidity(),this.fireEvent("onRollupComplete",s),this.log("debug","Rollup completed for activity: "+s.id)}catch(e){const t="Error during rollup on CMI change: "+e;this.log("error",t),this.fireEvent("onSequencingError",t,"rollup")}}setEventListeners(e){this.eventListeners={...this.eventListeners,...e},this.log("debug","Sequencing event listeners updated")}updateConfiguration(e){this.configuration={...this.configuration,...e},this.log("debug","Sequencing configuration updated")}getSequencingState(){return{isInitialized:this.isInitialized,isActive:this.isSequencingActive,currentActivity:this.sequencing.getCurrentActivity(),rootActivity:this.sequencing.getRootActivity(),lastSequencingResult:this.lastSequencingResult}}getOverallSequencingProcess(){return this.overallSequencingProcess}isDeliveryInProgress(){return this.overallSequencingProcess?.isDeliveryInProgress()??!1}setupCMIChangeWatchers(){}initializeCMITracking(){this.lastCMIValues.set("cmi.completion_status",this.cmi.completion_status),this.lastCMIValues.set("cmi.success_status",this.cmi.success_status),this.lastCMIValues.set("cmi.progress_measure",this.cmi.progress_measure),this.cmi.score&&(this.lastCMIValues.set("cmi.score.scaled",this.cmi.score.scaled),this.lastCMIValues.set("cmi.score.raw",this.cmi.score.raw))}shouldAutoStartSequencing(){return!(!this.sequencing.activityTree.root||this.sequencing.getCurrentActivity())}startSequencing(){if(this.overallSequencingProcess)try{this.processNavigationRequest("start")&&(this.isSequencingActive=!0,this.log("info","Automatic sequencing started"))}catch(e){this.log("error","Failed to start automatic sequencing: "+e)}}endSequencing(){this.isSequencingActive=!1,this.activityDeliveryService.reset()}triggerFinalRollup(){try{const e=this.sequencing.getCurrentActivity();e&&(this.updateActivityFromCMI(e),this.rollupProcess.overallRollupProcess(e),this.overallSequencingProcess&&this.overallSequencingProcess.synchronizeGlobalObjectives(),this.log("info","Final rollup completed"))}catch(e){this.log("error","Error during final rollup: "+e)}}updateActivityFromCMI(e){if("unknown"!==this.cmi.completion_status&&(e.completionStatus=this.cmi.completion_status,e.attemptProgressStatus=!0),"unknown"!==this.cmi.success_status&&(e.successStatus=this.cmi.success_status,e.objectiveSatisfiedStatus="passed"===this.cmi.success_status,e.objectiveMeasureStatus=!0,e.primaryObjective&&(e.primaryObjective.progressStatus=!0)),""!==this.cmi.progress_measure){const t=parseFloat(this.cmi.progress_measure);isNaN(t)||(e.progressMeasure=t,e.progressMeasureStatus=!0)}if(this.cmi.score&&""!==this.cmi.score.scaled){const t=parseFloat(this.cmi.score.scaled);isNaN(t)||(e.objectiveNormalizedMeasure=t,e.objectiveMeasureStatus=!0,e.primaryObjective&&(e.primaryObjective.progressStatus=!0))}e.primaryObjective&&e.primaryObjective.updateFromActivity(e)}getCMIDataForTransfer(){const e={completion_status:this.cmi.completion_status,success_status:this.cmi.success_status,progress_measure:this.cmi.progress_measure,score:{scaled:this.cmi.score?.scaled||"",raw:this.cmi.score?.raw||"",min:this.cmi.score?.min||"",max:this.cmi.score?.max||""},objectives:[]};if(this.cmi.objectives&&this.cmi.objectives.childArray)for(const t of this.cmi.objectives.childArray){const i=t;i.id&&e.objectives.push({id:i.id,success_status:i.success_status,completion_status:i.completion_status,progress_measure:i.progress_measure,score:{scaled:i.score?.scaled||"",raw:i.score?.raw||"",min:i.score?.min||"",max:i.score?.max||""}})}return e}parseNavigationRequest(request){let e=request;if(e.startsWith("_")&&"_none_"!==e&&(e=e.substring(1)),request.includes("choice"))return Ui.CHOICE;if(request.includes("jump"))return Ui.JUMP;switch(e){case"start":return Ui.START;case"resumeAll":return Ui.RESUME_ALL;case"continue":return Ui.CONTINUE;case"previous":return Ui.PREVIOUS;case"exit":return Ui.EXIT;case"exitAll":return Ui.EXIT_ALL;case"abandon":return Ui.ABANDON;case"abandonAll":return Ui.ABANDON_ALL;case"suspendAll":return Ui.SUSPEND_ALL;case"_none_":return Ui.NOT_VALID;default:return null}}handleActivityDelivery(e){this.log("info",`Activity delivered: ${e.id} - ${e.title}`),this.fireEvent("onActivityDelivery",e)}handleActivityUnload(e){this.log("info",`Activity unloaded: ${e.id} - ${e.title}`),this.fireEvent("onActivityUnload",e)}handleSequencingComplete(result){this.log("debug","Sequencing completed",result)}handleSequencingError(e){this.log("error","Sequencing error: "+e),this.fireEvent("onSequencingError",e,"sequencing")}fireEvent(e){if(this.configuration.enableEventSystem){for(var t=arguments.length,i=Array(t>1?t-1:0),s=1;t>s;s++)i[s-1]=arguments[s];"onSequencingDebug"!==e&&this.fireDebugEvent(e+" fired",{eventType:e,argsLength:i.length});try{const t=this.eventListeners[e];if(t&&"function"==typeof t)try{t(...i),this.log("debug",`Internal listener for ${e} executed successfully`)}catch(t){this.log("error",`Internal listener for ${e} failed: ${t}`)}try{this.eventService.processListeners("Sequencing."+e,i[0],...i.slice(1)),this.log("debug",`Event service listeners for ${e} processed`)}catch(t){this.log("warn",`Event service failed for ${e}: ${t}`)}try{if("undefined"!=typeof window&&window.scormSequencingEvents){const t=window.scormSequencingEvents;t[e]&&"function"==typeof t[e]&&(t[e](...i),this.log("debug",`Global listener for ${e} executed`))}}catch(t){this.log("warn",`Global listener for ${e} failed: ${t}`)}}catch(t){this.log("error",`Critical error firing event ${e}: ${t}`)}}}fireDebugEvent(e,t){try{const i=this.eventListeners.onSequencingDebug;i&&"function"==typeof i&&i(e,{timestamp:(new Date).toISOString(),...t});try{this.eventService.processListeners("Sequencing.onSequencingDebug",e,{timestamp:(new Date).toISOString(),...t})}catch(e){}}catch(e){console.debug("Debug event failed: "+e)}}fireActivityAttemptStart(e){this.fireEvent("onActivityAttemptStart",e),this.fireDebugEvent("Activity attempt started",{activityId:e.id,title:e.title,attemptCount:e.attemptCount})}fireActivityAttemptEnd(e){this.fireEvent("onActivityAttemptEnd",e),this.fireDebugEvent("Activity attempt ended",{activityId:e.id,title:e.title,completionStatus:e.completionStatus,successStatus:e.successStatus})}fireLimitConditionCheck(e,result){this.fireEvent("onLimitConditionCheck",e,result),this.fireDebugEvent("Limit condition check",{activityId:e.id,result:result,attemptCount:e.attemptCount,attemptLimit:e.attemptLimit})}fireNavigationValidityUpdate(e){this.fireEvent("onNavigationValidityUpdate",e),this.fireDebugEvent("Navigation validity updated",{validity:e})}fireSequencingStateChange(e){this.fireEvent("onSequencingStateChange",e),this.fireDebugEvent("Sequencing state changed",{stateKeys:Object.keys(e)})}handleSequencingProcessEvent(e,t){try{switch(e){case"onActivityDelivery":this.fireEvent("onActivityDelivery",t);break;case"onLimitConditionCheck":this.fireLimitConditionCheck(t.activity,t.result);break;case"onActivityAttemptStart":this.fireActivityAttemptStart(t);break;case"onActivityAttemptEnd":this.fireActivityAttemptEnd(t);break;case"onNavigationValidityUpdate":this.fireNavigationValidityUpdate(t);break;case"onSequencingSessionEnd":this.fireEvent("onSequencingSessionEnd",t);break;default:this.fireDebugEvent("Sequencing process event: "+e,t)}}catch(t){this.log("error",`Error handling sequencing process event ${e}: ${t}`)}}log(e,t,i){const s=["debug","info","warn","error"],r=this.configuration.logLevel||"info";if(s.indexOf(e)>=s.indexOf(r))switch(e){case"debug":this.loggingService.debug(`[Sequencing] ${t}${i?" - "+JSON.stringify(i):""}`);break;case"info":this.loggingService.info(`[Sequencing] ${t}${i?" - "+JSON.stringify(i):""}`);break;case"warn":this.loggingService.warn(`[Sequencing] ${t}${i?" - "+JSON.stringify(i):""}`);break;case"error":this.loggingService.error(`[Sequencing] ${t}${i?" - "+JSON.stringify(i):""}`)}}}class cs{loadFromFlattenedJSON(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=arguments.length>2?arguments[2]:void 0,s=arguments.length>3?arguments[3]:void 0,r=arguments.length>4?arguments[4]:void 0;if(!s())return void console.error("loadFromFlattenedJSON can only be called before the call to lmsInitialize.");const n=/^(cmi\.interactions\.)(\d+)\.(.*)$/,o=/^(cmi\.objectives\.)(\d+)\.(.*)$/,interactions=[],objectives=[],a=[];for(const t in e)if({}.hasOwnProperty.call(e,t)){const i=t.match(n);if(i){interactions.push({key:t,value:e[t],index:+i[2],field:i[3]||""});continue}const s=t.match(o);if(s){objectives.push({key:t,value:e[t],index:+s[2],field:s[3]||""});continue}a.push({key:t,value:e[t]})}interactions.sort((e,t)=>e.index!==t.index?e.index-t.index:"id"===e.field?-1:"id"===t.field?1:"type"===e.field?-1:"type"===t.field?1:e.field.localeCompare(t.field)),objectives.sort((e,t)=>e.index!==t.index?e.index-t.index:"id"===e.field?-1:"id"===t.field?1:e.field.localeCompare(t.field)),a.sort((e,t)=>e.key.localeCompare(t.key));const c=e=>{e.forEach(e=>{const n={};n[e.key]=e.value,this.loadFromJSON(function(e){if(Object(e)!==e||Array.isArray(e))return e;const result={},pattern=/\.?([^.[\]]+)|\[(\d+)]/g;return Object.keys(e).filter(t=>({}.hasOwnProperty.call(e,t))).forEach(t=>{let i=result,s="";const r=RegExp(pattern);Array.from({length:t.match(RegExp(pattern,"g"))?.length??0},()=>r.exec(t)).forEach(e=>{e&&(i=i[s]??(i[s]=e[2]?[]:{}),s=e[2]||e[1]||"")}),i[s]=e[t]}),result[""]??result}(n),t,i,s,r)})};c(interactions),c(objectives),c(a)}loadFromJSON(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=arguments.length>2?arguments[2]:void 0,s=arguments.length>3?arguments[3]:void 0,r=arguments.length>4?arguments[4]:void 0;if(s()){t=void 0!==t?t:"cmi",r(e);for(const n in e)if({}.hasOwnProperty.call(e,n)&&e[n]){const o=(t?t+".":"")+n,a=e[n];if(a.constructor===Array){for(let e=0;a.length>e;e++)if(a[e]){const t=a[e],n=`${o}.${e}`;t.constructor===Object?this.loadFromJSON(t,n,i,s,r):i(n,t)}}else a.constructor===Object?this.loadFromJSON(a,o,i,s,r):i(o,a)}}else console.error("loadFromJSON can only be called before the call to lmsInitialize.")}renderCMIToJSONString(cmi,e){return e?JSON.stringify({cmi:cmi}):JSON.stringify({cmi:cmi},(e,t)=>void 0===t?null:t,2)}renderCMIToJSONObject(cmi,e){return JSON.parse(this.renderCMIToJSONString(cmi,e))}getCommitObject(e,t,i,s,r,n){const o=t||e,a=i?s(e,o):r(e,o);return[B.DEBUG,"1",1,"DEBUG"].includes(n)&&(console.debug("Commit (terminated: "+(e?"yes":"no")+"): "),console.debug(a)),a}}var ls=Object.defineProperty,us=(e,t,i)=>((e,t,i)=>t in e?ls(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class hs{constructor(e,t){us(this,"settings"),us(this,"error_codes"),this.settings=e,this.error_codes=t}processHttpRequest(e,t){return arguments.length>2&&void 0!==arguments[2]&&arguments[2]?this._handleImmediateRequest(e,t):this._performSyncXHR(e,t)}_handleImmediateRequest(e,t){const i=this.settings.requestHandler(t)??t,{body:s}=this._prepareRequestBody(i),r=navigator.sendBeacon(e,new Blob([s],{type:"text/plain;charset=UTF-8"}));return{result:r?"true":"false",errorCode:r?0:this.error_codes.GENERAL_COMMIT_FAILURE||391}}_performSyncXHR(e,t){const i=this.settings.requestHandler(t)??t,{body:s,contentType:r}=this._prepareRequestBody(i),n=new XMLHttpRequest;n.open("POST",e,!1),n.setRequestHeader("Content-Type",r),Object.entries(this.settings.xhrHeaders).forEach(e=>{let[t,i]=e;n.setRequestHeader(t,i+"")}),this.settings.xhrWithCredentials&&(n.withCredentials=!0);try{return n.send(s),this.settings.xhrResponseHandler(n)}catch(e){return{result:S,errorCode:this.error_codes.GENERAL_COMMIT_FAILURE||391,errorMessage:e instanceof Error?e.message:e+""}}}_prepareRequestBody(e){return{body:e instanceof Array?e.join("&"):JSON.stringify(e),contentType:e instanceof Array?"application/x-www-form-urlencoded":this.settings.commitRequestDataType}}updateSettings(e){this.settings=e}}function ds(e,t,i,s){return Ft(e,t,i,T.TYPE_MISMATCH,w,s)}function ms(e,t,i,s){if(""===t)throw new w(e,T.VALUE_OUT_OF_RANGE);return kt(e,t,i,T.VALUE_OUT_OF_RANGE,w)}const ps=new class{validateScore(e,t,i,s,r,n,o){return Ft(e,t,i,r,o)&&(!s||kt(e,t,s,n,o))}validateScorm12Audio(e,t){return ds(e,t,W)&&ms(e,t,"-1#100")}validateScorm12Language(e,t){return ds(e,t,G)}validateScorm12Speed(e,t){return ds(e,t,W)&&ms(e,t,"-100#100")}validateScorm12Text(e,t){return ds(e,t,W)&&ms(e,t,"-1#1")}validateReadOnly(e,t){if(t)throw new w(e,T.READ_ONLY_ELEMENT)}};var _s=Object.defineProperty,vs=(e,t,i)=>((e,t,i)=>t in e?_s(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class gs{constructor(e,t,i,s,r,n,o,a,c){if(vs(this,"_timeout"),vs(this,"_error_codes"),vs(this,"_settings",U),vs(this,"_httpService"),vs(this,"_eventService"),vs(this,"_serializationService"),vs(this,"_errorHandlingService"),vs(this,"_loggingService"),vs(this,"_offlineStorageService"),vs(this,"_cmiValueAccessService"),vs(this,"_courseId",""),vs(this,"startingData"),vs(this,"currentState"),new.target===gs)throw new TypeError("Cannot construct BaseAPI instances directly");this.currentState=0,this._error_codes=e,t&&(this.settings={...U,...t}),void 0!==t?.asyncCommit&&void 0===t.useAsynchronousCommits&&void 0===t.throttleCommits&&(console.warn("DEPRECATED: 'asyncCommit' setting is deprecated and will be removed in a future version. Use 'useAsynchronousCommits: true' and 'throttleCommits: true' instead."),t.asyncCommit&&(this.settings.useAsynchronousCommits=!0,this.settings.throttleCommits=!0)),!this.settings.useAsynchronousCommits&&this.settings.throttleCommits&&(console.warn("throttleCommits cannot be used with synchronous commits. Setting throttleCommits to false."),this.settings.throttleCommits=!1),this._loggingService=a||Tt(),this._loggingService.setLogLevel(this.settings.logLevel),this._loggingService.setLogHandler(this.settings.onLogMessage?this.settings.onLogMessage:$),i?this._httpService=i:this.settings.httpService?this._httpService=this.settings.httpService:this.settings.useAsynchronousCommits?(console.warn("WARNING: useAsynchronousCommits=true is not SCORM compliant. Commit failures will not be reported to the SCO, which may cause data loss. This setting should only be used for specific legacy compatibility cases."),this._httpService=new bt(this.settings,this._error_codes)):this._httpService=new hs(this.settings,this._error_codes),this._eventService=s||new Dt((e,t,i,s)=>this.apiLog(e,t,i,s)),this._serializationService=r||new cs,this._errorHandlingService=o||new Nt(this._error_codes,(e,t,i,s)=>this.apiLog(e,t,i||B.ERROR,s),(e,t)=>this.getLmsErrorMessageDetails(e,t),void 0),this.settings.enableOfflineSupport&&(this._offlineStorageService=c||new zt(this.settings,this._error_codes,(e,t,i,s)=>this.apiLog(e,t,i,s)),this.settings.courseId&&(this._courseId=this.settings.courseId),this.settings.syncOnTerminate&&this._eventService.on("BeforeTerminate",()=>{this._offlineStorageService?.isDeviceOnline()&&this._courseId&&this._offlineStorageService.hasPendingOfflineData(this._courseId).then(e=>{if(e)return this.apiLog("BeforeTerminate","Syncing pending offline data before termination",B.INFO),this._offlineStorageService?.syncOfflineData()}).then(e=>{e?this.processListeners("OfflineDataSynced"):!1===e&&this.processListeners("OfflineDataSyncFailed")}).catch(e=>{this.apiLog("BeforeTerminate","Error syncing offline data: "+e,B.ERROR),this.processListeners("OfflineDataSyncFailed")})}),this._offlineStorageService&&this._courseId&&this._offlineStorageService.getOfflineData(this._courseId).then(e=>{e&&(this.apiLog("constructor","Found offline data to restore",B.INFO),this.loadFromJSON(e.runtimeData))}).catch(e=>{this.apiLog("constructor","Error retrieving offline data: "+e,B.ERROR)})),this._cmiValueAccessService=new Et({errorCodes:this._error_codes,getLastErrorCode:()=>this.lastErrorCode,setLastErrorCode:e=>{this.lastErrorCode=e},throwSCORMError:(e,t,i)=>this.throwSCORMError(e,t,i),isInitialized:()=>this.isInitialized(),validateCorrectResponse:(e,t)=>this.validateCorrectResponse(e,t),checkForDuplicateId:(e,t)=>this._checkForDuplicateId(e,t),getChildElement:(e,t,i)=>this.getChildElement(e,t,i),apiLog:(e,t,i)=>this.apiLog(e,t,i),checkObjectHasProperty:(e,t)=>this._checkObjectHasProperty(e,t),getDataModel:()=>this})}get lastErrorCode(){return this._errorHandlingService?.lastErrorCode??"0"}set lastErrorCode(e){this._errorHandlingService&&(this._errorHandlingService.lastErrorCode=e)}get eventService(){return this._eventService}get loggingService(){return this._loggingService}commonReset(e){this.apiLog("reset","Called",B.INFO),this.settings={...this.settings,...e},this.clearScheduledCommit(),this.currentState=0,this.lastErrorCode="0",this._eventService.reset(),this.startingData={},this._offlineStorageService&&(this._offlineStorageService.updateSettings(this.settings),e?.courseId&&(this._courseId=e.courseId))}initialize(e,t,i){let s=S;return this.isInitialized()?this.throwSCORMError("api",this._error_codes.INITIALIZED,t):this.isTerminated()?this.throwSCORMError("api",this._error_codes.TERMINATED,i):(this.settings.selfReportSessionTime&&this.cmi.setStartTime(),this.currentState=1,this.lastErrorCode="0",s=f,this.processListeners(e),this.settings.enableOfflineSupport&&this._offlineStorageService&&this._courseId&&this.settings.syncOnInitialize&&this._offlineStorageService.isDeviceOnline()&&this._offlineStorageService.hasPendingOfflineData(this._courseId).then(t=>{t&&(this.apiLog(e,"Syncing pending offline data on initialization",B.INFO),this._offlineStorageService?.syncOfflineData().then(t=>{t&&(this.apiLog(e,"Successfully synced offline data",B.INFO),this.processListeners("OfflineDataSynced"))}))})),this.apiLog(e,"returned: "+s,B.INFO),this.clearSCORMError(s),s}apiLog(e,t,i,s){t=function(e,t,i){let s=e?(e+"").padEnd(20)+": ":"";return i&&(s+=i,s=s.padEnd(70)),s+=t??"",s}(e,t,s),this._loggingService.log(i,t)}get settings(){return this._settings}set settings(e){const t=this._settings;this._settings={...this._settings,...e},this._httpService?.updateSettings(this._settings),void 0!==e.logLevel&&e.logLevel!==t.logLevel&&this._loggingService?.setLogLevel(e.logLevel),void 0!==e.onLogMessage&&e.onLogMessage!==t.onLogMessage&&this._loggingService?.setLogHandler(e.onLogMessage)}terminate(e,t){let i=f,s=!1;if(this.isNotInitialized()){const e=this._error_codes.TERMINATION_BEFORE_INIT??0;this.throwSCORMError("api",e),112===e&&(i=S)}else if(t&&this.isTerminated()){const e=this._error_codes.MULTIPLE_TERMINATION??0;this.throwSCORMError("api",e),113===e&&(i=S)}else{s=!0,this.processListeners("BeforeTerminate");const result=this.storeData(!0);if((result.errorCode??0)>0)result.errorMessage&&this.apiLog("terminate","Terminate failed with error: "+result.errorMessage,B.ERROR),result.errorDetails&&this.apiLog("terminate","Error details: "+JSON.stringify(result.errorDetails),B.DEBUG),this.throwSCORMError("api",result.errorCode??0),i=S;else{this.currentState=2,t&&(this.lastErrorCode="0");const e=result?.result??f;i="boolean"==typeof e?e+"":e}this.processListeners(e)}return this.apiLog(e,"returned: "+i,B.INFO),s&&this.clearSCORMError(i),i}getValue(e,t,i){let s="";if(this.checkState(t,this._error_codes.RETRIEVE_BEFORE_INIT??0,this._error_codes.RETRIEVE_AFTER_TERM??0)){try{s=this.getCMIValue(i)}catch(e){s=this.handleValueAccessException(i,e,s)}this.processListeners(e,i)}return this.apiLog(e,": returned: "+s,B.INFO,i),void 0===s?"":("0"===this.lastErrorCode&&this.clearSCORMError(s),s)}setValue(e,t,i,s,r){void 0!==r&&(r+="");let n=S;if(this.checkState(i,this._error_codes.STORE_BEFORE_INIT??0,this._error_codes.STORE_AFTER_TERM??0)){try{n=this.setCMIValue(s,r)}catch(e){n=this.handleValueAccessException(s,e,n)}this.processListeners(e,s,r)}return void 0===n&&(n=S),this.lastErrorCode+""=="0"&&this.settings.autocommit&&this.scheduleCommit(1e3*this.settings.autocommitSeconds,t),this.apiLog(e,": "+r+": result: "+n,B.INFO,s),"0"===this.lastErrorCode&&this.clearSCORMError(n),n}commit(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.clearScheduledCommit();let i=f;if(this.isNotInitialized()){const e=this._error_codes.COMMIT_BEFORE_INIT??0;this.throwSCORMError("api",e),142===e&&(i=S)}else if(t&&this.isTerminated()){const e=this._error_codes.COMMIT_AFTER_TERM??0;this.throwSCORMError("api",e),143===e&&(i=S)}else{const result=this.storeData(!1);(result.errorCode??0)>0&&(result.errorMessage&&this.apiLog("commit","Commit failed with error: "+result.errorMessage,B.ERROR),result.errorDetails&&this.apiLog("commit","Error details: "+JSON.stringify(result.errorDetails),B.DEBUG),this.throwSCORMError("api",result.errorCode));const s=result?.result??S;i="boolean"==typeof s?s+"":s,this.apiLog(e," Result: "+i,B.DEBUG,"HttpRequest"),t&&(this.lastErrorCode="0"),this.processListeners(e),this.settings.enableOfflineSupport&&this._offlineStorageService&&this._offlineStorageService.isDeviceOnline()&&this._courseId&&this._offlineStorageService.hasPendingOfflineData(this._courseId).then(t=>{t&&(this.apiLog(e,"Syncing pending offline data",B.INFO),this._offlineStorageService?.syncOfflineData().then(t=>{t?(this.apiLog(e,"Successfully synced offline data",B.INFO),this.processListeners("OfflineDataSynced")):this.apiLog(e,"Failed to sync some offline data",B.WARN)}))})}return this.apiLog(e,"returned: "+i,B.INFO),this.isNotInitialized()||t&&this.isTerminated()||this.clearSCORMError(i),i}getLastError(e){const t=this.lastErrorCode+"";return this.processListeners(e),this.apiLog(e,"returned: "+t,B.INFO),t}getErrorString(e,t){let i="";return null!==t&&""!==t&&(i=this.getLmsErrorMessageDetails(t),this.processListeners(e)),i.length>255&&(i=i.substring(0,255)),this.apiLog(e,"returned: "+i,B.INFO),i}getDiagnostic(e,t){let i="";const s=""===t?this.lastErrorCode+"":t;if(null!==s&&""!==s){const t=this._errorHandlingService.lastDiagnostic;i=t&&s+""==this.lastErrorCode+""?t:this.getLmsErrorMessageDetails(s,!0),this.processListeners(e)}return i.length>255&&(i=i.substring(0,255)),this.apiLog(e,"returned: "+i,B.INFO),i}checkState(e,t,i){return this.isNotInitialized()?(this.throwSCORMError("api",t),!1):!e||!this.isTerminated()||(this.throwSCORMError("api",i),!1)}_checkForDuplicateId(e,t){const i=(e,t)=>{if(e&&"object"==typeof e&&t in e){const i=e[t];return i instanceof x?i:void 0}},s=(e,t,i)=>{for(let s=0;e.childArray.length>s;s++)if(s!==t){const t=e.childArray[s];if(t&&"object"==typeof t&&"id"in t&&t.id===i)return!0}return!1},r=e.match(/^cmi\.objectives\.(\d+)\.id$/);if(r&&r[1]){const e=parseInt(r[1],10),objectives=i(this.cmi,"objectives");return!!objectives&&s(objectives,e,t)}const n=e.match(/^cmi\.interactions\.(\d+)\.id$/);if(n&&n[1]){const e=parseInt(n[1],10),interactions=i(this.cmi,"interactions");return!!interactions&&s(interactions,e,t)}const o=e.match(/^cmi\.interactions\.(\d+)\.objectives\.(\d+)\.id$/);if(o&&o[1]&&o[2]){const e=parseInt(o[1],10),r=parseInt(o[2],10),interactions=i(this.cmi,"interactions");if(interactions){const n=interactions.childArray[e];if(n){const objectives=i(n,"objectives");if(objectives)return s(objectives,r,t)}}return!1}return!1}getLmsErrorMessageDetails(e){throw Error("The getLmsErrorMessageDetails method has not been implemented")}getCMIValue(e){throw Error("The getCMIValue method has not been implemented")}setCMIValue(e,t){throw Error("The setCMIValue method has not been implemented")}_commonSetCMIValue(e,t,i,s){return this._cmiValueAccessService.setCMIValue(e,t,i,s)}_commonGetCMIValue(e,t,i){return this._cmiValueAccessService.getCMIValue(e,t,i)}isInitialized(){return 1===this.currentState}isNotInitialized(){return 0===this.currentState}isTerminated(){return 2===this.currentState}on(e,t){this._eventService.on(e,t)}off(e,t){this._eventService.off(e,t)}clear(e){this._eventService.clear(e)}processListeners(e,t,i){this._eventService.processListeners(e,t,i)}throwSCORMError(e,t,i){this._errorHandlingService.throwSCORMError(e,t??0,i)}clearSCORMError(e){this._errorHandlingService.clearSCORMError(e)}loadFromFlattenedJSON(e,t){t||(t=""),this._serializationService.loadFromFlattenedJSON(e,t,(e,t)=>this.setCMIValue(e,t),()=>this.isNotInitialized(),e=>{this.startingData=e})}getFlattenedCMI(){return o(this.renderCMIToJSONObject())}loadFromJSON(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";t&&""!==t||Object.hasOwnProperty.call(e,"cmi")||Object.hasOwnProperty.call(e,"adl")||(t="cmi"),this._serializationService.loadFromJSON(e,t,(e,t)=>this.setCMIValue(e,t),()=>this.isNotInitialized(),e=>{this.startingData=e})}renderCMIToJSONString(){return this._serializationService.renderCMIToJSONString(this.cmi,this.settings.sendFullCommit)}renderCMIToJSONObject(){return this._serializationService.renderCMIToJSONObject(this.cmi,this.settings.sendFullCommit)}processHttpRequest(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return this.settings.enableOfflineSupport&&this._offlineStorageService&&!this._offlineStorageService.isDeviceOnline()&&this._courseId?(this.apiLog("processHttpRequest","Device is offline, storing data locally",B.INFO),t&&"object"==typeof t&&"cmi"in t?this._offlineStorageService.storeOffline(this._courseId,t):(this.apiLog("processHttpRequest","Invalid commit data format for offline storage",B.ERROR),{result:S,errorCode:this._error_codes.GENERAL??101})):this._httpService.processHttpRequest(e,t,i,(e,t,i,s)=>this.apiLog(e,t,i,s),(e,t,i)=>this.processListeners(e,t,i))}scheduleCommit(e,t){this._timeout||(this._timeout=new Se(this,e,t),this.apiLog("scheduleCommit","scheduled",B.DEBUG,""))}clearScheduledCommit(){this._timeout&&(this._timeout.cancel(),this._timeout=void 0,this.apiLog("clearScheduledCommit","cleared",B.DEBUG,""))}_checkObjectHasProperty(e,t){return null!=e&&"object"==typeof e&&(Object.hasOwnProperty.call(e,t)||null!=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(e),t)||t in e)}handleValueAccessException(e,t,i){return t instanceof g?(this.lastErrorCode=t.errorCode+"",""!==i&&(i=S),this.throwSCORMError(e,t.errorCode,t.errorMessage)):this.throwSCORMError(e,this._error_codes.GENERAL,t instanceof Error&&t.message?t.message:"Unknown error"),i}getCommitObject(e){return this._serializationService.getCommitObject(e,this.settings.alwaysSendTotalTime,this.settings.renderCommonCommitFields,(e,t)=>this.renderCommitObject(e,t),(e,t)=>this.renderCommitCMI(e,t),this.settings.logLevel)}}var fs=Object.defineProperty,Ss=(e,t,i)=>((e,t,i)=>t in e?fs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class bs extends d{constructor(e){super(e.CMIElement),Ss(this,"__children"),Ss(this,"__score_range"),Ss(this,"__invalid_error_code"),Ss(this,"__invalid_type_code"),Ss(this,"__invalid_range_code"),Ss(this,"__decimal_regex"),Ss(this,"__error_class"),Ss(this,"_raw",""),Ss(this,"_min",""),Ss(this,"_max"),this.__children=e.score_children||b,this.__score_range=!!e.score_range&&Z,this._max=e.max||""===e.max?e.max:"100",this.__invalid_error_code=e.invalidErrorCode||T.INVALID_SET_VALUE,this.__invalid_type_code=e.invalidTypeCode||T.TYPE_MISMATCH,this.__invalid_range_code=e.invalidRangeCode||T.VALUE_OUT_OF_RANGE,this.__decimal_regex=e.decimalRegex||J,this.__error_class=e.errorClass}reset(){this._initialized=!1,this._raw="",this._min=""}get _children(){return this.__children}set _children(_children){throw new this.__error_class(this._cmi_element+"._children",this.__invalid_error_code)}get raw(){return this._raw}set raw(e){ps.validateScore(this._cmi_element+".raw",e,this.__decimal_regex,this.__score_range,this.__invalid_type_code,this.__invalid_range_code,this.__error_class)&&(this._raw=e)}get min(){return this._min}set min(e){ps.validateScore(this._cmi_element+".min",e,this.__decimal_regex,this.__score_range,this.__invalid_type_code,this.__invalid_range_code,this.__error_class)&&(this._min=e)}get max(){return this._max}set max(e){ps.validateScore(this._cmi_element+".max",e,this.__decimal_regex,this.__score_range,this.__invalid_type_code,this.__invalid_range_code,this.__error_class)&&(this._max=e)}getScoreObject(){const e={};return Number.isNaN(Number.parseFloat(this.raw))||(e.raw=Number.parseFloat(this.raw)),Number.isNaN(Number.parseFloat(this.min))||(e.min=Number.parseFloat(this.min)),Number.isNaN(Number.parseFloat(this.max))||(e.max=Number.parseFloat(this.max)),e}toJSON(){this.jsonString=!0;const result={raw:this.raw,min:this.min,max:this.max};return this.jsonString=!1,result}}var ys=Object.defineProperty,Cs=(e,t,i)=>((e,t,i)=>t in e?ys(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class As extends d{constructor(){super("cmi.core"),Cs(this,"score"),Cs(this,"__children","student_id,student_name,lesson_location,credit,lesson_status,entry,score,total_time,lesson_mode,exit,session_time"),Cs(this,"_student_id",""),Cs(this,"_student_name",""),Cs(this,"_lesson_location",""),Cs(this,"_credit",""),Cs(this,"_lesson_status","not attempted"),Cs(this,"_entry",""),Cs(this,"_total_time",""),Cs(this,"_lesson_mode","normal"),Cs(this,"_exit",""),Cs(this,"_session_time","00:00:00"),Cs(this,"_suspend_data",""),this.score=new bs({CMIElement:"cmi.core.score",score_children:b,score_range:Z,invalidErrorCode:T.INVALID_SET_VALUE,invalidTypeCode:T.TYPE_MISMATCH,invalidRangeCode:T.VALUE_OUT_OF_RANGE,errorClass:w})}initialize(){super.initialize(),this.score?.initialize()}reset(){this._initialized=!1,this._exit="",this._entry="",this._session_time="00:00:00",this.score?.reset()}get _children(){return this.__children}set _children(_children){throw new w(this._cmi_element+"._children",T.INVALID_SET_VALUE)}get student_id(){return this._student_id}set student_id(student_id){if(this.initialized)throw new w(this._cmi_element+".student_id",T.READ_ONLY_ELEMENT);this._student_id=student_id}get student_name(){return this._student_name}set student_name(student_name){if(this.initialized)throw new w(this._cmi_element+".student_name",T.READ_ONLY_ELEMENT);this._student_name=student_name}get lesson_location(){return this._lesson_location}set lesson_location(lesson_location){ds(this._cmi_element+".lesson_location",lesson_location,G,!0)&&(this._lesson_location=lesson_location)}get credit(){return this._credit}set credit(credit){if(this.initialized)throw new w(this._cmi_element+".credit",T.READ_ONLY_ELEMENT);ds(this._cmi_element+".credit",credit,"^(credit|no-credit)$",!0)&&(this._credit=credit)}get lesson_status(){return this._lesson_status}set lesson_status(lesson_status){this.initialized?ds(this._cmi_element+".lesson_status",lesson_status,"^(passed|completed|failed|incomplete|browsed)$")&&(this._lesson_status=lesson_status):ds(this._cmi_element+".lesson_status",lesson_status,Q)&&(this._lesson_status=lesson_status)}get entry(){return this._entry}set entry(entry){if(this.initialized)throw new w(this._cmi_element+".entry",T.READ_ONLY_ELEMENT);ds(this._cmi_element+".entry",entry,"^(ab-initio|resume|)$",!0)&&(this._entry=entry)}get total_time(){return this._total_time}set total_time(total_time){if(this.initialized)throw new w(this._cmi_element+".total_time",T.READ_ONLY_ELEMENT);if(ds(this._cmi_element+".total_time",total_time,Y,!0))if(total_time){const e=s(total_time,Y);this._total_time=t(e)}else this._total_time=total_time}get lesson_mode(){return this._lesson_mode}set lesson_mode(lesson_mode){if(this.initialized)throw new w(this._cmi_element+".lesson_mode",T.READ_ONLY_ELEMENT);ds(this._cmi_element+".lesson_mode",lesson_mode,"^(normal|browse|review)$")&&(this._lesson_mode=lesson_mode)}get exit(){if(!this.jsonString)throw new w(this._cmi_element+".exit",T.WRITE_ONLY_ELEMENT);return this._exit}set exit(exit){"normal"===exit&&(console.warn("SCORM 1.2: Received non-standard value 'normal' for cmi.core.exit; normalizing to empty string."),exit=""),ds(this._cmi_element+".exit",exit,"^(time-out|suspend|logout|)$",!0)&&(this._exit=exit)}get session_time(){if(!this.jsonString)throw new w(this._cmi_element+".session_time",T.WRITE_ONLY_ELEMENT);return this._session_time}set session_time(session_time){if(ds(this._cmi_element+".session_time",session_time,Y)){const e=s(session_time,Y);this._session_time=t(e)}}get suspend_data(){return this._suspend_data}set suspend_data(suspend_data){ds(this._cmi_element+".suspend_data",suspend_data,"^[\\s\\S]{0,64000}$",!0)&&(this._suspend_data=suspend_data)}getCurrentTotalTime(e){let i=this._session_time;if(void 0!==e){const s=(new Date).getTime()-e;i=t(s/1e3)}return r=this._total_time,n=i,"string"==typeof(o=RegExp(Y))&&(o=RegExp(o)),t(s(r,o)+s(n,o));var r,n,o}toJSON(){this.jsonString=!0;const result={student_id:this.student_id,student_name:this.student_name,lesson_location:this.lesson_location,credit:this.credit,lesson_status:this.lesson_status,entry:this.entry,lesson_mode:this.lesson_mode,exit:this.exit,session_time:this.session_time,score:this.score};return this.jsonString=!1,result}}var Es=Object.defineProperty,ws=(e,t,i)=>((e,t,i)=>t in e?Es(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);let Ms=class extends x{constructor(){super({CMIElement:"cmi.objectives",children:y,errorCode:T.INVALID_SET_VALUE,errorClass:w})}},Os=class extends d{constructor(){super("cmi.objectives.n"),ws(this,"score"),ws(this,"_id",""),ws(this,"_status",""),this.score=new bs({CMIElement:"cmi.objectives.n.score",score_children:b,score_range:Z,invalidErrorCode:T.INVALID_SET_VALUE,invalidTypeCode:T.TYPE_MISMATCH,invalidRangeCode:T.VALUE_OUT_OF_RANGE,errorClass:w})}reset(){this._initialized=!1,this._id="",this._status="",this.score?.reset()}get id(){return this._id}set id(id){ds(this._cmi_element+".id",id,K)&&(this._id=id)}get status(){return this._status}set status(status){ds(this._cmi_element+".status",status,Q)&&(this._status=status)}toJSON(){this.jsonString=!0;const result={id:this.id,status:this.status,score:this.score};return this.jsonString=!1,result}};var Rs=Object.defineProperty,Ts=(e,t,i)=>((e,t,i)=>t in e?Rs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class js extends d{constructor(e){super("cmi.student_data"),Ts(this,"__children"),Ts(this,"_mastery_score",""),Ts(this,"_max_time_allowed",""),Ts(this,"_time_limit_action",""),this.__children=e||"mastery_score,max_time_allowed,time_limit_action"}reset(){this._initialized=!1}get _children(){return this.__children}set _children(_children){throw new w(this._cmi_element+"._children",T.INVALID_SET_VALUE)}get mastery_score(){return this._mastery_score}set mastery_score(mastery_score){if(ps.validateReadOnly(this._cmi_element+".mastery_score",this.initialized),null==mastery_score)return;let e=mastery_score;"string"!=typeof e&&(e+=""),""!==e?ds(this._cmi_element+".mastery_score",e,J)&&ms(this._cmi_element+".mastery_score",e,Z)&&(this._mastery_score=e):this._mastery_score=mastery_score}get max_time_allowed(){return this._max_time_allowed}set max_time_allowed(max_time_allowed){if(ps.validateReadOnly(this._cmi_element+".max_time_allowed",this.initialized),null==max_time_allowed)return;const e="string"==typeof max_time_allowed?max_time_allowed:max_time_allowed+"";this._max_time_allowed=""!==e?function(e,i){try{ds(i,e,Y,!0);const r=s(e,Y);return t(r)}catch(e){}try{ds(i,e,ne,!0);const s=r(e,ne);return t(s)}catch(e){}throw new w(i,T.TYPE_MISMATCH)}(e,this._cmi_element+".max_time_allowed"):""}get time_limit_action(){return this._time_limit_action}set time_limit_action(time_limit_action){if(ps.validateReadOnly(this._cmi_element+".time_limit_action",this.initialized),null==time_limit_action)return;const e="string"==typeof time_limit_action?time_limit_action:time_limit_action+"";ds(this._cmi_element+".time_limit_action",e,"^(exit,message|exit,no message|continue,message|continue,no message)$",!0)&&(this._time_limit_action=e)}toJSON(){this.jsonString=!0;const result={mastery_score:this.mastery_score,max_time_allowed:this.max_time_allowed,time_limit_action:this.time_limit_action};return this.jsonString=!1,result}}var Is=Object.defineProperty,Ns=(e,t,i)=>((e,t,i)=>t in e?Is(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class xs extends d{constructor(e){super("cmi.student_preference"),Ns(this,"__children"),Ns(this,"_audio",""),Ns(this,"_language",""),Ns(this,"_speed",""),Ns(this,"_text",""),this.__children=e||"audio,language,speed,text"}reset(){this._initialized=!1}get _children(){return this.__children}set _children(_children){throw new w(this._cmi_element+"._children",T.INVALID_SET_VALUE)}get audio(){return this._audio}set audio(audio){ps.validateScorm12Audio(this._cmi_element+".audio",audio)&&(this._audio=audio)}get language(){return this._language}set language(language){ps.validateScorm12Language(this._cmi_element+".language",language)&&(this._language=language)}get speed(){return this._speed}set speed(speed){ps.validateScorm12Speed(this._cmi_element+".speed",speed)&&(this._speed=speed)}get text(){return this._text}set text(text){ps.validateScorm12Text(this._cmi_element+".text",text)&&(this._text=text)}toJSON(){this.jsonString=!0;const result={audio:this.audio,language:this.language,speed:this.speed,text:this.text};return this.jsonString=!1,result}}var qs=Object.defineProperty,Ds=(e,t,i)=>((e,t,i)=>t in e?qs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);let Ls=class extends x{constructor(){super({CMIElement:"cmi.interactions",children:"id,objectives,time,type,correct_responses,weighting,student_response,result,latency",errorCode:T.INVALID_SET_VALUE,errorClass:w})}},Ps=class extends d{constructor(){super("cmi.interactions.n"),Ds(this,"objectives"),Ds(this,"correct_responses"),Ds(this,"_id",""),Ds(this,"_time",""),Ds(this,"_type",""),Ds(this,"_weighting",""),Ds(this,"_student_response",""),Ds(this,"_result",""),Ds(this,"_latency",""),this.objectives=new x({CMIElement:"cmi.interactions.n.objectives",errorCode:T.INVALID_SET_VALUE,errorClass:w,children:y}),this.correct_responses=new x({CMIElement:"cmi.interactions.correct_responses",errorCode:T.INVALID_SET_VALUE,errorClass:w,children:"pattern"})}initialize(){super.initialize(),this.objectives?.initialize(),this.correct_responses?.initialize()}reset(){this._initialized=!1,this._id="",this._time="",this._type="",this._weighting="",this._student_response="",this._result="",this._latency="",this.objectives?.reset(),this.correct_responses?.reset()}get id(){if(!this.jsonString)throw new w(this._cmi_element+".id",T.WRITE_ONLY_ELEMENT);return this._id}set id(id){ds(this._cmi_element+".id",id,K)&&(this._id=id)}get time(){if(!this.jsonString)throw new w(this._cmi_element+".time",T.WRITE_ONLY_ELEMENT);return this._time}set time(time){ds(this._cmi_element+".time",time,"^(?:[01]\\d|2[0123]):(?:[012345]\\d):(?:[012345]\\d)(\\.\\d{1,2})?$")&&(this._time=time)}get type(){if(!this.jsonString)throw new w(this._cmi_element+".type",T.WRITE_ONLY_ELEMENT);return this._type}set type(type){ds(this._cmi_element+".type",type,"^(true-false|choice|fill-in|matching|performance|sequencing|likert|numeric)$")&&(this._type=type)}get weighting(){if(!this.jsonString)throw new w(this._cmi_element+".weighting",T.WRITE_ONLY_ELEMENT);return this._weighting}set weighting(weighting){ds(this._cmi_element+".weighting",weighting,J)&&ms(this._cmi_element+".weighting",weighting,"-100#100")&&(this._weighting=weighting)}get student_response(){if(!this.jsonString)throw new w(this._cmi_element+".student_response",T.WRITE_ONLY_ELEMENT);return this._student_response}set student_response(student_response){ds(this._cmi_element+".student_response",student_response,X,!0)&&(this._student_response=student_response)}get result(){if(!this.jsonString)throw new w(this._cmi_element+".result",T.WRITE_ONLY_ELEMENT);return this._result}set result(result){let e=result;"incorrect"===result&&(e="wrong",console.warn("SCORM 1.2: Received non-standard value 'incorrect' for cmi.interactions.n.result; normalizing to 'wrong'.")),ds(this._cmi_element+".result",e,"^(correct|wrong|unanticipated|neutral|([0-9]{0,3})?(\\.[0-9]*)?)$")&&(this._result=e)}get latency(){if(!this.jsonString)throw new w(this._cmi_element+".latency",T.WRITE_ONLY_ELEMENT);return this._latency}set latency(latency){if(ds(this._cmi_element+".latency",latency,Y)){const e=s(latency,Y);this._latency=t(e)}}toJSON(){this.jsonString=!0;const result={id:this.id,time:this.time,type:this.type,weighting:this.weighting,student_response:this.student_response,result:this.result,latency:this.latency,objectives:this.objectives,correct_responses:this.correct_responses};return this.jsonString=!1,result}},zs=class extends d{constructor(){super("cmi.interactions.n.objectives.n"),Ds(this,"_id","")}reset(){this._initialized=!1,this._id=""}get id(){if(!this.jsonString)throw new w(this._cmi_element+".id",T.WRITE_ONLY_ELEMENT);return this._id}set id(id){ds(this._cmi_element+".id",id,K)&&(this._id=id)}toJSON(){this.jsonString=!0;const result={id:this.id};return this.jsonString=!1,result}},Fs=class extends d{constructor(){super("cmi.interactions.correct_responses.n"),Ds(this,"_pattern","")}reset(){this._initialized=!1,this._pattern=""}get pattern(){if(!this.jsonString)throw new w(this._cmi_element+".pattern",T.WRITE_ONLY_ELEMENT);return this._pattern}set pattern(pattern){ds(this._cmi_element+".pattern",pattern,X,!0)&&(this._pattern=pattern)}toJSON(){this.jsonString=!0;const result={pattern:this._pattern};return this.jsonString=!1,result}};var ks=Object.defineProperty,Vs=(e,t,i)=>((e,t,i)=>t in e?ks(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);let Hs=class extends m{constructor(e,student_data,t){super("cmi"),Vs(this,"__children",""),Vs(this,"__version","3.4"),Vs(this,"_launch_data",""),Vs(this,"_comments",""),Vs(this,"_comments_from_lms",""),Vs(this,"core"),Vs(this,"objectives"),Vs(this,"student_data"),Vs(this,"student_preference"),Vs(this,"interactions"),t&&this.initialize(),this.__children=e||"core,suspend_data,launch_data,comments,objectives,student_data,student_preference,interactions",this.core=new As,this.objectives=new Ms,this.student_data=student_data||new js,this.student_preference=new xs,this.interactions=new Ls}reset(){this._initialized=!1,this._launch_data="",this._comments="",this.core?.reset(),this.objectives?.reset(!0),this.interactions?.reset(!0),this.student_data?.reset(),this.student_preference?.reset()}initialize(){super.initialize(),this.core?.initialize(),this.objectives?.initialize(),this.student_data?.initialize(),this.student_preference?.initialize(),this.interactions?.initialize()}toJSON(){this.jsonString=!0;const result={suspend_data:this.suspend_data,launch_data:this.launch_data,comments:this.comments,comments_from_lms:this.comments_from_lms,core:this.core,objectives:this.objectives,student_data:this.student_data,student_preference:this.student_preference,interactions:this.interactions};return this.jsonString=!1,result}get _version(){return this.__version}set _version(_version){throw new w(this._cmi_element+"._version",T.INVALID_SET_VALUE)}get _children(){return this.__children}set _children(_children){throw new w(this._cmi_element+"._children",T.INVALID_SET_VALUE)}get suspend_data(){return this.core?.suspend_data}set suspend_data(suspend_data){this.core&&(this.core.suspend_data=suspend_data)}get launch_data(){return this._launch_data}set launch_data(launch_data){if(this.initialized)throw new w(this._cmi_element+".launch_data",T.READ_ONLY_ELEMENT);this._launch_data=launch_data}get comments(){return this._comments}set comments(comments){ds(this._cmi_element+".comments",comments,"^[\\s\\S]{0,4096}$",!0)&&(this._comments=comments)}get comments_from_lms(){return this._comments_from_lms}set comments_from_lms(comments_from_lms){if(this.initialized)throw new w(this._cmi_element+".comments_from_lms",T.READ_ONLY_ELEMENT);this._comments_from_lms=comments_from_lms}getCurrentTotalTime(){return this.core.getCurrentTotalTime(this.start_time)}};var Bs=Object.defineProperty;class Us extends d{constructor(){super("cmi.nav"),((e,t,i)=>{t in e?Bs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i})(this,"_event"+"","")}reset(){this._event="",this._initialized=!1}get event(){return this._event}set event(e){(""===e||ds(this._cmi_element+".event",e,"^(_?(previous|continue|start|resumeAll|exit|exitAll|abandon|abandonAll|suspendAll|retry|retryAll)|choice|jump|_none_)$"))&&(this._event=e)}toJSON(){this.jsonString=!0;const result={event:this.event};return this.jsonString=!1,result}}var $s=Object.defineProperty,Gs=(e,t,i)=>((e,t,i)=>t in e?$s(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);const Ys=class e extends gs{constructor(t,i){const s=t?{...t}:void 0;s&&void 0===s.mastery_override&&(s.mastery_override=!0),super(T,s,i),Gs(this,"statusSetByModule",!1),Gs(this,"cmi"),Gs(this,"nav"),Gs(this,"LMSInitialize"),Gs(this,"LMSFinish"),Gs(this,"LMSGetValue"),Gs(this,"LMSSetValue"),Gs(this,"LMSCommit"),Gs(this,"LMSGetLastError"),Gs(this,"LMSGetErrorString"),Gs(this,"LMSGetDiagnostic"),this.cmi=new Hs,this.nav=new Us,this.settings.globalStudentPreferences&&e._globalLearnerPrefs&&(""!==e._globalLearnerPrefs.audio&&(this.cmi.student_preference.audio=e._globalLearnerPrefs.audio),""!==e._globalLearnerPrefs.language&&(this.cmi.student_preference.language=e._globalLearnerPrefs.language),""!==e._globalLearnerPrefs.speed&&(this.cmi.student_preference.speed=e._globalLearnerPrefs.speed),""!==e._globalLearnerPrefs.text&&(this.cmi.student_preference.text=e._globalLearnerPrefs.text)),this.LMSInitialize=this.lmsInitialize,this.LMSFinish=this.lmsFinish,this.LMSGetValue=this.lmsGetValue,this.LMSSetValue=this.lmsSetValue,this.LMSCommit=this.lmsCommit,this.LMSGetLastError=this.lmsGetLastError,this.LMSGetErrorString=this.lmsGetErrorString,this.LMSGetDiagnostic=this.lmsGetDiagnostic}static clearGlobalPreferences(){e._globalLearnerPrefs=null}reset(e){this.commonReset(e),this.cmi?.reset(),this.nav?.reset(),this.statusSetByModule=!1}lmsInitialize(){return""!==(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"")?(this.throwSCORMError("api",this._error_codes.ARGUMENT_ERROR),S):(this.cmi.initialize(),this.cmi.core.lesson_status?this.statusSetByModule=!0:this.cmi.core.lesson_status="not attempted",this.initialize("LMSInitialize","LMS was already initialized!","LMS is already finished!"))}lmsFinish(){if(""!==(arguments.length>0&&void 0!==arguments[0]?arguments[0]:""))return this.throwSCORMError("api",this._error_codes.ARGUMENT_ERROR),S;const result=this.terminate("LMSFinish",!0);return result===f&&(""!==this.nav.event?this.processListeners("continue"===this.nav.event?"SequenceNext":"SequencePrevious"):this.settings.autoProgress&&this.processListeners("SequenceNext")),result}lmsGetValue(e){return this.getValue("LMSGetValue",!1,e)}lmsSetValue(e,t){return"cmi.core.lesson_status"===e&&(this.statusSetByModule=!0),this.setValue("LMSSetValue","LMSCommit",!1,e,t)}lmsCommit(){return""!==(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"")?(this.throwSCORMError("api",this._error_codes.ARGUMENT_ERROR),S):this.settings.throttleCommits?(this.scheduleCommit(500,"LMSCommit"),f):this.commit("LMSCommit",!1)}lmsGetLastError(){return this.getLastError("LMSGetLastError")}lmsGetErrorString(e){return this.getErrorString("LMSGetErrorString",e)}lmsGetDiagnostic(e){return this.getDiagnostic("LMSGetDiagnostic",e)}setCMIValue(e,t){const result=this._commonSetCMIValue("LMSSetValue",!1,e,t);return result===f&&this.settings.globalStudentPreferences&&("cmi.student_preference.audio"===e?this._updateGlobalPreference("audio",t):"cmi.student_preference.language"===e?this._updateGlobalPreference("language",t):"cmi.student_preference.speed"===e?this._updateGlobalPreference("speed",t):"cmi.student_preference.text"===e&&this._updateGlobalPreference("text",t)),result}_updateGlobalPreference(t,i){e._globalLearnerPrefs||(e._globalLearnerPrefs={audio:"",language:"",speed:"",text:""}),e._globalLearnerPrefs[t]=i}getCMIValue(e){return this._commonGetCMIValue("getCMIValue",!1,e)}getChildElement(e,t,i){return c(e,"cmi\\.objectives\\.\\d+")?new Os:i&&c(e,"cmi\\.interactions\\.\\d+\\.correct_responses\\.\\d+")?new Fs:i&&c(e,"cmi\\.interactions\\.\\d+\\.objectives\\.\\d+")?new zs:!i&&c(e,"cmi\\.interactions\\.\\d+")?new Ps:null}validateCorrectResponse(e,t){}getLmsErrorMessageDetails(e,t){let i="No Error",s="No Error";return C[e+=""]&&(i=C[e]?.basicMessage||i,s=C[e]?.detailMessage||s),t?s:i}replaceWithAnotherScormAPI(e){this.cmi=e.cmi}renderCommitCMI(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=this.renderCMIToJSONObject();(e||t)&&(i.cmi.core.total_time=this.cmi.getCurrentTotalTime());const result=[],s=o(i);switch(this.settings.dataCommitFormat){case"flattened":return s;case"params":for(const e in s)({}).hasOwnProperty.call(s,e)&&result.push(`${e}=${s[e]}`);return result;default:return i}}renderCommitObject(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=this.renderCommitCMI(e,t),r=e||t?this.cmi.getCurrentTotalTime():"",n=s(r,Y),o=this.cmi.core.lesson_status;let a=H,c=F;o&&(a="completed"===o||"passed"===o?k:V,"passed"===o?c=P:"failed"===o&&(c=z));const l=this.cmi?.core?.score?.getScoreObject()||{},u={successStatus:c,completionStatus:a,runtimeData:i,totalTimeSeconds:n};return l&&(u.score=l),this.settings.autoPopulateCommitMetadata&&(this.settings.courseId&&(u.courseId=this.settings.courseId),this.settings.scoId&&(u.scoId=this.settings.scoId),this.cmi.core.student_id&&(u.learnerId=this.cmi.core.student_id),this.cmi.core.student_name&&(u.learnerName=this.cmi.core.student_name)),u}storeData(e){if(e){const t=this.cmi.core.lesson_status;if("browse"===this.cmi.core.lesson_mode&&""===(this.startingData?.cmi?.core?.lesson_status||"")&&"not attempted"===t)return this.cmi.core.lesson_status="browsed",this.processCommitData(e);if(this.cmi.core.lesson_status&&(this.statusSetByModule||"not attempted"!==this.cmi.core.lesson_status)||(this.cmi.core.lesson_status=this.settings.autoCompleteLessonStatus?"completed":"incomplete"),"normal"===this.cmi.core.lesson_mode&&"credit"===this.cmi.core.credit&&this.settings.mastery_override&&""!==this.cmi.student_data.mastery_score&&""!==this.cmi.core.score.raw){const e=parseFloat(this.cmi.core.score.raw),t=parseFloat(this.cmi.student_data.mastery_score);isNaN(e)||isNaN(t)||(this.cmi.core.lesson_status=t>e?"failed":"passed")}if(this.settings.score_overrides_status&&this.statusSetByModule&&"normal"===this.cmi.core.lesson_mode&&"credit"===this.cmi.core.credit&&""!==this.cmi.student_data.mastery_score&&""!==this.cmi.core.score.raw){const e=parseFloat(this.cmi.core.score.raw),t=parseFloat(this.cmi.student_data.mastery_score);isNaN(e)||isNaN(t)||(this.cmi.core.lesson_status=t>e?"failed":"passed")}}return this.processCommitData(e)}processCommitData(e){const t=this.getCommitObject(e);return"string"==typeof this.settings.lmsCommitUrl?this.processHttpRequest(this.settings.lmsCommitUrl,t,e):{result:f,errorCode:0}}};Gs(Ys,"_globalLearnerPrefs",null);let Scorm12API=Ys;var Ws=Object.defineProperty,Js=(e,t,i)=>((e,t,i)=>t in e?Ws(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Ks extends d{constructor(){super("cmi.learner_preference"),Js(this,"__children",A.student_preference_children),Js(this,"_audio_level","1"),Js(this,"_language",""),Js(this,"_delivery_speed","1"),Js(this,"_audio_captioning","0")}reset(){this._initialized=!1}get _children(){return this.__children}set _children(_children){throw new O(this._cmi_element+"._children",j.READ_ONLY_ELEMENT)}get audio_level(){return this._audio_level}set audio_level(audio_level){Vt(this._cmi_element+".audio_level",audio_level,oe)&&Ht(this._cmi_element+".audio_level",audio_level,"0#999.9999999")&&(this._audio_level=audio_level)}get language(){return this._language}set language(language){Vt(this._cmi_element+".language",language,"^([a-zA-Z]{1,8}|i|x)(-[a-zA-Z0-9-]{2,8})?$|^$")&&(this._language=language)}get delivery_speed(){return this._delivery_speed}set delivery_speed(delivery_speed){if(Vt(this._cmi_element+".delivery_speed",delivery_speed,oe)&&Ht(this._cmi_element+".delivery_speed",delivery_speed,"0#999.9999999")){if(0===parseFloat(delivery_speed))throw new O(this._cmi_element+".delivery_speed",j.VALUE_OUT_OF_RANGE);this._delivery_speed=delivery_speed}}get audio_captioning(){return this._audio_captioning}set audio_captioning(audio_captioning){Vt(this._cmi_element+".audio_captioning",audio_captioning,"^-?([0-9]+)$")&&Ht(this._cmi_element+".audio_captioning",audio_captioning,"-1#1")&&(this._audio_captioning=audio_captioning)}toJSON(){this.jsonString=!0;const result={audio_level:this.audio_level,language:this.language,delivery_speed:this.delivery_speed,audio_captioning:this.audio_captioning};return this.jsonString=!1,result}}var Xs=Object.defineProperty,Qs=(e,t,i)=>((e,t,i)=>t in e?Xs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Zs extends x{constructor(){super({CMIElement:"cmi.interactions",children:A.interactions_children,errorCode:j.READ_ONLY_ELEMENT,errorClass:O})}}class er extends d{constructor(){super("cmi.interactions.n"),Qs(this,"_id",""),Qs(this,"_idIsSet",!1),Qs(this,"_type",""),Qs(this,"_timestamp",""),Qs(this,"_weighting",""),Qs(this,"_learner_response",""),Qs(this,"_result",""),Qs(this,"_latency",""),Qs(this,"_description",""),Qs(this,"objectives"),Qs(this,"correct_responses"),this.objectives=new x({CMIElement:"cmi.interactions.n.objectives",errorCode:j.READ_ONLY_ELEMENT,errorClass:O,children:A.objectives_children}),this.correct_responses=new x({CMIElement:"cmi.interactions.n.correct_responses",errorCode:j.READ_ONLY_ELEMENT,errorClass:O,children:A.correct_responses_children})}initialize(){super.initialize(),this.objectives?.initialize(),this.correct_responses?.initialize()}reset(){this._initialized=!1,this._id="",this._idIsSet=!1,this._type="",this._timestamp="",this._weighting="",this._learner_response="",this._result="",this._latency="",this._description="",this.objectives=new x({CMIElement:"cmi.interactions.n.objectives",errorCode:j.READ_ONLY_ELEMENT,errorClass:O,children:A.objectives_children}),this.correct_responses=new x({CMIElement:"cmi.interactions.n.correct_responses",errorCode:j.READ_ONLY_ELEMENT,errorClass:O,children:A.correct_responses_children})}get id(){return this._id}set id(id){if(""===id||""===id.trim())throw new O(this._cmi_element+".id",j.TYPE_MISMATCH);if(this._idIsSet&&this._id!==id)throw new O(this._cmi_element+".id",j.GENERAL_SET_FAILURE);Vt(this._cmi_element+".id",id,ce)&&(this._id=id,this._idIsSet=!0)}get type(){return this._type}set type(type){if(this.initialized&&""===this._id)throw new O(this._cmi_element+".type",j.DEPENDENCY_NOT_ESTABLISHED);Vt(this._cmi_element+".type",type,"^(true-false|choice|fill-in|long-fill-in|matching|performance|sequencing|likert|numeric|other)$")&&(this._type=type)}get timestamp(){return this._timestamp}set timestamp(timestamp){if(this.initialized&&""===this._id)throw new O(this._cmi_element+".timestamp",j.DEPENDENCY_NOT_ESTABLISHED);Vt(this._cmi_element+".timestamp",timestamp,re)&&(this._timestamp=timestamp)}get weighting(){return this._weighting}set weighting(weighting){if(this.initialized&&""===this._id)throw new O(this._cmi_element+".weighting",j.DEPENDENCY_NOT_ESTABLISHED);Vt(this._cmi_element+".weighting",weighting,oe)&&(this._weighting=weighting)}get learner_response(){return this._learner_response}set learner_response(learner_response){if(this.initialized&&(""===this._type||""===this._id))throw new O(this._cmi_element+".learner_response",j.DEPENDENCY_NOT_ESTABLISHED);{let e=[];const t=pe[this.type];if(!t)throw new O(this._cmi_element+".learner_response",j.TYPE_MISMATCH);if(t?.delimiter?e=learner_response.split("[,]"===t.delimiter?",":t.delimiter):e[0]=learner_response,0>=e.length||e.length>t.max)throw new O(this._cmi_element+".learner_response",j.GENERAL_SET_FAILURE);{const i=RegExp(t.format);for(let s=0;e.length>s;s++)if(t?.delimiter2){const r="[.]"===t.delimiter2?".":t.delimiter2,n=e[s]?.split(r);if(2!==n?.length)throw new O(this._cmi_element+".learner_response",j.TYPE_MISMATCH);if("performance"===this.type&&(""===n[0]||""===n[1]))throw new O(this._cmi_element+".learner_response",j.TYPE_MISMATCH);if(!n[0]?.match(i))throw new O(this._cmi_element+".learner_response",j.TYPE_MISMATCH);if(!t.format2||!n[1]?.match(RegExp(t.format2)))throw new O(this._cmi_element+".learner_response",j.TYPE_MISMATCH)}else{if(!e[s]?.match(i))throw new O(this._cmi_element+".learner_response",j.TYPE_MISMATCH);if(""!==e[s]&&t.unique)for(let t=0;s>t;t++)if(e[s]===e[t])throw new O(this._cmi_element+".learner_response",j.TYPE_MISMATCH)}}this._learner_response=learner_response}}get result(){return this._result}set result(result){Vt(this._cmi_element+".result",result,"^(correct|incorrect|unanticipated|neutral|-?([0-9]{1,4})(\\.[0-9]{1,18})?)$")&&(this._result=result)}get latency(){return this._latency}set latency(latency){if(this.initialized&&""===this._id)throw new O(this._cmi_element+".latency",j.DEPENDENCY_NOT_ESTABLISHED);Vt(this._cmi_element+".latency",latency,ne)&&(this._latency=latency)}get description(){return this._description}set description(description){if(this.initialized&&""===this._id)throw new O(this._cmi_element+".description",j.DEPENDENCY_NOT_ESTABLISHED);Vt(this._cmi_element+".description",description,ie,!0)&&(this._description=description)}toJSON(){this.jsonString=!0;const result={id:this.id,type:this.type,objectives:this.objectives,timestamp:this.timestamp,weighting:this.weighting,learner_response:this.learner_response,result:this.result,latency:this.latency,description:this.description,correct_responses:this.correct_responses};return this.jsonString=!1,result}}class tr extends d{constructor(){super("cmi.interactions.n.objectives.n"),Qs(this,"_id","")}reset(){this._initialized=!1,this._id=""}get id(){return this._id}set id(id){if(""===id||""===id.trim())throw new O(this._cmi_element+".id",j.TYPE_MISMATCH);Vt(this._cmi_element+".id",id,ce)&&(this._id=id)}toJSON(){this.jsonString=!0;const result={id:this.id};return this.jsonString=!1,result}}function ir(e){return e.replace(/[[\]]/g,"")}function sr(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function rr(text,e){const t=sr(e),i=RegExp("(?<!\\\\)"+t,"g"),s=RegExp("\\\\"+t,"g");return text.split(i).map(t=>t.replace(s,e))}function nr(text,e){const t=sr(e),i=RegExp("(?<!\\\\)"+t),s=RegExp("\\\\"+t,"g"),r=text.split(i),n=r[0]??"";return 1===r.length?[n.replace(s,e)]:[n.replace(s,e),r.slice(1).join(e).replace(s,e)]}class or extends d{constructor(e){super("cmi.interactions.n.correct_responses.n"),Qs(this,"_pattern",""),Qs(this,"_interactionType"),this._interactionType=e}reset(){this._initialized=!1,this._pattern=""}get pattern(){return this._pattern}set pattern(pattern){if("fill-in"!==this._interactionType||""!==pattern){if(Vt(this._cmi_element+".pattern",pattern,"^.*$")){if(this._interactionType){const e=_e[this._interactionType];e&&("matching"===this._interactionType&&/\\[.,]/.test(pattern)||function(type,pattern,e){if(pattern.trim()!==pattern)throw new O("cmi.interactions.n.correct_responses.n.pattern",j.TYPE_MISMATCH);const t=e.delimiter?ir(e.delimiter):null,i=t?rr(pattern,t):[pattern];for(const e of i)if(e.trim()!==e)throw new O("cmi.interactions.n.correct_responses.n.pattern",j.TYPE_MISMATCH);if("fill-in"===type&&""===pattern)return;const s=e.delimiter?ir(e.delimiter):null;let r;if(r=s?rr(pattern,s):[pattern],!e.delimiter&&pattern.includes(","))throw new O("cmi.interactions.n.correct_responses.n.pattern",j.TYPE_MISMATCH);if((e.unique||!1===e.duplicate)&&new Set(r).size!==r.length)throw new O("cmi.interactions.n.correct_responses.n.pattern",j.TYPE_MISMATCH);if(0===r.length||r.length>e.max)throw new O("cmi.interactions.n.correct_responses.n.pattern",j.GENERAL_SET_FAILURE);const n=RegExp(e.format),o=e.format2?RegExp(e.format2):null,a=e=>{if(!n.test(e))throw new O("cmi.interactions.n.correct_responses.n.pattern",j.TYPE_MISMATCH)},c=(e,t)=>{if(!t)throw new O("cmi.interactions.n.correct_responses.n.pattern",j.TYPE_MISMATCH);const i=ir(t),s=e.split(RegExp("(?<!\\\\)"+sr(i),"g")).map(e=>e.replace(RegExp("\\\\"+sr(i),"g"),i));if(2!==s.length||""===s[0]||""===s[1])throw new O("cmi.interactions.n.correct_responses.n.pattern",j.TYPE_MISMATCH);if(void 0!==s[0]&&!n.test(s[0])||o&&void 0!==s[1]&&!o.test(s[1]))throw new O("cmi.interactions.n.correct_responses.n.pattern",j.TYPE_MISMATCH)};for(const t of r)switch(type){case"numeric":{const i=e.delimiter?ir(e.delimiter):":",s=t.split(i);if(1>s.length||s.length>2)throw new O("cmi.interactions.n.correct_responses.n.pattern",j.TYPE_MISMATCH);s.forEach(a);break}case"performance":{const i=e.delimiter2;if(!i)throw new O("cmi.interactions.n.correct_responses.n.pattern",j.TYPE_MISMATCH);const s=nr(t,ir(i));if(2!==s.length)throw new O("cmi.interactions.n.correct_responses.n.pattern",j.TYPE_MISMATCH);const[r,a]=s;if(""===r||""===a||r===a)throw new O("cmi.interactions.n.correct_responses.n.pattern",j.TYPE_MISMATCH);if(void 0===r||!n.test(r))throw new O("cmi.interactions.n.correct_responses.n.pattern",j.TYPE_MISMATCH);if(o&&void 0!==a&&!o.test(a))throw new O("cmi.interactions.n.correct_responses.n.pattern",j.TYPE_MISMATCH);break}default:e.delimiter2?c(t,e.delimiter2):a(t)}}(this._interactionType,pattern,e))}this._pattern=pattern}}else this._pattern=""}toJSON(){this.jsonString=!0;const result={pattern:this.pattern};return this.jsonString=!1,result}}var ar=Object.defineProperty;class cr extends bs{constructor(){super({CMIElement:"cmi.score",score_children:A.score_children,max:"",invalidErrorCode:j.READ_ONLY_ELEMENT,invalidTypeCode:j.TYPE_MISMATCH,invalidRangeCode:j.VALUE_OUT_OF_RANGE,decimalRegex:oe,errorClass:O}),((e,t,i)=>{t in e?ar(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i})(this,"_scaled"+"","")}reset(){this._initialized=!1,this._scaled="",this._raw="",this._min="",this._max=""}get scaled(){return this._scaled}set scaled(e){Vt(this._cmi_element+".scaled",e,oe)&&Ht(this._cmi_element+".scaled",e,"-1#1")&&(this._scaled=e)}getScoreObject(){const e=super.getScoreObject();return Number.isNaN(Number.parseFloat(this.scaled))||(e.scaled=Number.parseFloat(this.scaled)),e}toJSON(){this.jsonString=!0;const result={scaled:this.scaled,raw:this.raw,min:this.min,max:this.max};return this.jsonString=!1,result}}var lr=Object.defineProperty,ur=(e,t,i)=>((e,t,i)=>t in e?lr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class hr extends x{constructor(){super({CMIElement:"cmi.comments_from_lms",children:A.comments_children,errorCode:j.READ_ONLY_ELEMENT,errorClass:O})}}class dr extends x{constructor(){super({CMIElement:"cmi.comments_from_learner",children:A.comments_children,errorCode:j.READ_ONLY_ELEMENT,errorClass:O})}}class mr extends d{constructor(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];super("cmi.comments_from_learner.n"),ur(this,"_comment",""),ur(this,"_location",""),ur(this,"_timestamp",""),ur(this,"_readOnlyAfterInit"),this._comment="",this._location="",this._timestamp="",this._readOnlyAfterInit=e}reset(){this._initialized=!1}get comment(){return this._comment}set comment(comment){if(this.initialized&&this._readOnlyAfterInit)throw new O(this._cmi_element+".comment",j.READ_ONLY_ELEMENT);Vt(this._cmi_element+".comment",comment,se,!0)&&(this._comment=comment)}get location(){return this._location}set location(location){if(this.initialized&&this._readOnlyAfterInit)throw new O(this._cmi_element+".location",j.READ_ONLY_ELEMENT);Vt(this._cmi_element+".location",location,"^[\\u0000-\\uFFFF]{0,250}$")&&(this._location=location)}get timestamp(){return this._timestamp}set timestamp(timestamp){if(this.initialized&&this._readOnlyAfterInit)throw new O(this._cmi_element+".timestamp",j.READ_ONLY_ELEMENT);Vt(this._cmi_element+".timestamp",timestamp,re)&&(this._timestamp=timestamp)}toJSON(){this.jsonString=!0;const result={comment:this.comment,location:this.location,timestamp:this.timestamp};return this.jsonString=!1,result}}var pr=Object.defineProperty,_r=(e,t,i)=>((e,t,i)=>t in e?pr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class vr extends x{constructor(){super({CMIElement:"cmi.objectives",children:A.objectives_children,errorCode:j.READ_ONLY_ELEMENT,errorClass:O})}findObjectiveById(id){return this.childArray.find(e=>e.id===id)}findObjectiveByIndex(e){return this.childArray[e]}setObjectiveByIndex(e,t){this.childArray[e]=t}}class gr extends d{constructor(){super("cmi.objectives.n"),_r(this,"_id",""),_r(this,"_idIsSet",!1),_r(this,"_success_status","unknown"),_r(this,"_completion_status","unknown"),_r(this,"_progress_measure",""),_r(this,"_description",""),_r(this,"score"),this.score=new cr}reset(){this._initialized=!1,this._id="",this._idIsSet=!1,this._success_status="unknown",this._completion_status="unknown",this._progress_measure="",this._description="",this.score?.reset()}initialize(){super.initialize(),this.score?.initialize()}get id(){return this._id}set id(id){if(""===id||""===id.trim())throw new O(this._cmi_element+".id",j.TYPE_MISMATCH);if(this._idIsSet&&this._id!==id)throw new O(this._cmi_element+".id",j.GENERAL_SET_FAILURE);Vt(this._cmi_element+".id",id,ce)&&(this._id=id,this._idIsSet=!0)}get success_status(){return this._success_status}set success_status(success_status){if(this.initialized&&""===this._id)throw new O(this._cmi_element+".success_status",j.DEPENDENCY_NOT_ESTABLISHED);Vt(this._cmi_element+".success_status",success_status,ue)&&(this._success_status=success_status)}get completion_status(){return this._completion_status}set completion_status(completion_status){if(this.initialized&&""===this._id)throw new O(this._cmi_element+".completion_status",j.DEPENDENCY_NOT_ESTABLISHED);Vt(this._cmi_element+".completion_status",completion_status,le)&&(this._completion_status=completion_status)}get progress_measure(){return this._progress_measure}set progress_measure(progress_measure){if(this.initialized&&""===this._id)throw new O(this._cmi_element+".progress_measure",j.DEPENDENCY_NOT_ESTABLISHED);Vt(this._cmi_element+".progress_measure",progress_measure,oe)&&Ht(this._cmi_element+".progress_measure",progress_measure,"0#1")&&(this._progress_measure=progress_measure)}get description(){return this._description}set description(description){if(this.initialized&&""===this._id)throw new O(this._cmi_element+".description",j.DEPENDENCY_NOT_ESTABLISHED);Vt(this._cmi_element+".description",description,ie,!0)&&(this._description=description)}toJSON(){this.jsonString=!0;const result={id:this.id,success_status:this.success_status,completion_status:this.completion_status,progress_measure:this.progress_measure,description:this.description,score:this.score};return this.jsonString=!1,result}fromJSON(e){e&&"object"==typeof e&&("string"==typeof e.id&&(this.id=e.id),"string"==typeof e.success_status&&(this.success_status=e.success_status),"string"==typeof e.completion_status&&(this.completion_status=e.completion_status),void 0!==e.progress_measure&&(this.progress_measure=e.progress_measure+""),"string"==typeof e.description&&(this.description=e.description),e.score&&"object"==typeof e.score&&(void 0!==e.score.scaled&&(this.score.scaled=e.score.scaled+""),void 0!==e.score.raw&&(this.score.raw=e.score.raw+""),void 0!==e.score.min&&(this.score.min=e.score.min+""),void 0!==e.score.max&&(this.score.max=e.score.max+"")))}}var fr=Object.defineProperty,Sr=(e,t,i)=>((e,t,i)=>t in e?fr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class br extends d{constructor(){super("cmi"),Sr(this,"__version","1.0"),Sr(this,"__children",A.cmi_children)}get _version(){return this.__version}set _version(_version){throw new O(this._cmi_element+"._version",j.READ_ONLY_ELEMENT)}get _children(){return this.__children}set _children(_children){throw new O(this._cmi_element+"._children",j.READ_ONLY_ELEMENT)}reset(){this._initialized=!1}}var yr=Object.defineProperty,Cr=(e,t,i)=>((e,t,i)=>t in e?yr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Ar extends d{constructor(){super("cmi"),Cr(this,"_learner_id",""),Cr(this,"_learner_name","")}get learner_id(){return this._learner_id}set learner_id(learner_id){if(this.initialized)throw new O(this._cmi_element+".learner_id",j.READ_ONLY_ELEMENT);this._learner_id=learner_id}get learner_name(){return this._learner_name}set learner_name(learner_name){if(this.initialized)throw new O(this._cmi_element+".learner_name",j.READ_ONLY_ELEMENT);this._learner_name=learner_name}reset(){this._initialized=!1}}var Er=Object.defineProperty,wr=(e,t,i)=>((e,t,i)=>t in e?Er(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Mr extends d{constructor(){super("cmi"),wr(this,"_completion_status","unknown"),wr(this,"_success_status","unknown"),wr(this,"_progress_measure","")}get completion_status(){return this._completion_status}set completion_status(completion_status){Vt(this._cmi_element+".completion_status",completion_status,le)&&(this._completion_status=completion_status)}get success_status(){return this._success_status}set success_status(success_status){Vt(this._cmi_element+".success_status",success_status,ue)&&(this._success_status=success_status)}get progress_measure(){return this._progress_measure}set progress_measure(progress_measure){Vt(this._cmi_element+".progress_measure",progress_measure,oe)&&Ht(this._cmi_element+".progress_measure",progress_measure,"0#1")&&(this._progress_measure=progress_measure)}reset(){this._initialized=!1,this._completion_status="unknown",this._success_status="unknown",this._progress_measure=""}}var Or=Object.defineProperty,Rr=(e,t,i)=>((e,t,i)=>t in e?Or(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Tr extends d{constructor(){super("cmi"),Rr(this,"_entry",""),Rr(this,"_exit",""),Rr(this,"_session_time","PT0H0M0S"),Rr(this,"_total_time","PT0S")}get entry(){return this._entry}set entry(entry){if(this.initialized)throw new O(this._cmi_element+".entry",j.READ_ONLY_ELEMENT);this._entry=entry}get exit(){if(!this.jsonString)throw new O(this._cmi_element+".exit",j.WRITE_ONLY_ELEMENT);return this._exit}getExitValueInternal(){return this._exit}set exit(exit){"logout"===exit&&console.warn('SCORM 2004: cmi.exit value "logout" is deprecated per 4th Edition. Consider using "normal" or "suspend" instead.'),Vt(this._cmi_element+".exit",exit,"^(time-out|suspend|logout|normal)$",!0)&&(this._exit=exit)}get session_time(){if(!this.jsonString)throw new O(this._cmi_element+".session_time",j.WRITE_ONLY_ELEMENT);return this._session_time}set session_time(session_time){Vt(this._cmi_element+".session_time",session_time,ne)&&(this._session_time=session_time)}get total_time(){return this._total_time}set total_time(total_time){if(this.initialized)throw new O(this._cmi_element+".total_time",j.READ_ONLY_ELEMENT);this._total_time=total_time}getCurrentTotalTime(e){let t=this._session_time;if(void 0!==e){const s=(new Date).getTime()-e;t=i(s/1e3)}return function(e,t,s){const n=RegExp(s);return i(r(e,n)+r(t,n))}(this._total_time,t,ne)}reset(){this._initialized=!1,this._entry="ab-initio",this._exit="",this._session_time="PT0H0M0S"}}var jr=Object.defineProperty,Ir=(e,t,i)=>((e,t,i)=>t in e?jr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Nr extends d{constructor(){super("cmi"),Ir(this,"_location",""),Ir(this,"_launch_data",""),Ir(this,"_suspend_data","")}get location(){return this._location}set location(location){Vt(this._cmi_element+".location",location,"^[\\u0000-\\uFFFF]{0,1000}$")&&(this._location=location)}get launch_data(){return this._launch_data}set launch_data(launch_data){if(this.initialized)throw new O(this._cmi_element+".launch_data",j.READ_ONLY_ELEMENT);this._launch_data=launch_data}get suspend_data(){return this._suspend_data}set suspend_data(suspend_data){Vt(this._cmi_element+".suspend_data",suspend_data,te,!0)&&(this._suspend_data=suspend_data)}reset(){this._initialized=!1,this._location="",this._suspend_data=""}}var xr=Object.defineProperty,qr=(e,t,i)=>((e,t,i)=>t in e?xr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Dr extends d{constructor(){super("cmi"),qr(this,"_credit","credit"),qr(this,"_mode","normal"),qr(this,"_time_limit_action","continue,no message"),qr(this,"_max_time_allowed","")}get credit(){return this._credit}set credit(credit){if(this.initialized)throw new O(this._cmi_element+".credit",j.READ_ONLY_ELEMENT);if(!/^(credit|no-credit)$/.test(credit))throw new O(this._cmi_element+".credit",j.TYPE_MISMATCH);this._credit=credit}get mode(){return this._mode}set mode(mode){if(this.initialized)throw new O(this._cmi_element+".mode",j.READ_ONLY_ELEMENT);if(!/^(browse|normal|review)$/.test(mode))throw new O(this._cmi_element+".mode",j.TYPE_MISMATCH);this._mode=mode}get time_limit_action(){return this._time_limit_action}set time_limit_action(time_limit_action){if(this.initialized)throw new O(this._cmi_element+".time_limit_action",j.READ_ONLY_ELEMENT);if(!/^(exit,message|exit,no message|continue,message|continue,no message)$/.test(time_limit_action))throw new O(this._cmi_element+".time_limit_action",j.TYPE_MISMATCH);this._time_limit_action=time_limit_action}get max_time_allowed(){return this._max_time_allowed}set max_time_allowed(max_time_allowed){if(this.initialized)throw new O(this._cmi_element+".max_time_allowed",j.READ_ONLY_ELEMENT);if(""!==max_time_allowed){if(!RegExp(ne).test(max_time_allowed))throw new O(this._cmi_element+".max_time_allowed",j.TYPE_MISMATCH);this._max_time_allowed=max_time_allowed}else this._max_time_allowed=max_time_allowed}reset(){this._initialized=!1}}var Lr=Object.defineProperty,Pr=(e,t,i)=>((e,t,i)=>t in e?Lr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class zr extends d{constructor(){super("cmi"),Pr(this,"_scaled_passing_score",""),Pr(this,"_completion_threshold","")}get scaled_passing_score(){return this._scaled_passing_score}set scaled_passing_score(scaled_passing_score){if(this.initialized)throw new O(this._cmi_element+".scaled_passing_score",j.READ_ONLY_ELEMENT??404);if(""===scaled_passing_score)return void(this._scaled_passing_score=scaled_passing_score);if(!RegExp(oe).test(scaled_passing_score))throw new O(this._cmi_element+".scaled_passing_score",j.TYPE_MISMATCH??406);const e=parseFloat(scaled_passing_score);if(-1>e||e>1)throw new O(this._cmi_element+".scaled_passing_score",j.VALUE_OUT_OF_RANGE??407);this._scaled_passing_score=scaled_passing_score}get completion_threshold(){return this._completion_threshold}set completion_threshold(e){if(this.initialized)throw new O(this._cmi_element+".completion_threshold",j.READ_ONLY_ELEMENT??404);if(""===e)return void(this._completion_threshold=e);if(!RegExp(oe).test(e))throw new O(this._cmi_element+".completion_threshold",j.TYPE_MISMATCH??406);const t=parseFloat(e);if(0>t||t>1)throw new O(this._cmi_element+".completion_threshold",j.VALUE_OUT_OF_RANGE??407);this._completion_threshold=e}reset(){this._initialized=!1}}var Fr=Object.defineProperty,kr=(e,t,i)=>((e,t,i)=>t in e?Fr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Vr extends m{constructor(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];super("cmi"),kr(this,"metadata"),kr(this,"learner"),kr(this,"status"),kr(this,"session"),kr(this,"content"),kr(this,"settings"),kr(this,"thresholds"),kr(this,"learner_preference"),kr(this,"score"),kr(this,"comments_from_learner"),kr(this,"comments_from_lms"),kr(this,"interactions"),kr(this,"objectives"),this.metadata=new br,this.learner=new Ar,this.status=new Mr,this.session=new Tr,this.content=new Nr,this.settings=new Dr,this.thresholds=new zr,this.learner_preference=new Ks,this.score=new cr,this.comments_from_learner=new dr,this.comments_from_lms=new hr,this.interactions=new Zs,this.objectives=new vr,e&&this.initialize()}initialize(){super.initialize(),this.metadata?.initialize(),this.learner?.initialize(),this.status?.initialize(),this.session?.initialize(),this.content?.initialize(),this.settings?.initialize(),this.thresholds?.initialize(),this.learner_preference?.initialize(),this.score?.initialize(),this.comments_from_learner?.initialize(),this.comments_from_lms?.initialize(),this.interactions?.initialize(),this.objectives?.initialize()}reset(){this._initialized=!1,this.metadata?.reset(),this.learner?.reset(),this.status?.reset(),this.session?.reset(),this.content?.reset(),this.settings?.reset(),this.thresholds?.reset(),this.objectives?.reset(!0),this.interactions?.reset(!0),this.score?.reset(),this.comments_from_learner?.reset(),this.comments_from_lms?.reset(),this.learner_preference?.reset()}get _version(){return this.metadata._version}set _version(_version){this.metadata._version=_version}get _children(){return this.metadata._children}set _children(_children){this.metadata._children=_children}get completion_status(){return this.status.completion_status}set completion_status(completion_status){this.status.completion_status=completion_status}get completion_threshold(){return this.thresholds.completion_threshold}set completion_threshold(e){this.thresholds.completion_threshold=e}get credit(){return this.settings.credit}set credit(credit){this.settings.credit=credit}get entry(){return this.session.entry}set entry(entry){this.session.entry=entry}get exit(){return this.session.jsonString=this.jsonString,this.session.exit}set exit(exit){this.session.exit=exit}getExitValueInternal(){return this.session.getExitValueInternal()}get launch_data(){return this.content.launch_data}set launch_data(launch_data){this.content.launch_data=launch_data}get learner_id(){return this.learner.learner_id}set learner_id(learner_id){this.learner.learner_id=learner_id}get learner_name(){return this.learner.learner_name}set learner_name(learner_name){this.learner.learner_name=learner_name}get location(){return this.content.location}set location(location){this.content.location=location}get max_time_allowed(){return this.settings.max_time_allowed}set max_time_allowed(max_time_allowed){this.settings.max_time_allowed=max_time_allowed}get mode(){return this.settings.mode}set mode(mode){this.settings.mode=mode}get progress_measure(){return this.status.progress_measure}set progress_measure(progress_measure){this.status.progress_measure=progress_measure}get scaled_passing_score(){return this.thresholds.scaled_passing_score}set scaled_passing_score(scaled_passing_score){this.thresholds.scaled_passing_score=scaled_passing_score}get session_time(){return this.session.jsonString=this.jsonString,this.session.session_time}set session_time(session_time){this.session.session_time=session_time}get success_status(){return this.status.success_status}set success_status(success_status){this.status.success_status=success_status}get suspend_data(){return this.content.suspend_data}set suspend_data(suspend_data){this.content.suspend_data=suspend_data}get time_limit_action(){return this.settings.time_limit_action}set time_limit_action(time_limit_action){this.settings.time_limit_action=time_limit_action}get total_time(){return this.session.total_time}set total_time(total_time){this.session.total_time=total_time}getCurrentTotalTime(){return this.session.getCurrentTotalTime(this.start_time)}toJSON(){this.jsonString=!0,this.session.jsonString=!0;const result={comments_from_learner:this.comments_from_learner,comments_from_lms:this.comments_from_lms,completion_status:this.completion_status,completion_threshold:this.completion_threshold,credit:this.credit,entry:this.entry,exit:this.exit,interactions:this.interactions,launch_data:this.launch_data,learner_id:this.learner_id,learner_name:this.learner_name,learner_preference:this.learner_preference,location:this.location,max_time_allowed:this.max_time_allowed,mode:this.mode,objectives:this.objectives,progress_measure:this.progress_measure,scaled_passing_score:this.scaled_passing_score,score:this.score,session_time:this.session_time,success_status:this.success_status,suspend_data:this.suspend_data,time_limit_action:this.time_limit_action,total_time:this.total_time};return this.jsonString=!1,this.session.jsonString=!1,result}}var Hr=Object.defineProperty,Br=(e,t,i)=>((e,t,i)=>t in e?Hr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Ur extends d{constructor(){super("adl"),Br(this,"nav"),Br(this,"data",new Gr),Br(this,"_sequencing",null),this.nav=new $r,this.data=new Gr}initialize(){super.initialize(),this.nav?.initialize()}reset(){this._initialized=!1,this.nav?.reset()}get sequencing(){return this._sequencing}set sequencing(e){this._sequencing=e,e&&(e.adlNav=this.nav,this.nav.sequencing=e)}toJSON(){this.jsonString=!0;const result={nav:this.nav,data:this.data};return this.jsonString=!1,result}}class $r extends d{constructor(){super("adl.nav"),Br(this,"_request","_none_"),Br(this,"_sequencing",null),Br(this,"request_valid"),this.request_valid=new Kr,this.request_valid.setParentNav(this)}get sequencing(){return this._sequencing}set sequencing(e){this._sequencing=e}initialize(){super.initialize(),this.request_valid?.initialize()}reset(){this._initialized=!1,this._request="_none_",this._sequencing&&(this._sequencing.adlNav=null),this._sequencing=null,this.request_valid?.reset()}get request(){return this._request}set request(request){Vt(this._cmi_element+".request",request,he)&&(this._request=request)}toJSON(){this.jsonString=!0;const result={request:this.request};return this.jsonString=!1,result}}class Gr extends x{constructor(){super({CMIElement:"adl.data",children:A.adl_data_children,errorCode:j.READ_ONLY_ELEMENT,errorClass:O})}}class Yr extends d{constructor(){super("adl.data.n"),Br(this,"_id",""),Br(this,"_store",""),Br(this,"_idIsSet",!1),Br(this,"_storeIsSet",!1)}reset(){this._initialized=!1,this._idIsSet=!1,this._storeIsSet=!1}get id(){return this._id}set id(id){if(this.initialized)throw new O(this._cmi_element+".id",j.READ_ONLY_ELEMENT);Vt(this._cmi_element+".id",id,ce)&&(this._id=id,this._idIsSet=!0)}get store(){if(this.initialized&&!this._storeIsSet)throw new O(this._cmi_element+".store",j.VALUE_NOT_INITIALIZED);return this._store}set store(e){if(this.initialized&&!this._idIsSet)throw new O(this._cmi_element+".store",j.DEPENDENCY_NOT_ESTABLISHED);Vt(this._cmi_element+".store",e,te)&&(this._store=e,this._storeIsSet=!0)}toJSON(){this.jsonString=!0;const result={id:this._id,store:this._store};return this.jsonString=!1,result}}class Wr{constructor(){Br(this,"_parentNav",null),Br(this,"_staticValues",{})}setParentNav(nav){this._parentNav=nav}_isTargetValid(e){if(this._parentNav?.sequencing?.overallSequencingProcess){const t=this._parentNav.sequencing.overallSequencingProcess;if(t.predictChoiceEnabled)return t.predictChoiceEnabled(e)?"true":"false"}const t=this._staticValues[e];return t===D?"true":t===L?"false":"unknown"}getAll(){return{...this._staticValues}}setAll(e){this._staticValues={...e}}}class Jr{constructor(){Br(this,"_parentNav",null),Br(this,"_staticValues",{})}setParentNav(nav){this._parentNav=nav}_isTargetValid(e){if(this._parentNav?.sequencing?.activityTree)return this._parentNav.sequencing.activityTree.getActivity(e)?"true":"false";const t=this._staticValues[e];return t===D?"true":t===L?"false":"unknown"}getAll(){return{...this._staticValues}}setAll(e){this._staticValues={...e}}}class Kr extends d{constructor(){super("adl.nav.request_valid"),Br(this,"_continue","unknown"),Br(this,"_previous","unknown"),Br(this,"_choice"),Br(this,"_jump"),Br(this,"_exit","unknown"),Br(this,"_exitAll","unknown"),Br(this,"_abandon","unknown"),Br(this,"_abandonAll","unknown"),Br(this,"_suspendAll","unknown"),Br(this,"_parentNav",null),this._choice=new Wr,this._jump=new Jr}setParentNav(nav){this._parentNav=nav,this._choice.setParentNav(nav),this._jump.setParentNav(nav)}reset(){this._initialized=!1,this._continue="unknown",this._previous="unknown",this._choice.setAll({}),this._jump.setAll({}),this._exit="unknown",this._exitAll="unknown",this._abandon="unknown",this._abandonAll="unknown",this._suspendAll="unknown"}get continue(){if(this._parentNav?.sequencing?.overallSequencingProcess){const e=this._parentNav.sequencing.overallSequencingProcess;if(e.predictContinueEnabled)return e.predictContinueEnabled()?"true":"false"}return this._continue}set continue(e){if(this.initialized)throw new O(this._cmi_element+".continue",j.READ_ONLY_ELEMENT);Vt(this._cmi_element+".continue",e,de)&&(this._continue=e)}get previous(){if(this._parentNav?.sequencing?.overallSequencingProcess){const e=this._parentNav.sequencing.overallSequencingProcess;if(e.predictPreviousEnabled)return e.predictPreviousEnabled()?"true":"false"}return this._previous}set previous(e){if(this.initialized)throw new O(this._cmi_element+".previous",j.READ_ONLY_ELEMENT);Vt(this._cmi_element+".previous",e,de)&&(this._previous=e)}get choice(){return this._choice}set choice(e){if(this.initialized)throw new O(this._cmi_element+".choice",j.READ_ONLY_ELEMENT);if("object"!=typeof e)throw new O(this._cmi_element+".choice",j.TYPE_MISMATCH);const t={};for(const i in e)if({}.hasOwnProperty.call(e,i)&&Vt(this._cmi_element+".choice."+i,e[i]||"",de)&&Vt(this._cmi_element+".choice."+i,i,me)){const s=e[i];"true"===s?t[i]=D:"false"===s?t[i]=L:"unknown"===s&&(t[i]=q)}this._choice.setAll(t)}get jump(){return this._jump}set jump(e){if(this.initialized)throw new O(this._cmi_element+".jump",j.READ_ONLY_ELEMENT);if("object"!=typeof e)throw new O(this._cmi_element+".jump",j.TYPE_MISMATCH);const t={};for(const i in e)if({}.hasOwnProperty.call(e,i)&&Vt(this._cmi_element+".jump."+i,e[i]||"",de)&&Vt(this._cmi_element+".jump."+i,i,me)){const s=e[i];"true"===s?t[i]=D:"false"===s?t[i]=L:"unknown"===s&&(t[i]=q)}this._jump.setAll(t)}get exit(){return this._exit}set exit(e){if(this.initialized)throw new O(this._cmi_element+".exit",j.READ_ONLY_ELEMENT);Vt(this._cmi_element+".exit",e,de)&&(this._exit=e)}get exitAll(){return this._exitAll}set exitAll(e){if(this.initialized)throw new O(this._cmi_element+".exitAll",j.READ_ONLY_ELEMENT);Vt(this._cmi_element+".exitAll",e,de)&&(this._exitAll=e)}get abandon(){return this._abandon}set abandon(e){if(this.initialized)throw new O(this._cmi_element+".abandon",j.READ_ONLY_ELEMENT);Vt(this._cmi_element+".abandon",e,de)&&(this._abandon=e)}get abandonAll(){return this._abandonAll}set abandonAll(e){if(this.initialized)throw new O(this._cmi_element+".abandonAll",j.READ_ONLY_ELEMENT);Vt(this._cmi_element+".abandonAll",e,de)&&(this._abandonAll=e)}get suspendAll(){return this._suspendAll}set suspendAll(e){if(this.initialized)throw new O(this._cmi_element+".suspendAll",j.READ_ONLY_ELEMENT);Vt(this._cmi_element+".suspendAll",e,de)&&(this._suspendAll=e)}toJSON(){this.jsonString=!0;const result={previous:this.previous,continue:this.continue,choice:this._choice.getAll(),jump:this._jump.getAll(),exit:this.exit,exitAll:this.exitAll,abandon:this.abandon,abandonAll:this.abandonAll,suspendAll:this.suspendAll};return this.jsonString=!1,result}}var Xr=Object.defineProperty,Qr=(e,t,i)=>((e,t,i)=>t in e?Xr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Zr extends d{constructor(e){super("activityTree"),Qr(this,"_root",null),Qr(this,"_currentActivity",null),Qr(this,"_suspendedActivity",null),Qr(this,"_activities",new Map),e&&(this.root=e)}initialize(){super.initialize(),this._root&&this._root.initialize()}reset(){this._initialized=!1,this._currentActivity=null,this._suspendedActivity=null,this._activities.clear(),this._root&&(this._root.reset(),this._activities.set(this._root.id,this._root),this._addActivitiesToMap(this._root))}get root(){return this._root}set root(e){if(null!==e&&!(e instanceof Zt))throw new O(this._cmi_element+".root",j.TYPE_MISMATCH);this._activities.clear(),this._root=e,e&&(this._activities.set(e.id,e),this._addActivitiesToMap(e))}_addActivitiesToMap(e){for(const t of e.children)this._activities.set(t.id,t),this._addActivitiesToMap(t)}get currentActivity(){return this._currentActivity}set currentActivity(e){if(null!==e&&!(e instanceof Zt))throw new O(this._cmi_element+".currentActivity",j.TYPE_MISMATCH);if(this._currentActivity){this._currentActivity.isActive=!1;let e=this._currentActivity.parent;for(;e;)e.isActive=!1,e=e.parent}if(this._currentActivity=e,e){e.isActive=!0;let t=e.parent;for(;t;)t.isActive=!0,t=t.parent}}setCurrentActivityWithoutActivation(e){if(null!==e&&!(e instanceof Zt))throw new O(this._cmi_element+".currentActivity",j.TYPE_MISMATCH);if(this._currentActivity){const t=new Set;if(e){t.add(e);let i=e.parent;for(;i;)t.add(i),i=i.parent}this._currentActivity.isActive=!1;let i=this._currentActivity.parent;for(;i;)t.has(i)||(i.isActive=!1),i=i.parent}this._currentActivity=e}get suspendedActivity(){return this._suspendedActivity}set suspendedActivity(e){if(null!==e&&!(e instanceof Zt))throw new O(this._cmi_element+".suspendedActivity",j.TYPE_MISMATCH);if(this._suspendedActivity){this._suspendedActivity.isSuspended=!1;let e=this._suspendedActivity.parent;for(;e;)e.isSuspended=!1,e=e.parent}if(this._suspendedActivity=e,e){e.isSuspended=!0;let t=e.parent;for(;t;)t.isSuspended=!0,t=t.parent}}getActivity(id){return this._activities.get(id)||null}getAllActivities(){return Array.from(this._activities.values())}getParent(e){return e.parent}getChildren(e){return 1>=arguments.length||void 0===arguments[1]||arguments[1]?e.getAvailableChildren():e.children}getSiblings(e){return e.parent?e.parent.children.filter(t=>t!==e):[]}getNextSibling(e){let t=1>=arguments.length||void 0===arguments[1]||arguments[1];if(!e.parent)return null;let i=t?e.parent.getAvailableChildren():e.parent.children,s=i.indexOf(e);return-1===s&&t&&(i=e.parent.children,s=i.indexOf(e)),-1===s||s===i.length-1?null:i[s+1]??null}getPreviousSibling(e){let t=1>=arguments.length||void 0===arguments[1]||arguments[1];if(!e.parent)return null;let i=t?e.parent.getAvailableChildren():e.parent.children,s=i.indexOf(e);return-1===s&&t&&(i=e.parent.children,s=i.indexOf(e)),s>0?i[s-1]??null:null}getFirstChild(e){const t=1>=arguments.length||void 0===arguments[1]||arguments[1]?e.getAvailableChildren():e.children;return 0===t.length?null:t[0]??null}getLastChild(e){const t=1>=arguments.length||void 0===arguments[1]||arguments[1]?e.getAvailableChildren():e.children;return 0===t.length?null:t[t.length-1]??null}getCommonAncestor(e,t){const i=[];let s=e;for(;s;)i.unshift(s),s=s.parent;for(s=t;s;){if(i.includes(s))return s;s=s.parent}return null}toJSON(){this.jsonString=!0;const result={root:this._root,currentActivity:this._currentActivity?this._currentActivity.id:null,suspendedActivity:this._suspendedActivity?this._suspendedActivity.id:null};return this.jsonString=!1,result}}var en=Object.defineProperty,tn=(e,t,i)=>((e,t,i)=>t in e?en(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class sn extends d{constructor(){super("sequencing"),tn(this,"_activityTree"),tn(this,"_sequencingRules"),tn(this,"_sequencingControls"),tn(this,"_rollupRules"),tn(this,"_adlNav",null),tn(this,"_hideLmsUi",[]),tn(this,"_auxiliaryResources",[]),tn(this,"_overallSequencingProcess",null),this._activityTree=new Zr,this._sequencingRules=new Re,this._sequencingControls=new Je,this._rollupRules=new Jt}initialize(){super.initialize(),this._activityTree.initialize(),this._sequencingRules.initialize(),this._sequencingControls.initialize(),this._rollupRules.initialize()}reset(){this._initialized=!1,this._activityTree.reset(),this._sequencingRules.reset(),this._sequencingControls.reset(),this._rollupRules.reset(),this._hideLmsUi=[],this._auxiliaryResources=[]}get activityTree(){return this._activityTree}set activityTree(e){if(!(e instanceof Zr))throw new O(this._cmi_element+".activityTree",j.TYPE_MISMATCH);this._activityTree=e}get sequencingRules(){return this._sequencingRules}set sequencingRules(e){if(!(e instanceof Re))throw new O(this._cmi_element+".sequencingRules",j.TYPE_MISMATCH);this._sequencingRules=e}get sequencingControls(){return this._sequencingControls}set sequencingControls(e){if(!(e instanceof Je))throw new O(this._cmi_element+".sequencingControls",j.TYPE_MISMATCH);this._sequencingControls=e}get hideLmsUi(){return[...this._hideLmsUi]}set hideLmsUi(e){this._hideLmsUi=[...e]}get auxiliaryResources(){return this._auxiliaryResources.map(e=>({...e}))}set auxiliaryResources(e){this._auxiliaryResources=e.map(e=>({...e}))}get rollupRules(){return this._rollupRules}set rollupRules(e){if(!(e instanceof Jt))throw new O(this._cmi_element+".rollupRules",j.TYPE_MISMATCH);this._rollupRules=e}get adlNav(){return this._adlNav}set adlNav(e){this._adlNav=e}get overallSequencingProcess(){return this._overallSequencingProcess}set overallSequencingProcess(e){this._overallSequencingProcess=e}processRollup(){const e=this._activityTree.root;e&&this._processRollupRecursive(e)}_processRollupRecursive(e){for(const t of e.children)this._processRollupRecursive(t);this._rollupRules.processRollup(e)}getCurrentActivity(){return this._activityTree.currentActivity}getRootActivity(){return this._activityTree.root}toJSON(){this.jsonString=!0;const result={activityTree:this._activityTree,sequencingRules:this._sequencingRules,sequencingControls:this._sequencingControls,rollupRules:this._rollupRules,adlNav:this._adlNav};return this.jsonString=!1,result}}var rn=Object.defineProperty;class nn{constructor(e){var t;((e,t,i)=>{t in e?rn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i})(this,"context"+"",t),this.context=e}checkValidResponseType(e,t,i,s){let r=[];t?.delimiter?r=(i+"").split(t.delimiter):r[0]=i,r.length>0&&t.max>=r.length?this.context.checkCorrectResponseValue?this.context.checkCorrectResponseValue(e,s,r,i):this.checkCorrectResponseValue(e,s,r,i):r.length>t.max&&this.context.throwSCORMError(e,j.GENERAL_SET_FAILURE,"Data Model Element Pattern Too Long: "+i)}checkDuplicateChoiceResponse(e,t,i){const s=t.correct_responses._count;if("choice"===t.type)for(let r=0;s>r&&"0"===this.context.getLastErrorCode();r++){const s=t.correct_responses.childArray[r];s?.pattern===i&&this.context.throwSCORMError(e,j.GENERAL_SET_FAILURE,""+i)}}validateCorrectResponse(e,t,i){const s=+e.split(".")[4];if(!t)return void this.context.throwSCORMError(e,j.DEPENDENCY_NOT_ESTABLISHED,e);const r=t.correct_responses._count;this.checkDuplicateChoiceResponse(e,t,i);const n=_e[t.type];n&&(void 0===n.limit||n.limit>r)?(this.checkValidResponseType(e,n,i,t.type),"0"===this.context.getLastErrorCode()&&(!n.duplicate||!this.checkDuplicatedPattern(t.correct_responses,s,i))||"0"===this.context.getLastErrorCode()&&""===i||"0"===this.context.getLastErrorCode()&&this.context.throwSCORMError(e,j.GENERAL_SET_FAILURE,`Data Model Element Pattern Already Exists: ${e} - ${i}`)):this.context.throwSCORMError(e,j.GENERAL_SET_FAILURE,`Data Model Element Collection Limit Reached: ${e} - ${i}`)}checkDuplicatedPattern(e,t,i){let s=!1;const r=e._count;for(let n=0;r>n&&!s;n++)if(n!==t){const t=e.childArray[n],r=t?.pattern;r===i&&(s=!0)}return s}checkCorrectResponseValue(e,t,i,s){const r=_e[t];if(!r)return void this.context.throwSCORMError(e,j.TYPE_MISMATCH,"Incorrect Response Type: "+t);const n=RegExp(r.format);for(let o=0;i.length>o&&"0"===this.context.getLastErrorCode();o++)if(t.match("^(fill-in|long-fill-in|matching|performance|sequencing)$")&&(i[o]=this.removeCorrectResponsePrefixes(e,i[o])),r?.delimiter2){const a=i[o].split(r.delimiter2);2===a.length&&a[0].match(n)&&r.format2&&a[1].match(RegExp(r.format2))||this.context.throwSCORMError(e,j.TYPE_MISMATCH,`${t}: ${s}`)}else{const a=i[o].match(n);if(!a&&""!==s||!a&&"true-false"===t)this.context.throwSCORMError(e,j.TYPE_MISMATCH,`${t}: ${s}`);else if("numeric"===t&&i.length>1)+i[0]>+i[1]&&this.context.throwSCORMError(e,j.TYPE_MISMATCH,`${t}: ${s}`);else if(""!==i[o]&&r.unique)for(let r=0;o>r&&"0"===this.context.getLastErrorCode();r++)i[o]===i[r]&&this.context.throwSCORMError(e,j.TYPE_MISMATCH,`${t}: ${s}`)}}removeCorrectResponsePrefixes(e,t){let i=!1,s=!1,r=!1;const n=RegExp("^({(lang|case_matters|order_matters)=([^}]+)})");let o,a=t.match(n);for(;a;){switch(a[2]){case"lang":if(o=t.match("^(({lang=([a-zA-Z]{1,8}|i|x)?(-[a-zA-Z0-9-]{2,8})?}))(.*?)$"),o){const i=o[3];void 0!==i&&i.length>0&&(ve.includes(i.toLowerCase())||this.context.throwSCORMError(e,j.TYPE_MISMATCH,""+t))}r=!0;break;case"case_matters":r||i||s||"true"!==a[3]&&"false"!==a[3]&&this.context.throwSCORMError(e,j.TYPE_MISMATCH,""+t),s=!0;break;case"order_matters":s||r||i||"true"!==a[3]&&"false"!==a[3]&&this.context.throwSCORMError(e,j.TYPE_MISMATCH,""+t),i=!0}a=(t=t.substring(a[1]?.length||0)).match(n)}return t}}var an=Object.defineProperty,cn=(e,t,i)=>((e,t,i)=>t in e?an(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class ln{constructor(e,t){cn(this,"context"),cn(this,"responseValidator"),this.context=e,this.responseValidator=t}getChildElement(e,t,i){if(c(e,"cmi\\.objectives\\.\\d+"))return new gr;if(i){if(c(e,"cmi\\.interactions\\.\\d+\\.correct_responses\\.\\d+"))return this.createCorrectResponsesObject(e,t);if(c(e,"cmi\\.interactions\\.\\d+\\.objectives\\.\\d+"))return new tr}else if(c(e,"cmi\\.interactions\\.\\d+"))return new er;return c(e,"cmi\\.comments_from_learner\\.\\d+")?new mr:c(e,"cmi\\.comments_from_lms\\.\\d+")?new mr(!0):c(e,"adl\\.data\\.\\d+")?new Yr:null}createCorrectResponsesObject(e,t){const i=e.split("."),s=this.context.cmi.interactions.childArray[+i[2]];if(this.context.isInitialized()){if(void 0===s||!s.type)return this.context.throwSCORMError(e,j.DEPENDENCY_NOT_ESTABLISHED,e),null;{const i=_e[s.type];if(i&&void 0!==i.limit&&s.correct_responses._count>=i.limit)return this.context.throwSCORMError(e,j.GENERAL_SET_FAILURE,"Data Model Element Collection Limit Reached: "+e),null;if(this.responseValidator.checkDuplicateChoiceResponse(e,s,t),!i)return this.context.throwSCORMError(e,j.GENERAL_SET_FAILURE,"Incorrect Response Type: "+s.type),null;this.responseValidator.checkValidResponseType(e,i,t,s.type)}}return"0"===this.context.getLastErrorCode()?new or(s?.type):null}evaluateCompletionStatus(){const e=this.context.cmi.completion_threshold,t=this.context.cmi.progress_measure,i=this.context.cmi.completion_status;if(""!==e&&null!=e){const i=parseFloat(e+"");if(!isNaN(i)){if(""!==t&&null!=t){const e=parseFloat(t+"");if(!isNaN(e))return i>e?V:k}return H}}return i||H}evaluateSuccessStatus(){const e=this.context.cmi.scaled_passing_score,t=this.context.cmi.score.scaled,i=this.context.cmi.success_status;if(""!==e&&null!=e){const i=parseFloat(e+"");if(!isNaN(i)){if(""!==t&&null!=t){const e=parseFloat(t+"");if(!isNaN(e))return i>e?z:P}return F}}return i||F}}class un{applySequencingControlsSettings(e,t){void 0!==t.enabled&&(e.enabled=t.enabled),void 0!==t.choice&&(e.choice=t.choice),void 0!==t.choiceExit&&(e.choiceExit=t.choiceExit),void 0!==t.flow&&(e.flow=t.flow),void 0!==t.forwardOnly&&(e.forwardOnly=t.forwardOnly),void 0!==t.useCurrentAttemptObjectiveInfo&&(e.useCurrentAttemptObjectiveInfo=t.useCurrentAttemptObjectiveInfo),void 0!==t.useCurrentAttemptProgressInfo&&(e.useCurrentAttemptProgressInfo=t.useCurrentAttemptProgressInfo),void 0!==t.preventActivation&&(e.preventActivation=t.preventActivation),void 0!==t.constrainChoice&&(e.constrainChoice=t.constrainChoice),void 0!==t.stopForwardTraversal&&(e.stopForwardTraversal=t.stopForwardTraversal),void 0!==t.rollupObjectiveSatisfied&&(e.rollupObjectiveSatisfied=t.rollupObjectiveSatisfied),void 0!==t.rollupProgressCompletion&&(e.rollupProgressCompletion=t.rollupProgressCompletion),void 0!==t.objectiveMeasureWeight&&(e.objectiveMeasureWeight=t.objectiveMeasureWeight),void 0!==t.selectionTiming&&(e.selectionTiming=t.selectionTiming),void 0!==t.selectCount&&(e.selectCount=t.selectCount),void 0!==t.randomizeChildren&&(e.randomizeChildren=t.randomizeChildren),void 0!==t.randomizationTiming&&(e.randomizationTiming=t.randomizationTiming),void 0!==t.selectionCountStatus&&(e.selectionCountStatus=t.selectionCountStatus),void 0!==t.reorderChildren&&(e.reorderChildren=t.reorderChildren),void 0!==t.completionSetByContent&&(e.completionSetByContent=t.completionSetByContent),void 0!==t.objectiveSetByContent&&(e.objectiveSetByContent=t.objectiveSetByContent)}applySequencingRulesSettings(e,t){if(t){if(t.preConditionRules)for(const i of t.preConditionRules){const t=this.createSequencingRule(i);e.addPreConditionRule(t)}if(t.exitConditionRules)for(const i of t.exitConditionRules){const t=this.createSequencingRule(i);e.addExitConditionRule(t)}if(t.postConditionRules)for(const i of t.postConditionRules){const t=this.createSequencingRule(i);e.addPostConditionRule(t)}}}createSequencingRule(e){const t=new Oe(e.action,e.conditionCombination);for(const i of e.conditions){const e=new Me(i.condition,i.operator,new Map(Object.entries(i.parameters||{})));i.referencedObjective&&(e.referencedObjective=i.referencedObjective),t.addCondition(e)}return t}applyRollupRulesSettings(e,t){if(t?.rules)for(const i of t.rules){const t=this.createRollupRule(i);e.addRule(t)}}createRollupRule(e){const t=new Wt(e.action,e.consideration,e.minimumCount,e.minimumPercent);for(const i of e.conditions){const e=new Yt(i.condition,new Map(Object.entries(i.parameters||{})));t.addCondition(e)}return t}sanitizeSequencingCollections(e){if(!e)return{};const t={};for(const[id,i]of Object.entries(e)){const e=id.trim();if(!e)continue;const s={};if(i.sequencingControls&&(s.sequencingControls={...i.sequencingControls}),i.sequencingRules){const e=e=>{const t={action:e.action,conditions:e.conditions.map(e=>{const t={condition:e.condition};return void 0!==e.operator&&(t.operator=e.operator),e.parameters&&(t.parameters={...e.parameters}),void 0!==e.referencedObjective&&(t.referencedObjective=e.referencedObjective),t})};return void 0!==e.conditionCombination&&(t.conditionCombination=e.conditionCombination),t};s.sequencingRules={},i.sequencingRules.preConditionRules&&(s.sequencingRules.preConditionRules=i.sequencingRules.preConditionRules.map(e)),i.sequencingRules.exitConditionRules&&(s.sequencingRules.exitConditionRules=i.sequencingRules.exitConditionRules.map(e)),i.sequencingRules.postConditionRules&&(s.sequencingRules.postConditionRules=i.sequencingRules.postConditionRules.map(e))}i.rollupRules&&(s.rollupRules={rules:i.rollupRules.rules?.map(e=>{const t={action:e.action,conditions:e.conditions.map(e=>{const t={condition:e.condition};return e.parameters&&(t.parameters={...e.parameters}),t})};return void 0!==e.consideration&&(t.consideration=e.consideration),void 0!==e.minimumCount&&(t.minimumCount=e.minimumCount),void 0!==e.minimumPercent&&(t.minimumPercent=e.minimumPercent),t})}),i.rollupConsiderations&&(s.rollupConsiderations={...i.rollupConsiderations}),i.selectionRandomizationState&&(s.selectionRandomizationState=this.cloneSelectionRandomizationState(i.selectionRandomizationState)),i.hideLmsUi&&(s.hideLmsUi=this.sanitizeHideLmsUi(i.hideLmsUi)),i.auxiliaryResources&&(s.auxiliaryResources=this.sanitizeAuxiliaryResources(i.auxiliaryResources)),t[e]=s}return t}normalizeCollectionRefs(e){if(!e)return[];const t=Array.isArray(e)?e:[e],i=new Set,result=[];for(const e of t){const t=e.trim();t&&!i.has(t)&&(i.add(t),result.push(t))}return result}applySequencingCollection(e,t,i){if(t){if(t.sequencingControls&&this.applySequencingControlsSettings(e.sequencingControls,t.sequencingControls),t.sequencingRules&&this.applySequencingRulesSettings(e.sequencingRules,t.sequencingRules),t.rollupRules&&this.applyRollupRulesSettings(e.rollupRules,t.rollupRules),t.rollupConsiderations&&e.applyRollupConsiderations(t.rollupConsiderations),t.hideLmsUi){const i=this.mergeHideLmsUi(e.hideLmsUi,t.hideLmsUi);i.length>0&&(e.hideLmsUi=i)}if(t.auxiliaryResources){const i=this.sanitizeAuxiliaryResources(t.auxiliaryResources);i.length>0&&(e.auxiliaryResources=this.mergeAuxiliaryResources(e.auxiliaryResources,i))}t.selectionRandomizationState&&i.push(this.cloneSelectionRandomizationState(t.selectionRandomizationState))}}sanitizeHideLmsUi(e){if(!e)return[];const t=new Set(be),i=new Set,s=[];for(const r of e)t.has(r)&&!i.has(r)&&(i.add(r),s.push(r));return s}mergeHideLmsUi(e,t){return t&&0!==t.length?this.sanitizeHideLmsUi([...e,...t]):e}sanitizeAuxiliaryResources(e){if(!e)return[];const t=new Set,i=[];for(const s of e){if(!s)continue;if(!s.resourceId||"string"!=typeof s.resourceId)continue;if(!s.purpose||"string"!=typeof s.purpose)continue;const e=s.resourceId.trim(),r=s.purpose.trim();if(!e||!r)continue;const n=`${e}::${r}`;t.has(n)||(t.add(n),i.push({resourceId:e,purpose:r}))}return i}mergeAuxiliaryResources(e,t){const i=[],s=new Set;for(const r of[...e??[],...t??[]]){if(!r)continue;const e=r.resourceId;e&&!s.has(e)&&(s.add(e),i.push({resourceId:e,purpose:r.purpose}))}return i}cloneSelectionRandomizationState(e){const t={};return e.childOrder&&(t.childOrder=[...e.childOrder]),e.selectedChildIds&&(t.selectedChildIds=[...e.selectedChildIds]),e.hiddenFromChoiceChildIds&&(t.hiddenFromChoiceChildIds=[...e.hiddenFromChoiceChildIds]),void 0!==e.selectionCountStatus&&(t.selectionCountStatus=e.selectionCountStatus),void 0!==e.reorderChildren&&(t.reorderChildren=e.reorderChildren),t}applySelectionRandomizationState(e,t){const i=e.sequencingControls;void 0!==t.selectionCountStatus&&(i.selectionCountStatus=t.selectionCountStatus),void 0!==t.reorderChildren&&(i.reorderChildren=t.reorderChildren);const s=t.selectedChildIds?new Set(t.selectedChildIds):null,r=t.hiddenFromChoiceChildIds?new Set(t.hiddenFromChoiceChildIds):null;t.childOrder&&t.childOrder.length>0&&e.setChildOrder(t.childOrder);let n=!1;if(s||r)for(const t of e.children){if(s){const e=s.has(t.id);t.isAvailable=e,r||(t.isHiddenFromChoice=!e),n=!0}r&&(t.isHiddenFromChoice=r.has(t.id),n=!0)}(n||s||void 0!==t.selectionCountStatus||void 0!==t.reorderChildren||t.childOrder&&t.childOrder.length>0)&&e.setProcessedChildren(e.children.filter(e=>e.isAvailable))}}var hn=Object.defineProperty,dn=(e,t,i)=>((e,t,i)=>t in e?hn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class mn{constructor(e,t){dn(this,"sequencingCollections"),dn(this,"sequencingConfigBuilder"),this.sequencingCollections=e||{},this.sequencingConfigBuilder=t||new un}setSequencingCollections(e){this.sequencingCollections=e}createActivity(e){const t=new Zt(e.id,e.title),i=[],s=this.sequencingConfigBuilder.normalizeCollectionRefs(e.sequencingCollectionRefs);for(const e of s){const s=this.sequencingCollections[e];s&&this.sequencingConfigBuilder.applySequencingCollection(t,s,i)}if(void 0!==e.isVisible&&(t.isVisible=e.isVisible),void 0!==e.isActive&&(t.isActive=e.isActive),void 0!==e.isSuspended&&(t.isSuspended=e.isSuspended),void 0!==e.isCompleted&&(t.isCompleted=e.isCompleted),void 0!==e.isHiddenFromChoice&&(t.isHiddenFromChoice=e.isHiddenFromChoice),void 0!==e.isAvailable&&(t.isAvailable=e.isAvailable),void 0!==e.attemptLimit&&(t.attemptLimit=e.attemptLimit),void 0!==e.attemptAbsoluteDurationLimit&&(t.attemptAbsoluteDurationLimit=e.attemptAbsoluteDurationLimit),void 0!==e.activityAbsoluteDurationLimit&&(t.activityAbsoluteDurationLimit=e.activityAbsoluteDurationLimit),void 0!==e.timeLimitAction&&(t.timeLimitAction=e.timeLimitAction),void 0!==e.timeLimitDuration&&(t.timeLimitDuration=e.timeLimitDuration),void 0!==e.beginTimeLimit&&(t.beginTimeLimit=e.beginTimeLimit),void 0!==e.endTimeLimit&&(t.endTimeLimit=e.endTimeLimit),e.primaryObjective){const i=this.createActivityObjectiveFromSettings(e.primaryObjective,!0);t.primaryObjective=i,null!==i.minNormalizedMeasure&&(t.scaledPassingScore=i.minNormalizedMeasure)}if(e.objectives)for(const i of e.objectives){const e=!0===i.isPrimary,s=this.createActivityObjectiveFromSettings(i,e);e?t.primaryObjective=s:t.addObjective(s)}if(e.sequencingControls&&this.sequencingConfigBuilder.applySequencingControlsSettings(t.sequencingControls,e.sequencingControls),e.sequencingRules&&this.sequencingConfigBuilder.applySequencingRulesSettings(t.sequencingRules,e.sequencingRules),e.rollupRules&&this.sequencingConfigBuilder.applyRollupRulesSettings(t.rollupRules,e.rollupRules),e.rollupConsiderations&&t.applyRollupConsiderations(e.rollupConsiderations),e.hideLmsUi){const i=this.sequencingConfigBuilder.mergeHideLmsUi(t.hideLmsUi,e.hideLmsUi);i.length>0&&(t.hideLmsUi=i)}if(e.auxiliaryResources){const i=this.sequencingConfigBuilder.sanitizeAuxiliaryResources(e.auxiliaryResources);i.length>0&&(t.auxiliaryResources=this.sequencingConfigBuilder.mergeAuxiliaryResources(t.auxiliaryResources,i))}if(e.children)for(const i of e.children){const e=this.createActivity(i);t.addChild(e)}e.selectionRandomizationState&&i.push(this.sequencingConfigBuilder.cloneSelectionRandomizationState(e.selectionRandomizationState));for(const e of i)this.sequencingConfigBuilder.applySelectionRandomizationState(t,e);return t}extractActivityIds(e){const t=[e.id];for(const i of e.children)t.push(...this.extractActivityIds(i));return t}createActivityObjectiveFromSettings(e,t){const i=(e.mapInfo||[]).map(e=>({targetObjectiveID:e.targetObjectiveID,readSatisfiedStatus:e.readSatisfiedStatus??!1,readNormalizedMeasure:e.readNormalizedMeasure??!1,writeSatisfiedStatus:e.writeSatisfiedStatus??!1,writeNormalizedMeasure:e.writeNormalizedMeasure??!1,readCompletionStatus:e.readCompletionStatus??!1,writeCompletionStatus:e.writeCompletionStatus??!1,readProgressMeasure:e.readProgressMeasure??!1,writeProgressMeasure:e.writeProgressMeasure??!1,readRawScore:e.readRawScore??!1,writeRawScore:e.writeRawScore??!1,readMinScore:e.readMinScore??!1,writeMinScore:e.writeMinScore??!1,readMaxScore:e.readMaxScore??!1,writeMaxScore:e.writeMaxScore??!1,updateAttemptData:e.updateAttemptData??!1}));return new Qt(e.objectiveID,{description:e.description??null,satisfiedByMeasure:e.satisfiedByMeasure??!1,minNormalizedMeasure:e.minNormalizedMeasure??null,mapInfo:i,isPrimary:t})}}var pn=Object.defineProperty,_n=(e,t,i)=>((e,t,i)=>t in e?pn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class vn{constructor(e){_n(this,"_globalObjectives",[]),_n(this,"context"),this.context=e}get globalObjectives(){return this._globalObjectives}set globalObjectives(objectives){this._globalObjectives=objectives}updateSequencingService(e){this.context.sequencingService=e}syncGlobalObjectiveIdsFromSequencing(){if(!this.context.sequencingService)return;const e=this.context.sequencingService.getOverallSequencingProcess();if(!e)return;const t=e.getGlobalObjectiveMap();if(!t||0===t.size)return;const i=Array.from(t.keys()),s=this.context.getSettings(),r=Array.from(new Set((s.globalObjectiveIds||[]).concat(i)));s.globalObjectiveIds=r}restoreGlobalObjectivesToCMI(){if(0!==this._globalObjectives.length)for(let e=0;this._globalObjectives.length>e;e++){const t=this._globalObjectives[e];if(!t||!t.id)continue;if(this.context.cmi.objectives.findObjectiveById(t.id))continue;const i=this.context.cmi.objectives.childArray.length;this.context.commonSetCMIValue("RestoreGlobalObjective",!0,`cmi.objectives.${i}.id`,t.id),t.success_status&&"unknown"!==t.success_status&&this.context.commonSetCMIValue("RestoreGlobalObjective",!0,`cmi.objectives.${i}.success_status`,t.success_status),t.completion_status&&"unknown"!==t.completion_status&&this.context.commonSetCMIValue("RestoreGlobalObjective",!0,`cmi.objectives.${i}.completion_status`,t.completion_status),""!==t.score.scaled&&null!==t.score.scaled&&this.context.commonSetCMIValue("RestoreGlobalObjective",!0,`cmi.objectives.${i}.score.scaled`,t.score.scaled),""!==t.score.raw&&null!==t.score.raw&&this.context.commonSetCMIValue("RestoreGlobalObjective",!0,`cmi.objectives.${i}.score.raw`,t.score.raw),""!==t.score.min&&null!==t.score.min&&this.context.commonSetCMIValue("RestoreGlobalObjective",!0,`cmi.objectives.${i}.score.min`,t.score.min),""!==t.score.max&&null!==t.score.max&&this.context.commonSetCMIValue("RestoreGlobalObjective",!0,`cmi.objectives.${i}.score.max`,t.score.max),""!==t.progress_measure&&null!==t.progress_measure&&this.context.commonSetCMIValue("RestoreGlobalObjective",!0,`cmi.objectives.${i}.progress_measure`,t.progress_measure),""!==t.description&&this.context.commonSetCMIValue("RestoreGlobalObjective",!0,`cmi.objectives.${i}.description`,t.description)}}updateGlobalObjectiveFromCMI(e,t){if(!e||!this.context.sequencingService)return;const i=this.context.sequencingService.getOverallSequencingProcess();if(!i)return;if(!i.getGlobalObjectiveMap().has(e)){const s=this.buildObjectiveMapEntryFromCMI(t);return void i.updateGlobalObjective(e,s)}const s={};t.success_status&&t.success_status!==F&&(s.satisfiedStatus=t.success_status===P,s.satisfiedStatusKnown=!0);const r=this.parseObjectiveNumber(t.score?.scaled);null!==r&&(s.normalizedMeasure=r,s.normalizedMeasureKnown=!0);const n=this.parseObjectiveNumber(t.progress_measure);null!==n&&(s.progressMeasure=n,s.progressMeasureKnown=!0),t.completion_status&&t.completion_status!==H&&(s.completionStatus=t.completion_status,s.completionStatusKnown=!0),0!==Object.keys(s).length&&i.updateGlobalObjective(e,s)}buildObjectiveMapEntryFromCMI(e){const entry={id:e.id,satisfiedStatusKnown:!1,normalizedMeasureKnown:!1,progressMeasureKnown:!1,completionStatusKnown:!1,readSatisfiedStatus:!0,writeSatisfiedStatus:!0,readNormalizedMeasure:!0,writeNormalizedMeasure:!0,readCompletionStatus:!0,writeCompletionStatus:!0,readProgressMeasure:!0,writeProgressMeasure:!0};e.success_status&&e.success_status!==F&&(entry.satisfiedStatus=e.success_status===P,entry.satisfiedStatusKnown=!0);const t=this.parseObjectiveNumber(e.score?.scaled);null!==t&&(entry.normalizedMeasure=t,entry.normalizedMeasureKnown=!0);const i=this.parseObjectiveNumber(e.progress_measure);return null!==i&&(entry.progressMeasure=i,entry.progressMeasureKnown=!0),e.completion_status&&e.completion_status!==H&&(entry.completionStatus=e.completion_status,entry.completionStatusKnown=!0),entry}buildCMIObjectivesFromMap(e){const objectives=[];if(!e||"object"!=typeof e)return objectives;for(const[t,entry]of Object.entries(e)){if(!entry||"object"!=typeof entry)continue;const e=new gr;e.id=entry.id??t,!0===entry.satisfiedStatusKnown&&(e.success_status=entry.satisfiedStatus?P:z);const i=this.parseObjectiveNumber(entry.normalizedMeasure);!0===entry.normalizedMeasureKnown&&null!==i&&(e.score.scaled=i+"");const s=this.parseObjectiveNumber(entry.progressMeasure);!0===entry.progressMeasureKnown&&null!==s&&(e.progress_measure=s+""),!0===entry.completionStatusKnown&&"string"==typeof entry.completionStatus&&(e.completion_status=entry.completionStatus),objectives.push(e)}return objectives}buildCMIObjectiveFromJSON(e){const t=new gr;if(!e||"object"!=typeof e)return t;"string"==typeof e.id&&(t.id=e.id),"string"==typeof e.success_status&&(t.success_status=e.success_status),"string"==typeof e.completion_status&&(t.completion_status=e.completion_status),"string"==typeof e.progress_measure&&""!==e.progress_measure&&(t.progress_measure=e.progress_measure),"string"==typeof e.description&&(t.description=e.description);const score=e.score;return score&&"object"==typeof score&&("string"==typeof score.scaled&&""!==score.scaled?t.score.scaled=score.scaled:"number"==typeof score.scaled&&Number.isFinite(score.scaled)&&(t.score.scaled=score.scaled+""),"string"==typeof score.raw&&""!==score.raw?t.score.raw=score.raw:"number"==typeof score.raw&&Number.isFinite(score.raw)&&(t.score.raw=score.raw+""),"string"==typeof score.min&&""!==score.min?t.score.min=score.min:"number"==typeof score.min&&Number.isFinite(score.min)&&(t.score.min=score.min+""),"string"==typeof score.max&&""!==score.max?t.score.max=score.max:"number"==typeof score.max&&Number.isFinite(score.max)&&(t.score.max=score.max+"")),t}captureGlobalObjectiveSnapshot(e){const t={},i=e??this.context.sequencingService?.getOverallSequencingProcess()??null;if(i){const e=i.getGlobalObjectiveMapSnapshot();for(const[id,i]of Object.entries(e))t[id]={...i}}for(const e of this._globalObjectives)e.id&&!t[e.id]&&(t[e.id]=this.buildObjectiveMapEntryFromCMI(e));return t}parseObjectiveNumber(e){if(null==e)return null;if("number"==typeof e&&Number.isFinite(e))return e;const t=parseFloat(e+"");return Number.isFinite(t)?t:null}syncCmiToSequencingActivity(e,t,i){if(!this.context.sequencing)return;const s=this.context.sequencing.getCurrentActivity();if(!s||!s.primaryObjective)return;const r=s.primaryObjective;t!==F&&(r.satisfiedStatus=t===P,r.satisfiedStatusKnown=!0,r.measureStatus=!0,s.objectiveMeasureStatus=!0,s.objectiveSatisfiedStatus=t===P,s.objectiveSatisfiedStatusKnown=!0),e!==H&&(r.completionStatus=e),void 0!==i?.scaled&&null!==i.scaled&&(r.normalizedMeasure=i.scaled,r.measureStatus=!0)}findOrCreateGlobalObjective(e){let t=this._globalObjectives.findIndex(t=>t.id===e);if(-1===t){t=this._globalObjectives.length;const i=new gr;i.id=e,this._globalObjectives.push(i)}return{index:t,objective:this._globalObjectives[t]}}}var gn=Object.defineProperty,fn=(e,t,i)=>((e,t,i)=>t in e?gn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Sn{constructor(e,t){fn(this,"context"),fn(this,"globalObjectiveManager"),this.context=e,this.globalObjectiveManager=t}async saveSequencingState(e){const t=this.context.getSettings();if(!t.sequencingStatePersistence)return this.context.apiLog("saveSequencingState","No persistence configuration provided",B.WARN),!1;try{const i=this.serializeSequencingState(),s={learnerId:this.context.learnerId||"unknown",courseId:t.courseId||"unknown",attemptNumber:1,lastUpdated:(new Date).toISOString(),version:t.sequencingStatePersistence.stateVersion||"1.0",...e},r=t.sequencingStatePersistence;let n=i;if(!1!==r.compress&&(n=this.compressStateData(i)),r.maxStateSize&&n.length>r.maxStateSize)throw Error(`State size ${n.length} exceeds limit ${r.maxStateSize}`);const o=await r.persistence.saveState(n,s);return r.debugPersistence&&this.context.apiLog("saveSequencingState",`State save ${o?"succeeded":"failed"}: size=${n.length}`,o?B.INFO:B.WARN),o}catch(e){return this.context.apiLog("saveSequencingState","Error saving sequencing state: "+(e instanceof Error?e.message:e+""),B.ERROR),!1}}async loadSequencingState(e){const t=this.context.getSettings();if(!t.sequencingStatePersistence)return this.context.apiLog("loadSequencingState","No persistence configuration provided",B.WARN),!1;try{const i={learnerId:this.context.learnerId||"unknown",courseId:t.courseId||"unknown",attemptNumber:1,version:t.sequencingStatePersistence.stateVersion||"1.0",...e},s=t.sequencingStatePersistence,r=await s.persistence.loadState(i);if(!r)return s.debugPersistence&&this.context.apiLog("loadSequencingState","No sequencing state found to load",B.INFO),!1;let n=r;!1!==s.compress&&(n=this.decompressStateData(r));const o=this.deserializeSequencingState(n);return s.debugPersistence&&this.context.apiLog("loadSequencingState",`State load ${o?"succeeded":"failed"}: size=${r.length}`,o?B.INFO:B.WARN),o}catch(e){return this.context.apiLog("loadSequencingState","Error loading sequencing state: "+(e instanceof Error?e.message:e+""),B.ERROR),!1}}serializeSequencingState(){const e=this.context.getSettings(),t={version:e.sequencingStatePersistence?.stateVersion||"1.0",timestamp:(new Date).toISOString(),sequencing:null,currentActivityId:null,globalObjectives:this.globalObjectiveManager.globalObjectives.map(e=>e.toJSON()),globalObjectiveMap:{},adlNavState:{request:this.context.adl.nav.request,request_valid:this.context.adl.nav.request_valid},contentDelivered:!1};if(this.context.sequencingService){const e=this.context.sequencingService.getOverallSequencingProcess();if(e){const i=e.getSequencingState();t.sequencing=i,t.contentDelivered=e.hasContentBeenDelivered(),t.globalObjectiveMap=this.globalObjectiveManager.captureGlobalObjectiveSnapshot(e)}const i=this.context.sequencing.getCurrentActivity();i&&(t.currentActivityId=i.id)}return t.globalObjectiveMap&&0!==Object.keys(t.globalObjectiveMap).length||(t.globalObjectiveMap=this.globalObjectiveManager.captureGlobalObjectiveSnapshot()),JSON.stringify(t)}deserializeSequencingState(e){try{const t=JSON.parse(e),i=this.context.getSettings(),s=i.sequencingStatePersistence?.stateVersion||"1.0";if(t.version!==s&&this.context.apiLog("deserializeSequencingState",`State version mismatch: ${t.version} vs expected ${s}`,B.WARN),t.globalObjectiveMap&&t.sequencing&&!t.sequencing.globalObjectiveMap&&(t.sequencing.globalObjectiveMap=t.globalObjectiveMap),t.sequencing&&this.context.sequencingService){const e=this.context.sequencingService.getOverallSequencingProcess();e&&(e.restoreSequencingState(t.sequencing),t.contentDelivered&&e.setContentDelivered(!0))}const r=new Map;if(Array.isArray(t.globalObjectives))for(const e of t.globalObjectives){const t=this.globalObjectiveManager.buildCMIObjectiveFromJSON(e);t.id&&r.set(t.id,t)}if(t.globalObjectiveMap&&"object"==typeof t.globalObjectiveMap){const e=this.globalObjectiveManager.buildCMIObjectivesFromMap(t.globalObjectiveMap);for(const t of e)t.id&&(r.has(t.id)||r.set(t.id,t))}return r.size>0&&(this.globalObjectiveManager.globalObjectives=Array.from(r.values()),this.globalObjectiveManager.globalObjectives.forEach(e=>{e.id&&this.globalObjectiveManager.updateGlobalObjectiveFromCMI(e.id,e)})),t.adlNavState&&(this.context.adl.nav.request=t.adlNavState.request||"_none_",this.context.adl.nav.request_valid=t.adlNavState.request_valid||{}),!0}catch(e){return this.context.apiLog("deserializeSequencingState","Error deserializing sequencing state: "+(e instanceof Error?e.message:e+""),B.ERROR),!1}}compressStateData(e){return"undefined"!=typeof btoa?btoa(encodeURIComponent(e)):e}decompressStateData(e){if("undefined"!=typeof atob)try{return decodeURIComponent(atob(e))}catch{return e}return e}}var bn=Object.defineProperty,yn=(e,t,i)=>((e,t,i)=>t in e?bn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);class Cn{constructor(e,t){yn(this,"context"),yn(this,"globalObjectiveManager"),this.context=e,this.globalObjectiveManager=t||null}setGlobalObjectiveManager(e){this.globalObjectiveManager=e}updateSequencingService(e){this.context.sequencingService=e}renderCommitCMI(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=this.context.renderCMIToJSONObject();e||t?i.cmi.total_time=this.context.cmi.getCurrentTotalTime():delete i.cmi.total_time;const result=[],s=o(i);switch(this.context.getSettings().dataCommitFormat){case"flattened":return o(i);case"params":for(const e in s)({}).hasOwnProperty.call(s,e)&&result.push(`${e}=${s[e]}`);return result;default:return i}}renderCommitObject(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=this.renderCommitCMI(e,t),s=e||t?this.context.cmi.getCurrentTotalTime():"",n=r(s,ne);let o=H,a=F;this.context.cmi.completion_status&&("completed"===this.context.cmi.completion_status?o=k:"incomplete"===this.context.cmi.completion_status&&(o=V)),this.context.cmi.success_status&&("passed"===this.context.cmi.success_status?a=P:"failed"===this.context.cmi.success_status&&(a=z));const c=this.context.cmi?.score?.getScoreObject()||{},l={completionStatus:o,successStatus:a,totalTimeSeconds:n,runtimeData:i};c&&(l.score=c);const u=this.context.getSettings();if(u.autoPopulateCommitMetadata){u.courseId&&(l.courseId=u.courseId),u.scoId&&(l.scoId=u.scoId),this.context.cmi.learner_id&&(l.learnerId=this.context.cmi.learner_id),this.context.cmi.learner_name&&(l.learnerName=this.context.cmi.learner_name);const e=this.context.sequencingService?.getSequencingState();e?.currentActivity?.id&&(l.activityId=e.currentActivity.id)}return this.globalObjectiveManager&&this.globalObjectiveManager.syncCmiToSequencingActivity(o,a,c),l}determineEntryValue(e,t){const i=e?.trim();return""===e||null==e||""===i?"ab-initio":"suspend"===e?"resume":"logout"===e||"normal"===e?"":"time-out"===e&&t?"resume":""}}var An=Object.defineProperty,En=(e,t,i)=>((e,t,i)=>t in e?An(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);"undefined"!=typeof window&&(window.Scorm12API=Scorm12API,window.Scorm2004API=class extends gs{constructor(e,t){const i=e?{...e}:void 0;i&&void 0===i.mastery_override&&(i.mastery_override=!1),super(j,i,t),En(this,"_version","1.0"),En(this,"_sequencing"),En(this,"_sequencingService",null),En(this,"_extractedScoItemIds",[]),En(this,"_sequencingCollections",{}),En(this,"_responseValidator"),En(this,"_cmiHandler"),En(this,"_activityTreeBuilder"),En(this,"_sequencingConfigBuilder"),En(this,"_globalObjectiveManager"),En(this,"_statePersistence",null),En(this,"_dataSerializer"),En(this,"cmi"),En(this,"adl"),En(this,"Initialize"),En(this,"Terminate"),En(this,"GetValue"),En(this,"SetValue"),En(this,"Commit"),En(this,"GetLastError"),En(this,"GetErrorString"),En(this,"GetDiagnostic"),this.cmi=new Vr,this.adl=new Ur,this._sequencing=new sn,this.adl.sequencing=this._sequencing,this._sequencingConfigBuilder=new un,this._activityTreeBuilder=new mn({},this._sequencingConfigBuilder),this._responseValidator=new nn({throwSCORMError:(e,t,i)=>this.throwSCORMError(e,t,i),getLastErrorCode:()=>this.lastErrorCode,checkCorrectResponseValue:(e,t,i,s)=>this._responseValidator.checkCorrectResponseValue(e,t,i,s)}),this._cmiHandler=new ln({cmi:this.cmi,isInitialized:()=>this.isInitialized(),throwSCORMError:(e,t,i)=>this.throwSCORMError(e,t,i),getLastErrorCode:()=>this.lastErrorCode},this._responseValidator);const s={getSettings:()=>this.settings,cmi:this.cmi,sequencing:this._sequencing,sequencingService:this._sequencingService,commonSetCMIValue:this._commonSetCMIValue.bind(this)};this._globalObjectiveManager=new vn(s);const r={getSettings:()=>this.settings,cmi:this.cmi,sequencingService:this._sequencingService,renderCMIToJSONObject:this.renderCMIToJSONObject.bind(this)};this._dataSerializer=new Cn(r,this._globalObjectiveManager),i?.sequencing&&this.configureSequencing(i.sequencing),this.initializeSequencingService(i),this.Initialize=this.lmsInitialize,this.Terminate=this.lmsFinish,this.GetValue=this.lmsGetValue,this.SetValue=this.lmsSetValue,this.Commit=this.lmsCommit,this.GetLastError=this.lmsGetLastError,this.GetErrorString=this.lmsGetErrorString,this.GetDiagnostic=this.lmsGetDiagnostic}reset(e){this.commonReset(e),this.cmi?.reset(),this.adl?.reset()}get version(){return this._version}get globalObjectives(){return this._globalObjectiveManager.globalObjectives}set _globalObjectives(objectives){this._globalObjectiveManager.globalObjectives=objectives}get _globalObjectives(){return this._globalObjectiveManager.globalObjectives}compressStateData(e){return this._statePersistence?this._statePersistence.compressStateData(e):"undefined"!=typeof btoa?btoa(encodeURIComponent(e)):e}decompressStateData(e){if(this._statePersistence)return this._statePersistence.decompressStateData(e);if("undefined"!=typeof atob)try{return decodeURIComponent(atob(e))}catch{return e}return e}lmsInitialize(){if(""!==(arguments.length>0&&void 0!==arguments[0]?arguments[0]:""))return this.throwSCORMError("api",this._error_codes.ARGUMENT_ERROR),S;this.cmi.initialize();const result=this.initialize("Initialize","LMS was already initialized!","LMS is already finished!");return result===f&&this._sequencingService&&this._sequencingService.initialize(),result===f&&this._globalObjectiveManager.restoreGlobalObjectivesToCMI(),result===f&&this.settings.sequencingStatePersistence&&this.loadSequencingState().catch(()=>{this.apiLog("lmsInitialize","Failed to auto-load sequencing state",B.WARN)}),result}lmsFinish(){if(""!==(arguments.length>0&&void 0!==arguments[0]?arguments[0]:""))return this.throwSCORMError("api",this._error_codes.ARGUMENT_ERROR),S;const e=this.adl?.nav?.request||"_none_",t=this.cmi?.getExitValueInternal()||"",i=this.isTerminated(),s=this._sequencingService?.isDeliveryInProgress()??!1,result=this.terminate("Terminate",!0);if(result===f&&!i&&!s){let i=!1,s=null,r=e,n="";const o=RegExp(he);if("_none_"!==e){const t=e.match(o);t&&(t.groups?.choice_target?(n=t.groups?.choice_target,r="choice"):t.groups?.jump_target&&(n=t.groups?.jump_target,r="jump"))}if(this._sequencingService)try{let e,o=null;"_none_"!==r?(o=r,e=n||void 0):this._sequencing.getCurrentActivity()&&(o="exit"),o&&(i=this._sequencingService.processNavigationRequest(o,e,t),s=o)}catch(e){this.apiLog("lmsFinish","Sequencing navigation failed, falling back to event-based navigation: "+e,B.WARN),i=!1}if(!i)if("_none_"!==e){const e={continue:"SequenceNext",previous:"SequencePrevious",choice:"SequenceChoice",jump:"SequenceJump",exit:"SequenceExit",exitAll:"SequenceExitAll",abandon:"SequenceAbandon",abandonAll:"SequenceAbandonAll"}[r];e&&this.processListeners(e,"adl.nav.request",n)}else this.settings.autoProgress&&this.processListeners("SequenceNext",void 0,"next");this._sequencingService&&s&&["exitAll","abandonAll","suspendAll"].includes(s)&&this._sequencingService.terminate(),this.adl.nav.request="_none_"}return result}lmsGetValue(e){if(this.isTerminated())return this.lastErrorCode=j.RETRIEVE_AFTER_TERM+"","";if(!this.isInitialized())return this.lastErrorCode=j.RETRIEVE_BEFORE_INIT+"","";if("adl.nav.request"===e)return this.throwSCORMError(e,j.WRITE_ONLY_ELEMENT,"adl.nav.request is write-only"),"";const t="^adl\\.nav\\.request_valid\\.(choice|jump)\\.{target=([a-zA-Z0-9-_]+)}$";if(c(e,t)){const i=e.match(t);if(i){const request=i[1],e=i[2]?.replace(/{target=/g,"").replace(/}/g,"")||"";if("choice"===request||"jump"===request){const t=this._sequencing?.overallSequencingProcess;return this.settings.scoItemIdValidator?this.settings.scoItemIdValidator(e)+"":t?.predictChoiceEnabled&&"choice"===request?t.predictChoiceEnabled(e)?"true":"false":t?.predictJumpEnabled&&"jump"===request?t.predictJumpEnabled(e)?"true":"false":this._extractedScoItemIds.length>0?this._extractedScoItemIds.includes(e)+"":this.settings?.scoItemIds?.includes(e)+""}}}return"cmi.completion_status"===e?this._cmiHandler.evaluateCompletionStatus():"cmi.success_status"===e?this._cmiHandler.evaluateSuccessStatus():this.getValue("GetValue",!0,e)}lmsSetValue(e,t){const i=this._peekCMIValue(e),result=this.setValue("SetValue","Commit",!0,e,t);if(result===f&&this._sequencingService)try{this._sequencingService.triggerRollupOnCMIChange(e,i,t)}catch(t){console.warn(`Sequencing rollup failed for ${e}: ${t}`)}return result===f&&"setValue"===this.settings.sequencingStatePersistence?.autoSaveOn&&["cmi.completion_status","cmi.success_status","cmi.score.scaled","cmi.objectives","adl.nav.request"].some(t=>e.startsWith(t))&&this.saveSequencingState().catch(()=>{this.apiLog("lmsSetValue","Failed to auto-save sequencing state",B.WARN)}),result}lmsCommit(){if(""!==(arguments.length>0&&void 0!==arguments[0]?arguments[0]:""))return this.throwSCORMError("api",this._error_codes.ARGUMENT_ERROR),S;if(this.settings.throttleCommits)return this.scheduleCommit(500,"Commit"),f;{const result=this.commit("Commit",!0);return result===f&&"commit"===this.settings.sequencingStatePersistence?.autoSaveOn&&this.saveSequencingState().catch(()=>{this.apiLog("lmsCommit","Failed to auto-save sequencing state",B.WARN)}),result}}lmsGetLastError(){return this.getLastError("GetLastError")}lmsGetErrorString(e){return this.getErrorString("GetErrorString",e)}lmsGetDiagnostic(e){return this.getDiagnostic("GetDiagnostic",e)}setCMIValue(e,t){if(c(e,"cmi\\.objectives\\.\\d+")){const i=+e.split(".")[2],s="cmi.objectives."+i;let r;if(c(e,"cmi\\.objectives\\.\\d+\\.id"))r=t;else{const e=this.cmi.objectives.findObjectiveByIndex(i);r=e?e.id:void 0}if(r&&this.settings.globalObjectiveIds?.includes(r)){const{index:i}=this._globalObjectiveManager.findOrCreateGlobalObjective(r),n=e.replace(s,"_globalObjectives."+i);this._commonSetCMIValue("SetGlobalObjectiveValue",!0,n,t);const o=this._globalObjectiveManager.globalObjectives[i];r&&o&&this._globalObjectiveManager.updateGlobalObjectiveFromCMI(r,o)}}return this._commonSetCMIValue("SetValue",!0,e,t)}getChildElement(e,t,i){return this._cmiHandler.getChildElement(e,t,i)}validateCorrectResponse(e,t){const i=e.split("."),s=this.cmi.interactions.childArray[+i[2]];s?this._responseValidator.validateCorrectResponse(e,s,t):this.throwSCORMError(e,j.DEPENDENCY_NOT_ESTABLISHED,e)}_peekCMIValue(e){if(!e||"string"!=typeof e)return null;const t=e.split(".");let i=this;for(let e=0;t.length>e;e++){const s=t[e];if(null==i)return null;try{i=i[s]}catch{return null}if(i instanceof x){const s=e+1;if(s>=t.length)return i;const r=+t[s];if(!Number.isNaN(r)&&Number.isInteger(r)&&r>=0){if(r>=i.childArray.length)return null;i=i.childArray[r],e++}}}return i??null}getCMIValue(e){return this._commonGetCMIValue("GetValue",!0,e)}getLmsErrorMessageDetails(e,t){let i="",s="";const r=A.error_descriptions[e+=""];return r&&(i=r.basicMessage,s=r.detailMessage),t?s:i}replaceWithAnotherScormAPI(e){this.cmi=e.cmi,this.adl=e.adl}renderCommitCMI(e){return this._dataSerializer.renderCommitCMI(e,arguments.length>1&&void 0!==arguments[1]&&arguments[1])}renderCommitObject(e){return this._dataSerializer.renderCommitObject(e,arguments.length>1&&void 0!==arguments[1]&&arguments[1])}storeData(e){e&&"normal"===this.cmi.mode&&"credit"===this.cmi.credit&&(this.cmi.completion_threshold&&this.cmi.progress_measure&&(this.cmi.completion_status=this.cmi.completion_threshold>this.cmi.progress_measure?"incomplete":"completed"),this.cmi.scaled_passing_score&&this.cmi.score.scaled&&(this.cmi.success_status=this.cmi.scaled_passing_score>this.cmi.score.scaled?"failed":"passed"));let t=!1;this.adl.nav.request!==this.startingData?.adl?.nav?.request&&"_none_"!==this.adl.nav.request&&(t=!0);const i=this.getCommitObject(e),s=this.cmi?.score?.getScoreObject()||{};let r=H;"completed"===this.cmi.completion_status?r=k:"incomplete"===this.cmi.completion_status&&(r=V);let n=F;if("passed"===this.cmi.success_status?n=P:"failed"===this.cmi.success_status&&(n=z),this._globalObjectiveManager.syncCmiToSequencingActivity(r,n,s),"string"==typeof this.settings.lmsCommitUrl){const result=this.processHttpRequest(this.settings.lmsCommitUrl,i,e);if(t&&void 0!==result.navRequest&&""!==result.navRequest&&"string"==typeof result.navRequest){const e=function(e){const t=new Set(["start","resumeAll","continue","previous","choice","jump","exit","exitAll","abandon","abandonAll","suspendAll","_none_"]),i=e.trim();if(!i)return{command:"_none_",targetActivityId:null,valid:!1,error:"Empty navigation request"};if(t.has(i))return{command:i,targetActivityId:null,valid:!0};const s=i.indexOf(".");if(s>0){const e=i.substring(0,s),t=i.substring(s+1);if(("choice"===e||"jump"===e)&&t)return/^[a-zA-Z0-9._-]+$/.test(t)?{command:e,targetActivityId:t,valid:!0}:{command:"_none_",targetActivityId:null,valid:!1,error:"Invalid target activity ID: contains disallowed characters"}}return{command:"_none_",targetActivityId:null,valid:!1,error:`Unrecognized navigation command: "${i}"`}}(result.navRequest);if(e.valid){const t={start:"SequenceStart",resumeAll:"SequenceResumeAll",continue:"SequenceNext",previous:"SequencePrevious",choice:"SequenceChoice",jump:"SequenceJump",exit:"SequenceExit",exitAll:"SequenceExitAll",abandon:"SequenceAbandon",abandonAll:"SequenceAbandonAll",suspendAll:"SequenceSuspendAll"}[e.command];t&&this.processListeners(t,"adl.nav.request",e.targetActivityId)}else this.apiLog("storeData","Invalid navigation request from LMS: "+e.error,B.WARN)}else result?.navRequest&&!t&&"object"==typeof result.navRequest&&Object.hasOwnProperty.call(result.navRequest,"name")&&result.navRequest.name&&this.processListeners(result.navRequest.name,result.navRequest.data);return result}return{result:f,errorCode:0}}configureSequencing(e){this._sequencingCollections=this._sequencingConfigBuilder.sanitizeSequencingCollections(e.collections),this._activityTreeBuilder.setSequencingCollections(this._sequencingCollections),e.activityTree&&this.configureActivityTree(e.activityTree),e.sequencingRules&&this.configureSequencingRules(e.sequencingRules),e.sequencingControls&&this.configureSequencingControls(e.sequencingControls),e.rollupRules&&this.configureRollupRules(e.rollupRules),this._sequencing.hideLmsUi=e.hideLmsUi?this._sequencingConfigBuilder.sanitizeHideLmsUi(e.hideLmsUi):[],this._sequencing.auxiliaryResources=e.auxiliaryResources?this._sequencingConfigBuilder.sanitizeAuxiliaryResources(e.auxiliaryResources):[]}configureActivityTree(e){const t=this._activityTreeBuilder.createActivity(e);this._sequencing.activityTree.root=t,this._extractedScoItemIds=this._activityTreeBuilder.extractActivityIds(t)}configureSequencingRules(e){this._sequencingConfigBuilder.applySequencingRulesSettings(this._sequencing.sequencingRules,e)}configureSequencingControls(e){this._sequencingConfigBuilder.applySequencingControlsSettings(this._sequencing.sequencingControls,e)}configureRollupRules(e){this._sequencingConfigBuilder.applyRollupRulesSettings(this._sequencing.rollupRules,e)}initializeSequencingService(e){try{if(this._sequencingService=new as(this._sequencing,this.cmi,this.adl,this.eventService||this,this.loggingService,{autoRollupOnCMIChange:e?.sequencing?.autoRollupOnCMIChange??!0,autoProgressOnCompletion:e?.sequencing?.autoProgressOnCompletion??!1,validateNavigationRequests:e?.sequencing?.validateNavigationRequests??!0,enableEventSystem:e?.sequencing?.enableEventSystem??!0,logLevel:e?.sequencing?.logLevel??"info"}),e?.sequencing?.eventListeners&&this._sequencingService.setEventListeners(e.sequencing.eventListeners),this._globalObjectiveManager.updateSequencingService(this._sequencingService),this._dataSerializer.updateSequencingService(this._sequencingService),e?.sequencingStatePersistence){const e={getSettings:()=>this.settings,apiLog:this.apiLog.bind(this),adl:this.adl,sequencing:this._sequencing,sequencingService:this._sequencingService,learnerId:this.cmi.learner_id};this._statePersistence=new Sn(e,this._globalObjectiveManager)}this._globalObjectiveManager.syncGlobalObjectiveIdsFromSequencing()}catch(e){console.warn("Failed to initialize sequencing service:",e),this._sequencingService=null}}getSequencingService(){return this._sequencingService}setSequencingEventListeners(e){this._sequencingService&&this._sequencingService.setEventListeners(e)}updateSequencingConfiguration(e){this._sequencingService&&this._sequencingService.updateConfiguration(e)}getSequencingState(){return this._sequencingService?this._sequencingService.getSequencingState():{isInitialized:!1,isActive:!1,currentActivity:null,rootActivity:this._sequencing.getRootActivity(),lastSequencingResult:null}}processNavigationRequest(request,e){return!!this._sequencingService&&this._sequencingService.processNavigationRequest(request,e)}resetSequencingState(){this._sequencing?.reset(),this._sequencingService?.setEventListeners({})}getActivityTrackingData(e){if(!this._sequencing?.activityTree)return null;const t=this._sequencing.activityTree.getActivity(e);return t?{completionStatus:t.completionStatus||"unknown",successStatus:t.successStatus||"unknown",progressMeasure:t.progressMeasure??null,score:t.objectiveMeasureStatus?t.objectiveNormalizedMeasure:null}:null}async saveSequencingState(e){if(this._statePersistence)return this._statePersistence.saveSequencingState(e);if(!this.settings.sequencingStatePersistence)return this.apiLog("saveSequencingState","No persistence configuration provided",B.WARN),!1;const t={getSettings:()=>this.settings,apiLog:this.apiLog.bind(this),adl:this.adl,sequencing:this._sequencing,sequencingService:this._sequencingService,learnerId:this.cmi.learner_id};return new Sn(t,this._globalObjectiveManager).saveSequencingState(e)}async loadSequencingState(e){if(this._statePersistence)return this._statePersistence.loadSequencingState(e);if(!this.settings.sequencingStatePersistence)return this.apiLog("loadSequencingState","No persistence configuration provided",B.WARN),!1;const t={getSettings:()=>this.settings,apiLog:this.apiLog.bind(this),adl:this.adl,sequencing:this._sequencing,sequencingService:this._sequencingService,learnerId:this.cmi.learner_id};return new Sn(t,this._globalObjectiveManager).loadSequencingState(e)}serializeSequencingState(){if(this._statePersistence)return this._statePersistence.serializeSequencingState();const e={getSettings:()=>this.settings,apiLog:this.apiLog.bind(this),adl:this.adl,sequencing:this._sequencing,sequencingService:this._sequencingService,learnerId:this.cmi.learner_id};return new Sn(e,this._globalObjectiveManager).serializeSequencingState()}deserializeSequencingState(e){if(this._statePersistence)return this._statePersistence.deserializeSequencingState(e);const t={getSettings:()=>this.settings,apiLog:this.apiLog.bind(this),adl:this.adl,sequencing:this._sequencing,sequencingService:this._sequencingService,learnerId:this.cmi.learner_id};return new Sn(t,this._globalObjectiveManager).deserializeSequencingState(e)}determineEntryValue(e,t){return this._dataSerializer.determineEntryValue(e,t)}})}();
2
2
  //# sourceMappingURL=scorm-again.min.js.map