PageSourceSearch

https://learn.excelsirji.com/courses/Learn-Excel-from-Basics-to-AI…=pid%3Dp1&newCheckoutFlowParams=FREE

html excelsirji.com collected 2026-09-30 18:00:53 UTC 378,846 bytes, 6,236 lines download raw bytes

1
2
3
4
5
6
7
8<!DOCTYPE html>
9<html>
10<head>
11
12
13
14	
15   		
16		
17<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"errorBeacon":"bam.nr-data.net","licenseKey":"NRJS-3c5e94b79297c3f66ad","agent":"","beacon":"bam.nr-data.net","applicationTime":99,"applicationID":"1108160141","transactionName":"Y1RVZkAHVhIHBUZfWVoeZEJAD1YGJQlcQkRbXVtXQElLFQkUVxlTdl5YWUFJXAQVBUBfRkBYWFwdHVsOCBJXWEJhQ1tPEk5\/JDJP","queueTime":0};
18(window.NREUM||(NREUM={})).init={privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]},distributed_tracing:{enabled:true}};(window.NREUM||(NREUM={})).loader_config={agentID:"1134555315",accountID:"3033394",trustKey:"3033394",xpid:"VwYEUlVaDBABVVFaBgcHV1AA",licenseKey:"NRJS-3c5e94b79297c3f66ad",applicationID:"1108160141",browserID:"1134555315"};;/*! For license information please see nr-loader-spa-1.322.0.min.js.LICENSE.txt */
19(()=>{var e={8122(e,t,r){"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),s=0===Object.keys(r).length?e:r;for(let a in s)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):e[a]instanceof Map||e[a]instanceof Set||e[a]instanceof Date||e[a]instanceof RegExp?r[a]=e[a]:"object"==typeof e[a]&&null!==t[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){r[a]||(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555(e,t,r){"use strict";r.d(t,{f:()=>a});var n=r(384),i=r(8122);const s={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0};function a(e){try{return!!e.licenseKey&&!!e.errorBeacon&&!!e.applicationID}catch(e){return!1}}r.d(t,["D",0,e=>(0,i.a)(e,s)])},7699(e,t,r){"use strict";var n=r(860);const i={[n.K7.logging]:!0,[n.K7.genericEvents]:!0,[n.K7.jserrors]:!0,[n.K7.ajax]:!0};r.d(t,["It",0,1e6,"KC",0,i,"qh",0,"SESSION_ERROR"])},9324(e,t,r){"use strict";r.d(t,["A",0,"@newrelic/rrweb","x",0,"1.322.0"])},981(e,t,r){"use strict";r.d(t,["R",0,{AJAX:"AjaxRequest",PA:"PageAction",UA:"UserAction",BP:"BrowserPerformance",WS:"WebSocket",SPV:"SecurityPolicyViolation",JSE:"JavaScriptError",LOG:"Log",PVE:"PageView",PVT:"PageViewTiming",SR:"SessionReplay",ST:"SessionTrace",BI:"BrowserInteraction"}])},9752(e,t,r){"use strict";const n="newrelic-iframe-",i=n+"timing-update",s=n+"api",a=n+"api-response",o=n+"vitals-update",c=n+"ajax";r.d(t,["$8",0,o,"Gi",0,a,"KU",0,c,"Pl",0,n,"cS",0,s,"cr",0,i])},6154(e,t,r){"use strict";var n=r(1863);const i="undefined"!=typeof window&&!!window.document,s="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),o=Boolean("hidden"===a?.document?.visibilityState),c=""+a?.location,d=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),u=d&&"undefined"==typeof SharedWorker,l=(()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),f=Date.now()-(0,n.t)();r.d(t,["OF",0,d,"RI",0,i,"WN",0,f,"bv",0,s,"gm",0,a,"lR",0,l,"m",0,c,"mw",0,o,"sb",0,u,"zk",0,()=>{const e=a?.performance?.getEntriesByType?.("navigation")?.[0];if(e&&e.responseStart>0&&e.responseStart<a.performance.now())return e}])},7295(e,t,r){"use strict";r.d(t,{Xv:()=>a,gX:()=>i,iW:()=>s});var n=[];function i(e){if(!e||s(e))return!1;if(0===n.length)return!0;if("*"===n[0].hostname)return!1;for(var t=0;t<n.length;t++){var r=n[t];if(r.hostname.test(e.hostname)&&r.pathname.test(e.pathname))return!1}return!0}function s(e){return void 0===e.hostname}function a(e){if(n=[],e&&e.length)for(var t=0;t<e.length;t++){let r=e[t];if(!r)continue;if("*"===r)return void(n=[{hostname:"*"}]);0===r.indexOf("http://")?r=r.substring(7):0===r.indexOf("https://")&&(r=r.substring(8));const i=r.indexOf("/");let s,a;i>0?(s=r.substring(0,i),a=r.substring(i)):(s=r,a="*");let[c]=s.split(":");n.push({hostname:o(c),pathname:o(a,!0)})}}function o(e,t=!1){const r=e.replace(/[.+?^${}()|[\]\\]/g,e=>"\\"+e).replace(/\*/g,".*?");return new RegExp((t?"^":"")+r+"$")}},3241(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(6154);function i(e={}){try{n.gm.dispatchEvent(new CustomEvent("newrelic",{detail:e}))}catch(e){}}},1687(e,t,r){"use strict";r.d(t,{Ak:()=>o,Ze:()=>d,x3:()=>c});var n=r(3241),i=r(3606),s=r(860),a=r(2646);function o(e,t){if(!e)return;const r={staged:!1,priority:s.P3[t]||0};
19e.runtime.drainRegistry.get(t)||e.runtime.drainRegistry.set(t,r)}function c(e,t){if(!e)return;const r=e.runtime.drainRegistry;r&&(r.get(t)&&r.delete(t),l(e,t,!1),r.size&&u(e))}function d(e,t="feature",r=!1){if(e){if(!e.runtime.drainRegistry.get(t)||r)return l(e,t);e.runtime.drainRegistry.get(t).staged=!0,u(e)}}function u(e){if(!e)return;const t=Array.from(e.runtime.drainRegistry);t.every(([e,t])=>t.staged)&&(t.sort((e,t)=>e[1].priority-t[1].priority),t.forEach(([t])=>{e.runtime.drainRegistry.delete(t),l(e,t)}))}function l(e,t,r=!0){if(!e)return;const s=e.ee,o=i.i.handlers;if(s&&!s.aborted&&s.backlog&&o){if((0,n.W)({type:"lifecycle",name:"drain",feature:t}),r){const e=s.backlog[t],r=o[t];if(r){for(let t=0;e&&t<e.length;++t)f(e[t],r);Object.entries(r).forEach(([e,t])=>{Object.values(t||{}).forEach(t=>{t[0]?.on&&t[0].context()instanceof a.y&&!t[0].listeners(e).includes(t[1])&&t[0].on(e,t[1])})})}}s.isolatedBacklog||delete o[t],s.backlog[t]=null,s.emit("drain-"+t,[])}}function f(e,t){var r=e[1];Object.values(t[r]||{}).forEach(t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],s=e[2];n.apply(i,s)}})}},7836(e,t,r){"use strict";var n=r(384),i=r(8990),s=r(2646),a=r(5607);const o="nr@context:".concat(a.W),c=function e(t,r){var n={},a={},u={},l=!1;try{l=16===r.length&&d.initializedAgents?.[r]?.runtime.isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,s){!1!==s&&(s=!0);if(c.aborted&&!i)return;t&&s&&t.emit(e,r,n);var o=h(n);g(e).forEach(e=>{e.apply(o,r)});var d=v()[a[e]];d&&d.push([f,e,r,o]);return o},get:m,listeners:g,context:h,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach(([e,n])=>{a[n]=t,t in r||(r[t]=[])})},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach(e=>{delete f.backlog[e]})},isBuffering:function(e){return!!v()[a[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function h(e){return e&&e instanceof s.y?e:e?(0,i.I)(e,o,()=>new s.y(o)):new s.y(o)}function p(e,t){n[e]=g(e).concat(t)}function g(e){return n[e]||[]}function m(t){return u[t]=u[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=c),r.d(t,["P",0,o,"ee",0,c])},2646(e,t,r){"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908(e,t,r){"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,s){s?(s.buffer([e],i),s.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606(e,t,r){"use strict";r.d(t,{i:()=>s});var n=r(9908);s.on=a;var i=s.handlers={};function s(e,t,r,s){a(s||n.d,i,e,t,r)}function a(e,t,r,i,s){s||(s="feature"),e||(e=n.d);var a=t[s]=t[s]||{};(a[r]=a[r]||[]).push([e,i])}},3878(e,t,r){"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function s(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>s,jT:()=>n,sp:()=>i})},5607(e,t,r){"use strict";const n=(0,r(9566).bz)();r.d(t,["W",0,n])},9566(e,t,r){"use strict";r.d(t,{LA:()=>a,ZF:()=>o,bz:()=>s,el:()=>c});var n=r(6154);function i(e,t){return e?15&e[t]:16*Math.random()|0}function s(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split("").map(e=>"x"===e?i(t,r++).toString(16):"y"===e?(3&i()|8).toString(16):e).join("")}function a(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,s=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var o=0;o<e;o++)a.push(i(r,s++).toString(16));return a.join("")}function o(){return a(16)}function c(){return a(32)}},2614(e,t,r){"use strict";r.d(t,["BB",0,18e5,"Wt",0,"NRBA_SESSION::","g",0,{OFF:0,FULL:1,ERROR:2},"iL",0,{SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},"tS",0,{STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},"wk",0,144e5])},733(e,t,r){"use strict";function n(e,t){return function(e){let t=2166136261;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}("".concat(String(e),":").concat(String(t)))}r.d(t,{Y:()=>n})},1863(e,t,r){"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},9119(e,t,r){"use strict";r.d(t,{L:()=>s});var n=/([^?#]*)[^#]*(#[^?]*|$).*/,i=/([^?#]*)().*/;function s(e,t){return e?e.replace(t?n:i,"$1$2"):e}},7485(e,t,r){"use strict";r.d(t,{D:()=>i});var n=r(6154);function i(e){if(0===(e||"").indexOf("data:"))return{protocol:"data"};try{const t=new URL(e,location.href),r={port:t.port,hostname:t.hostname,pathname:t.pathname,search:t.search,protocol:t.protocol.slice(0,t.protocol.indexOf(":")),sameOrigin:t.protocol===n.gm?.location?.protocol&&t.host===n.gm?.location?.host};return r.port&&""!==r.port||("http:"===t.protocol&&(r.port="80"),"https:"===t.protocol&&(r.port="443")),r.pathname&&""!==r.pathname?r.pathname.startsWith("/")||(r.pathname="/".concat(r.pathname)):r.pathname="/",r}catch(e){return{}}}},7866(e,t,r){"use strict";r.d(t,["Nc",0,/^\s*at Function code \(Function code:\d+:\d+\)\s*/i,"cn",0,/^\s*(?:([^@]*)(?:\(.*?\))?@)?((?:file|http|https|chrome|safari-extension).*?):(\d+)(?::(\d+))?\s*$/i,"fL",0,/^\s*at .+ \(eval at \S+ \((?:(?:file|http|https):[^)]+)?\)(?:, [^:]*:\d+:\d+)?\)$/i,"h3",0,/function (.+?)\s*\(/,"hB",0,/^\s*at (?:((?:\[object object\])?(?:[^(]*\([^)]*\))*[^()]*(?: \[as \S+\])?) )?\(?((?:file|http|https|chrome-extension):.*?)?:(\d+)(?::(\d+))?\)?\s*$/i])},944(e,t,r){"use strict";r.d(t,{R:()=>i});var n=r(3241);function i(e,t){"function"==typeof console.debug&&(console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t),(0,n.W)({drained:null,type:"data",name:"warn",feature:"warn",data:{code:e,secondary:t}}))}},8990(e,t,r){"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389(e,t,r){"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout(()=>{i=clearTimeout(i)},t)),n||(clearTimeout(i),i=setTimeout(()=>{e.apply(this,r)},t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},1910(e,t,r){"use strict";r.d(t,{i:()=>s});var n=r(944);const i=new Map;function s(...e){return e.every(e=>{if(i.has(e))return i.get(e);const t="function"==typeof e?e.toString():"",r=t.includes("[native code]"),s=t.includes("nrWrapper");return r||s||(0,n.R)(64,e?.name||t),i.set(e,r),r})}},3304(e,t,r){"use strict";r.d(t,{A:()=>i});var n=r(7836);function i(e){try{return JSON.stringify(e,(()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}})())??""}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}return""}}},9232(e,t,r){"use strict";r.d(t,["f",0,{MFE:"MFE",BA:"BA"}])},7560(e,t,r){"use strict";r.d(t,{N:()=>a,j:()=>c});var n=r(9119),i=r(944);const s=(0,r(6389).J)(e=>(0,i.R)(80,e));function a(e){if(!Array.isArray(e?.assets)||!e.assets.length)return;
19const t=e.assets.map(o).filter(Boolean);return t.length?{assets:t,scripts:t.filter(e=>e.isScript)}:void 0}function o(e){if(!e||"object"!=typeof e)return;const{matcher:t,type:r}=e;let i="string"==typeof t&&t.endsWith(".js");return void 0!==r&&(!function(e){return"script"===e||"asset"===e}(r)?s(r):i=function(e){return"script"===e}(r)),a=t,"[object RegExp]"===Object.prototype.toString.call(a)?{pattern:t,test:e=>(t.lastIndex=0,t.test((0,n.L)(e))),isScript:i}:"string"==typeof t&&t.length>0?{pattern:t,test:e=>(0,n.L)(e).includes(t),isScript:i}:void s(t);var a}function c(e,t,{scriptsOnly:r=!1}={}){if(!e||!t)return!1;return(r?e.scripts:e.assets).some(e=>e.test(t))}},5718(e,t,r){"use strict";r.d(t,{xo:()=>T,AZ:()=>v,cI:()=>g,Qr:()=>A,QL:()=>y});var n=r(6154),i=r(1863),s=r(9119),a=r(7866);class o{dom=new c;performance=new c;constructor(e){this.url=e,this.claimedBy=new Set}get script(){const e=Math.max(this.dom.start,this.performance.end);return{start:e,end:Math.max(this.dom.end,this.performance.end,e)}}}class c{start=0;end=0;value=void 0}function d(e=()=>{},t){return{get:()=>void 0!==t?t:e(),set:e=>{t=e}}}let u;try{u=v(y())[0]}catch(e){u=v(e)[0]}const l=new Map;let f=[];const h=new WeakMap;function p(e){let t=h.get(e);return t||(t={weighedAssetUrls:new Set,recordManifestScriptWindow:(t,r)=>{t&&(e.scriptStart=e.scriptStart>0?Math.min(e.scriptStart,t):t),r&&(e.scriptEnd=e.scriptEnd>0?Math.max(e.scriptEnd,r):r)}},h.set(e,t)),t}function g(e){return l.get(e)}function m(e){const t=g(e);
19if(t)return t;const r=new o(e);if(l.set(e,r),l.size>1e3){const e=l.keys().next().value;l.delete(e)}return r}if(n.gm.MutationObserver&&n.gm.document){new MutationObserver(e=>{e.forEach(e=>{e.addedNodes.forEach(e=>{if("SCRIPT"===e.nodeName&&e.src){const t=m((0,s.L)(e.src));t.dom.start=(0,i.t)(),t.dom.value=e;const r=()=>{t.dom.end=(0,i.t)()};["load","error"].forEach(t=>e.addEventListener(t,r,{once:!0}))}})})}).observe(n.gm.document,{childList:!0,subtree:!0})}if(n.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{if((e=>"script"===e.initiatorType||["link","fetch"].includes(e.initiatorType)&&(0,s.L)(e.name).endsWith(".js"))(e)){const t=m((0,s.L)(e.name));t.performance.start=Math.floor(e.startTime),t.performance.end=Math.floor(e.responseEnd),t.performance.value=e}if(!f.length)return;const t=[];f.forEach(({test:r,addedAt:n},s)=>{(r(e)||(0,i.t)()-n>1e4)&&t.push(s)}),f=f.filter((e,r)=>!t.includes(r))})}).observe({type:"resource",buffered:!0})}function v(e){if(!e||"string"!=typeof e)return[];const t=new Set,r=e.split("\n");for(const e of r){const r=e.match(a.cn)||e.match(a.hB)||e.match(a.fL);if(r&&r[2])t.add((0,s.L)(r[2]));else{const r=e.match(/\(([^)]+\.js):\d+:\d+\)/)||e.match(/^\s+at\s+([^\s(]+\.js):\d+:\d+/);r&&r[1]&&t.add((0,s.L)(r[1]))}}return[...t]}function y(){let e;try{const t=Error.stackTraceLimit;Error.stackTraceLimit=50,e=(new Error).stack,Error.stackTraceLimit=t}catch(t){e=(new Error).stack}return e}function b(e,t){return(0,s.L)(e.name)===t}function E(e,t){e.fetchStart=Math.floor(t.startTime),e.fetchEnd=Math.floor(t.responseEnd),e.asset=t.name,e.type=t.initiatorType,w(e,t)}function w(e,t){const r=(0,s.L)(t.name),{weighedAssetUrls:n}=p(e);n.has(r)||(n.add(r),e.totalWeight=(e.totalWeight||0)+(t.transferSize||0),"blocking"===t.renderBlockingStatus?e.renderBlocking=!0:"non-blocking"===t.renderBlockingStatus&&!0!==e.renderBlocking&&(e.renderBlocking=!1))}function R(e,t,r,n,i){if(w(e,t),"scripts"!==i&&"all"!==i)return;if("all"===i||r.isScript){const r=Math.floor(t.startTime),n=Math.floor(t.responseEnd);e.fetchStart=e.fetchStart>0?Math.min(e.fetchStart,r):r,e.fetchEnd=e.fetchEnd>0?Math.max(e.fetchEnd,n):n}if(r.isScript){const r=g((0,s.L)(t.name));if(r){const t=()=>{const{start:t,end:n}=r.script;p(e).recordManifestScriptWindow(t,n)};t(),!r.dom.end&&r.dom.value&&["load","error"].forEach(e=>r.dom.value.addEventListener(e,t,{once:!0}))}n.resolved||(e.asset=t.name,e.type=t.initiatorType,n.resolved=!0)}}function T(e,t){const r=t?.manifest;if(!r||!r.assets.length)return;const s={resolved:!1},a=new Set(r.assets);(n.gm.performance?.getEntriesByType("resource")||[]).forEach(r=>{const n=[...a].find(e=>e.test(r.name));n&&(R(e,r,n,s,t.timingMethod),a.delete(n))}),a.size&&function(e,t,r,s){n.gm.PerformanceObserver?.supportedEntryTypes?.includes("resource")&&f.push({addedAt:(0,i.t)(),test:n=>{const i=[...t].find(e=>e.test(n.name));return i&&(R(e,n,i,r,s),t.delete(i)),0===t.size}})}(e,a,s,t.timingMethod)}function A(e){const t=e?.id,r={registeredAt:(0,i.t)(),reportedAt:void 0,fetchStart:0,fetchEnd:0,scriptStart:0,scriptEnd:0,asset:void 0,type:"unknown",totalWeight:0,renderBlocking:void 0},a=y();if(!a)return r;const o=n.gm.performance?.getEntriesByType("navigation")?.[0]?.name||"";try{const e=v(a),c=(e.length>1?e.filter(e=>u!==e):e)[0];if(!c)return r;if(o.includes(c))return r.asset=(0,s.L)(o),r.type="inline",r;r.correlation=g(c);const l=r.correlation?.performance.value||n.gm.performance?.getEntriesByType("resource")?.find(e=>b(e,c));if(l)E(r,l);else{(function(e){if(!e||!n.gm.document)return!1;try{const t=n.gm.document.querySelectorAll('link[rel="preload"][as="script"]');for(const r of t)if((0,s.L)(r.href)===e)return!0}catch(e){}return!1})(c)&&(r.asset=c,r.type="preload"),function(e,t){n.gm.PerformanceObserver?.supportedEntryTypes?.includes("resource")&&f.push({addedAt:(0,i.t)(),test:r=>!!b(r,t)&&(E(e,r),!0)})}(r,c)}const h=r.correlation,m=!!t&&!!h?.claimedBy.has(t);h&&t&&h.claimedBy.add(t);const y=()=>{const e=h?.script.start;if(!m||!e)return!1;return r.registeredAt-e>1e4};let w=0,R=0;p(r).recordManifestScriptWindow=(e,t)=>{e&&(w=w>0?Math.min(w,e):e),t&&(R=R>0?Math.max(R,t):t)},Object.defineProperty(r,"scriptStart",d(()=>{const e=y()?r.registeredAt:h?.script.start??r.fetchEnd;return w>0?Math.min(e,w):e})),Object.defineProperty(r,"scriptEnd",d(()=>{const e=y()?r.registeredAt:h?.script.end??r.registeredAt;return R>0?Math.max(e,R):e}))}catch(e){}return r}},5732(e,t,r){"use strict";r.d(t,{$5:()=>m,B5:()=>g,K6:()=>u,M$:()=>
19o,Ms:()=>d,NG:()=>c,Ux:()=>h,YA:()=>p,yx:()=>l});var n=r(5718),i=r(7560),s=r(9119),a=r(9232);function o(e){return e?.type===a.f.MFE}function c(e,t){if(!y(e,t))return;const r=t.runtime.registeredEntities;return r?.find(t=>t.metadata.target.iframeInterfaceId===e)}function d(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities;return r?.filter(t=>String(t.metadata.target.id)===String(e)).map(e=>e.metadata.target)||[]}function u(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities,n=(0,s.L)(e),a=r?.filter(t=>{const r=t.metadata.target?.manifest;return r?(0,i.j)(r,e,{scriptsOnly:!1}):!!t.metadata.timings?.asset&&(0,s.L)(t.metadata.timings.asset)===n});return f(a).map(e=>e.metadata.target)}function l(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities,n=r?.filter(t=>{const r=t.metadata.target?.manifest;return r?(0,i.j)(r,e,{scriptsOnly:!0}):!!t.metadata.timings?.asset?.endsWith(e)});return f(n).map(e=>e.metadata.target)}function f(e){if(!e?.length)return e||[];const t=new Map,r=[];for(const n of e){const e=n.metadata?.timings?.asset;if(!e){r.push(n);continue}const i="".concat(e,"::").concat(n.metadata?.target?.id),s=t.get(i);if(s){if(s.metadata.target?.blocked&&!n.metadata.target?.blocked){const e=r.indexOf(s);-1!==e&&(r[e]=n),t.set(i,n)}}else t.set(i,n),r.push(n)}return r}function h(e,t){return v(t)?o(e)?e.attributes:t.agentRef.runtime.v2Target.attributes:{}}function p(e,t){return g(e,t)?{"child.id":e.id,"child.type":e.type,...h(void 0,t)}:{}}function g(e,t){return o(e)&&!!v(t)&&t.agentRef.init.api.register.duplicate_data_to_container}function m(e){if(!e?.runtime)return[];if(!y(!0,e)||!e.runtime.registeredEntities?.length)return[e.runtime.v2Target];const t=[];try{var r=(0,n.AZ)((0,n.QL)());let i=r.length-1;for(;r[i];)t.push(...l(r[i--],e))}catch(e){}const i=function(e){const t=new Set,r=[];for(const n of e){const e=n?.instance;t.has(e)||(t.add(e),r.push(n))}return r}(t);return i.length||i.push(e.runtime.v2Target),i}function v(e){return 2===e?.harvestEndpointVersion}function y(e,t){return!!e&&!!t?.init.api.register.enabled}},5289(e,t,r){"use strict";r.d(t,{GG:()=>a,Qr:()=>c,sB:()=>o});var n=r(3878),i=r(6389);function s(){return"undefined"==typeof document||"complete"===document.readyState}function a(e,t){if(s())return e();const r=(0,i.J)(e),a=setInterval(()=>{s()&&(clearInterval(a),r())},500);(0,n.sp)("load",r,t)}function o(e){if(s())return e();(0,n.DD)("DOMContentLoaded",e)}function c(e){if(s())return e();(0,n.sp)("popstate",e)}},384(e,t,r){"use strict";r.d(t,{Zm:()=>c,bQ:()=>u,dV:()=>d,pV:()=>l});var n=r(6154),i=r(1863),s=r(944),a=r(1910);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function c(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function d(){let e=c();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate||n.gm.setInterval,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket},(0,a.i)(...Object.values(e.o))),e}function u(e,t){let r=c();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t,2===Object.keys(r.initializedAgents).length&&(0,s.R)(69)}function l(){return function(){let e=c();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=c();const t=e.init||{};e.init={...t}}(),d(),function(){let e=c();const t=e.loader_config||{};e.loader_config={...t}}(),c()}r.d(t,["NT",0,o])},2843(e,t,r){"use strict";r.d(t,{G:()=>s,u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)},r,i)}function s(e,t,r){(0,n.sp)("pagehide",e,t,r)}},8139(e,t,r){"use strict";r.d(t,{u:()=>f});var n=r(7836),i=r(3434),s=r(8990),a=r(6154);const o={},c=a.gm.XMLHttpRequest,d="addEventListener",u="removeEventListener",l="nr@wrapped:".concat(n.P);function f(e,t){var r=function(e){return(e||n.ee).get("events")}(e);if(o[r.debugId]++)return r;o[r.debugId]=1;var f=(0,i.YM)(r,!0,t);function p(e){f.inPlace(e,[d,u],"-",g)}function g(e,t){return e[1]}return"getPrototypeOf"in Object&&(a.RI&&h(document,p),c&&h(c.prototype,p),h(a.gm,p)),r.on(d+"-start",function(e,t){var r=e[1];if(null!==r&&("function"==typeof r||"object"==typeof r)&&"newrelic"!==e[0]){var n=(0,s.I)(r,l,function(){var e={object:function(){if("function"!=typeof r.handleEvent)return;return r.handleEvent.apply(r,arguments)},function:r}[typeof r];return e?f(e,"fn-",null,e.name||"anonymous"):r});this.wrapped=e[1]=n}}),r.on(u+"-start",function(e){e[1]=this.wrapped||e[1]}),r}function h(e,t,...r){let n=e;for(;"object"==typeof n&&!Object.prototype.hasOwnProperty.call(n,d);)n=Object.getPrototypeOf(n);n&&t(n,...r)}},3434(e,t,r){"use strict";r.d(t,{YM:()=>d});var n=r(7836),i=r(5607),s=r(5732);const a="nr@original:".concat(i.W);var o=Object.prototype.hasOwnProperty,c=!1;function d(e,t,r){return e||(e=n.ee),i.inPlace=function(e,t,r,n,s,a){r||(r="");const o="-"===r.charAt(0);for(let c=0;c<t.length;c++){const d=t[c],u=e[d];l(u)||(e[d]=i(u,o?d+r:r,n,d,s,a))}},i.flag=a,i;function i(t,n,i,c,f,h){return l(t)?t:(n||(n=""),nrWrapper[a]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach(function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})}),t}catch(e){u([e],r)}for(var n in e)o.call(e,n)&&(t[n]=e[n])}
19(t,nrWrapper,e),nrWrapper);function nrWrapper(){var a,o,l,p;let g,m;try{o=this,a=[...arguments],m=h?(0,s.$5)(r):[r?.runtime?.v2Target],l="function"==typeof i?i(a,o):i||{}}catch(t){u([t,"",[a,o,c],l],e)}d(n+"start",[a,o,c,m],l,f);const v=performance.now();let y;try{return p=t.apply(o,a),y=performance.now(),p}catch(e){throw y=performance.now(),d(n+"err",[a,o,e,m],l,f),g=e,g}finally{const e=y-v,t={start:v,end:y,duration:e,isLongTask:e>=50,methodName:c,thrownError:g};t.isLongTask&&d("long-task",[t,o,m],l,f),d(n+"end",[a,o,p,m],l,f)}}}function d(r,n,i,s){if(!c||t){var a=c;c=!0;try{e.emit(r,n,i,t,s)}catch(t){u([t,r,n,i],e)}c=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function l(e){return!(e&&"function"==typeof e&&e.apply&&!e[a])}r.d(t,["Jt",0,a])},9300(e,t,r){"use strict";const n=r(860).K7.ajax;r.d(t,["TZ",0,n,"f5",0,"ajaxRequest.id","mo",0,{NONE:"none",FAILURES:"failures",ALL:"all"}])},3333(e,t,r){"use strict";var n=r(981);const i=r(860).K7.genericEvents,s=[n.R.PA,n.R.UA,n.R.BP];r.d(t,["$v",0,{RESOURCES:"experimental.resources",REGISTER:"register"},"TZ",0,i,"Zp",0,["auxclick","click","copy","keydown","paste","scrollend"],"kd",0,s,"qN",0,["focus","blur"]])},6774(e,t,r){"use strict";const n=r(860).K7.jserrors;r.d(t,["T",0,n])},993(e,t,r){"use strict";const n=r(860).K7.logging;r.d(t,["A$",0,{OFF:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,TRACE:5},"TZ",0,n,"p_",0,{ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"}])},3785(e,t,r){"use strict";r.d(t,{R:()=>c,b:()=>d});var n=r(9908),i=r(1863),s=r(860),a=r(3969),o=r(993);function c(e,t,r={},c=o.p_.INFO,d=!0,u,l=(0,i.t)()){(0,n.p)(a.xV,["API/logging/".concat(c.toLowerCase(),"/called")],void 0,s.K7.metrics,e),(0,n.p)("log",[l,t,r,c,d,u],void 0,s.K7.logging,e)}function d(e){return"string"==typeof e&&Object.values(o.p_).some(t=>t===e.toUpperCase().trim())}},3969(e,t,r){"use strict";const n=r(860).K7.metrics;r.d(t,["TZ",0,n,"XG",0,"storeEventMetrics","xV",0,"storeSupportabilityMetrics"])},6630(e,t,r){"use strict";const n=r(860).K7.pageViewEvent;r.d(t,["T",0,n])},782(e,t,r){"use strict";const n=r(860).K7.pageViewTiming;r.d(t,["T",0,n])},6344(e,t,r){"use strict";var n=r(2614);const i=r(860).K7.sessionReplay,s={[n.g.ERROR]:15e3,[n.g.FULL]:3e5,[n.g.OFF]:0}
19;r.d(t,["Qb",0,{API:"api",RESUME:"resume",SWITCH_TO_FULL:"switchToFull",INITIALIZE:"initialize",PRELOAD:"preload"},"TZ",0,i,"Vh",0,"errorDuringReplay","_s",0,{DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5},"bc",0,{RESET:{message:"Session was reset",sm:"Reset"},IMPORT:{message:"Recorder failed to import",sm:"Import"},TOO_MANY:{message:"429: Too Many Requests",sm:"Too-Many"},TOO_BIG:{message:"Payload was too large",sm:"Too-Big"},CROSS_TAB:{message:"Session Entity was set to OFF on another tab",sm:"Cross-Tab"},ENTITLEMENTS:{message:"Session Replay is not allowed and will not be started",sm:"Entitlement"}},"yP",0,s])},5270(e,t,r){"use strict";r.d(t,{Aw:()=>a,SR:()=>s,rF:()=>o});var n=r(384),i=r(7767);function s(e){return!!(0,n.dV)().o.MO&&(0,i.V)(e)&&!0===e?.session_trace.enabled}function a(e){return!0===e?.session_replay.preload&&s(e)}function o(e,t){try{if("string"==typeof t?.type&&"password"===t.type.toLowerCase())return"*".repeat(e?.length||0);if(void 0!==t?.dataset?.nrUnmask||t?.classList?.contains("nr-unmask"))return e}catch(e){}return"string"==typeof e?e.replace(/[\S]/g,"*"):"*".repeat(e?.length||0)}},3738(e,t,r){"use strict";const n=r(860).K7.sessionTrace,i="-start",s="-end",a="fn"+i,o="fn"+s;r.d(t,["He",0,"bstResource","Kp",0,s,"Lc",0,o,"Rz",0,"pushState","TZ",0,n,"bD",0,"resource","bc",0,{CROSS_TAB:{message:"Session Entity was set to OFF on another tab"},ENTITLEMENTS:{message:"Session Trace is not allowed and will not be started"},RESET:{message:"Session was reset"},SESSION_CHANGED:{message:"Session identifier changed unexpectedly"}},"d3",0,i,"uP",0,a])},3962(e,t,r){"use strict";const n=r(860).K7.softNav;r.d(t,["O2",0,{INITIAL_PAGE_LOAD:"",ROUTE_CHANGE:1,UNSPECIFIED:2},"OV",0,"popstate","Qu",0,{INTERACTION:1,AJAX:2,CUSTOM_END:3,CUSTOM_TRACER:4},"TZ",0,n,"ih",0,{IP:"in progress",PF:"pending finish",FIN:"finished",CAN:"cancelled"},"pP",0,"initialPageLoad","tC",0,["click","keydown","submit"]])},4234(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(1687);class i{constructor(e,t){this.agentRef=e,this.ee=e?.ee,this.featureName=t,this.blocked=!1}deregisterDrain(){(0,n.x3)(this.agentRef,this.featureName)}}},7767(e,t,r){"use strict";var n=r(6154);r.d(t,["V",0,e=>n.RI&&!0===e?.privacy.cookies_enabled])},8362(e,t,r){"use strict";r.d(t,{d:()=>s});var n=r(9566),i=r(1741);class s extends i.W{agentIdentifier=(0,n.LA)(16)}},1741(e,t,r){"use strict";r.d(t,{W:()=>s});var n=r(944),i=r(4261);class s{#e(e,...t){if(this[e]!==s.prototype[e])return this[e](...t);(0,n.R)(35,e)}addPageAction(e,t){return this.#e(i.hG,e,t)}register(e){return this.#e(i.eY,e)}recordCustomEvent(e,t){return this.#e(i.fF,e,t)}setPageViewName(e,t){return this.#e(i.Fw,e,t)}setCustomAttribute(e,t,r){return this.#e(i.cD,e,t,r)}noticeError(e,t){return this.#e(i.o5,e,t)}setUserId(e,t=!1){return this.#e(i.Dl,e,t)}setApplicationVersion(e){return this.#e(i.nb,e)}setErrorHandler(e){return this.#e(i.bt,e)}addRelease(e,t){return this.#e(i.k6,e,t)}log(e,t){return this.#e("log",e,t)}start(){return this.#e("start")}finished(e){return this.#e(i.BL,e)}recordReplay(){return this.#e(i.CH)}pauseReplay(){return this.#e(i.Tb)}addToTrace(e){return this.#e(i.U2,e)}setCurrentRouteName(e){return this.#e(i.PA,e)}interaction(e){return this.#e(i.dT,e)}wrapLogger(e,t,r){return this.#e(i.Wb,e,t,r)}measure(e,t){return this.#e(i.V1,e,t)}consent(e){return this.#e(i.Pv,e)}}},4261(e,t,r){"use strict";r.d(t,["BL",0,"finished","CH",0,"recordReplay","Dl",0,"setUserId","Fw",0,"setPageViewName","PA",0,"setCurrentRouteName","Pv",0,"consent","Tb",0,"pauseReplay","U2",0,"addToTrace","V1",0,"measure","Wb",0,"wrapLogger","bt",0,"setErrorHandler","cD",0,"setCustomAttribute","dT",0,"interaction","eY",0,"register","fF",0,"recordCustomEvent","hG",0,"addPageAction","hw",0,"api-ixn-","k6",0,"addRelease","nb",0,"setApplicationVersion","o5",0,"noticeError"])},1738(e,t,r){"use strict";r.d(t,{U:()=>l,Y:()=>u});var n=r(3241),i=r(9908),s=r(1863),a=r(944),o=r(3969),c=r(8362),d=r(860);function u(e,t,r,s){const u=s||r;!u||u[e]&&u[e]!==c.d.prototype[e]||(u[e]=function(){(0,i.p)(o.xV,["API/"+e+"/called"],void 0,d.K7.metrics,r.ee),(0,n.W)({drained:!!r.runtime?.activatedFeatures,type:"data",name:"api",feature:"api-"+e,data:{}});try{return t.apply(this,arguments)}catch(e){(0,a.R)(23,e)}})}function l(e,t,r,n,a){const o=e.info;null===r?delete o.jsAttributes[t]:o.jsAttributes[t]=r,(a||null===r)&&(0,i.p)("api-"+n,[(0,s.t)(),t,r],void 0,"session",e.ee)}},8374(e,t,r){r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860(e,t,r){"use strict";const n="events",i="jserrors",s="browser/blobs",a="browser/logs",o={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations"},c={[o.pageViewEvent]:1,[o.pageViewTiming]:2,[o.metrics]:3,[o.jserrors]:4,[o.softNav]:5,[o.ajax]:6,[o.sessionTrace]:7,[o.sessionReplay]:8,[o.logging]:9,[o.genericEvents]:10},d={[o.pageViewEvent]:"rum",[o.pageViewTiming]:n,[o.ajax]:n,[o.softNav]:n,[o.metrics]:i,[o.jserrors]:i,[o.sessionTrace]:s,[o.sessionReplay]:s,[o.logging]:a,[o.genericEvents]:"ins"};r.d(t,["$J",0,d,"K7",0,o,"P3",0,c,"XX",0,i,"Yy",0,a,"df",0,s,"hg",0,"connect"])}};const t={};function r(n){const i=t[n];if(void 0!==i)return i.exports;const s=t[n]={exports:{}};return e[n](s,s.exports,r),s.exports}r.m=e,r.d=(e,t)=>{if(Array.isArray(t))for(var n=0;n<t.length;){var i=t[n++],s=t[n++];r.o(e,i)?0===s&&n++:0===s?Object.defineProperty(e,i,{enumerable:!0,value:t[n++]}):Object.defineProperty(e,i,{enumerable:!0,get:s})}else for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,n)=>(r.f[n](e,t),t),[])),r.u=e=>({212:"nr-spa-compressor",238:"nr-spa-iframe-message-handler",249:"nr-spa-recorder",478:"nr-spa"}[e]+"-1.322.0.min.js"),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{const e={},t="NRBA-1.322.0.PROD:";r.l=(n,i,s,a)=>
19{if(e[n])return void e[n].push(i);let o,c;if(void 0!==s){const e=document.getElementsByTagName("script");for(var d=0;d<e.length;d++){const r=e[d];if(r.getAttribute("src")==n||r.getAttribute("data-webpack")==t+s){o=r;break}}}if(!o){c=!0;var u={478:"sha512-SARROoir04gFygxlr/+mTI+PyMeFL+epi1vnUA2G5mTQ7s3G44ItQBJKbOaIMdIE5OBzuaKhb4k5JYta0NICxg==",249:"sha512-6DKQo5WP7YlpzX6l9UfYkgGLGK2oITdoaYTcZtgl5Foa22NY63lED/0z1hBBLeD7qZCz/YdlY19/r8drlol1tg==",212:"sha512-CYxuvSpDx6ErqWJwAvpoHn54eY37YdMcFao/axOumlw3BsSL7yioOeB2LWViY/Njs818sQG10dSglUhYCMfLPw==",238:"sha512-mvbMILWa3ohYst+u6TLfNrmtY2swUIB3rbJFN/uzt3W62KhgvUVwB81UEZ1R0/it5bfrQ5EVz864pi/CAmucNQ=="};o=document.createElement("script"),o.charset="utf-8",r.nc&&o.setAttribute("nonce",r.nc),o.setAttribute("data-webpack",t+s),o.src=n,0!==o.src.indexOf(window.location.origin+"/")&&(o.crossOrigin="anonymous"),u[a]&&(o.integrity=u[a])}e[n]=[i];const l=(t,r)=>{o.onerror=o.onload=null,clearTimeout(f);const i=e[n];if(delete e[n],o.parentNode?.removeChild(o),i?.forEach(e=>e(r)),t)return t(r)},f=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),c&&document.head.appendChild(o)}})(),r.r=e=>{Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="https://js-agent.newrelic.com/",(()=>{const e={38:0,788:0};r.f.j=(t,n)=>{let i=r.o(e,t)?e[t]:void 0;if(0!==i)if(i)n.push(i[2]);else{const s=new Promise((r,n)=>i=e[t]=[r,n]);n.push(i[2]=s);const a=r.p+r.u(t),o=new Error,c=n=>{if(r.o(e,t)&&(i=e[t],0!==i&&(e[t]=void 0),i)){const e=n&&("load"===n.type?"missing":n.type),r=n&&n.target&&n.target.src;o.message="Loading chunk "+t+" failed: ("+e+": "+r+")",o.name="ChunkLoadError",o.type=e,o.request=r,i[1](o)}};r.l(a,c,"chunk-"+t,t)}};const t=(t,n)=>{let[i,s,a]=n;var o,c,d=0;if(i.some(t=>0!==e[t])){for(o in s)r.o(s,o)&&(r.m[o]=s[o]);if(a)a(r)}for(t&&t(n);d<i.length;d++)c=i[d],r.o(e,c)&&e[c]&&e[c][0](),e[c]=0},n=self["webpackChunk:NRBA-1.322.0.PROD"]=self["webpackChunk:NRBA-1.322.0.PROD"]||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),(()=>{"use strict";r(8374);var e=r(8362),t=r(860);const n=Object.values(t.K7);var i=r(384),s=r(1741);var a=r(2555),o=r(3333),c=r(9300);const d=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var u=r(2614),l=r(944),f=r(8122);const h="[data-nr-mask]",p=e=>(0,f.a)(e,(()=>{const e={feature_flags:[],experimental:{register:!1,resources:!1,iframe_bridge:!1,iframe_domains:[]},mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0,capture_payloads:c.mo.NONE},api:{register:{get enabled(){return e.feature_flags.includes(o.$v.REGISTER)||e.experimental.register},set enabled(t){e.experimental.register=t},duplicate_data_to_container:!1,get allow_iframe_bridge(){return e.feature_flags.includes(o.$v.IFRAME_BRIDGE)||e.experimental.iframe_bridge},set allow_iframe_bridge(t){e.experimental.iframe_bridge=t},get iframe_domains(){return e.experimental.iframe_domains},set iframe_domains(t){Array.isArray(t)?e.experimental.iframe_domains=t:(0,l.R)(1,t)}}},browser_consent_mode:{enabled:!1},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1,capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(o.$v.RESOURCES)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:u.wk,inactiveMs:u.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inl
19ine_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){d(t)?e.mask_selector="".concat(t,",").concat(h):""===t||null===t?e.mask_selector=h:(0,l.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){d(t)?e.block_selector+=",".concat(t):""!==t&&(0,l.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,l.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]},web_sockets:{enabled:!1}}})());var g=r(6154),m=r(9324);let v=0;const y={buildEnv:"PROD",distMethod:"CDN",version:m.x,originTime:g.WN},b={consented:!1},E={activatedFeatures:void 0,appMetadata:{},configured:!1,get consented(){return this.session?.state?.consent||b.consented},set consented(e){b.consented=e},customTransaction:void 0,denyList:[],disabled:!1,drainRegistry:new Map,connector:void 0,harvester:void 0,v2Target:void 0,isolatedBacklog:!1,isRecording:!1,loaderType:void 0,maxBytes:3e4,obfuscator:void 0,onerror:void 0,ptid:void 0,releaseIds:{},session:void 0,timeKeeper:void 0,registeredEntities:[],jsAttributesMetadata:{bytes:0},get harvestCount(){return++v},listeningForIframeMessages:!1};var w=r(9232);var R=r(7836),T=r(3241);const A={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0};var S=r(9908),x=r(9752);function O(e,t={},n,o){let{init:c,info:d,loader_config:u,runtime:l={},exposed:h=!0}=t;if(!d){const e=(0,i.pV)();c=e.init,d=e.info,u=e.loader_config}var m;e.init=p(c||{}),e.loader_config=(m=u||{},(0,f.a)(m,A)),d.jsAttributes??={},g.bv&&(d.jsAttributes.isWorker=!0),e.info=(0,a.D)(d);const v=e.init;e.runtime??=(e=>{const t=(0,f.a)(e,E),r=Object.keys(y).reduce((e,t)=>(e[t]={value:y[t],writable:!1,configurable:!0,enumerable:!0},e),{});return Object.defineProperties(t,r)})(l),e.runtime.v2Target??={type:w.f.BA,instance:e.agentIdentifier,get id(){return e.runtime.appMetadata?.agents?.[0]?.entityGuid},get attributes(){return{"entity.guid":this.id,appId:e.info.applicationID}}},v.proxy.assets&&(e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e})(v.proxy.assets),e.runtime.configured||(Object.defineProperty(e,"beacons",{get:()=>[e.info.beacon,e.info.errorBeacon,e.init.proxy.assets,e.init.proxy.beacon].filter(Boolean)}),Object.defineProperty(e.runtime,"denyList",{get:()=>[...e.init.ajax.deny_list||[],...e.init.ajax.block_internal?e.beacons:[]]}),e.runtime.ptid=e.agentIdentifier,function(e){const t=(0,i.pV)();Object.getOwnPropertyNames(s.W.prototype).forEach(r=>{const n=s.W.prototype[r];if("function"!=typeof n||"constructor"===n)return;let i=t[r];e[r]&&!1!==e.exposed&&"micro-agent"!==e.runtime?.loaderType&&(t[r]=(...t)=>{const n=e[r](...t);return i?i(...t):n})})}(e),e.runtime.loaderType=n,e.ee=R.ee.get(e.agentIdentifier),e.exposed=h,(0,T.W)({drained:!!e.runtime.activatedFeatures,type:"lifecycle",name:"initialize",feature:void 0,data:e.config}),e.init.api.register.allow_iframe_bridge&&g.gm.addEventListener("message",t=>{"string"==typeof t.data?.type&&t.data.type.startsWith(x.Pl)&&(0,S.p)("iframe-message",[t],void 0,"IFRAME",e.ee)}),e.runtime.configured=!0)}var _=r(1863),k=r(4261),N=r(1738);var L=r(1687),M=r(4234),P=r(5289),I=r(5270),j=r(7767),C=r(6389),D=r(7699);const B=new WeakSet,H=new WeakMap;class W extends M.W{constructor(e,t){super(e,t),this.abortHandler=void 0,this.featAggregate=void 0,this.loadedSuccessfully=void 0,this.onAggregateImported=new Promise(e=>{this.loadedSuccessfully=e}),this.deferred=Promise.resolve(),!1===e.init[this.featureName].autoStart?this.deferred=new Promise((t,r)=>{this.ee.on("manual-start-all",(0,C.J)(()=>{(0,L.Ak)(e,this.featureName),t()}))}):(0,L.Ak)(e,t)}importAggregator(e,t,n={}){if(this.featAggregate)return;const i=async()=>{if(await this.deferred,this.#t(e),!(0,a.f)(e.info))return(0,l.R)(43),e.ee.abort(),void this.loadedSuccessfully(!1);try{await async function(e,t,n){if(H.has(e))return H.get(e);const i=(async()=>
19{if((0,j.V)(e.init))try{const{setupAgentSession:t}=await r.e(478).then(r.bind(r,8766));t(e)}catch(e){(0,l.R)(20,e),t.emit("internal-error",[e]),(0,S.p)(D.qh,[e],void 0,n,t)}if(e.init.api.register.allow_iframe_bridge)try{const{setupIframeMFEMessageListener:t}=await r.e(238).then(r.bind(r,6417));t(e)}catch(e){(0,l.R)(23,e)}const[{Connector:i},{Harvester:s}]=await Promise.all([r.e(478).then(r.bind(r,6589)),r.e(478).then(r.bind(r,5237))]);e.runtime.connector=new i(e),e.runtime.harvester=new s(e);const a=Object.values(e.features).filter(t=>e.runtime.drainRegistry.has(t.featureName));Promise.all(a.map(e=>e.onAggregateImported)).then(()=>e.runtime.harvester.startTimer())})();H.set(e,i),await i}(e,this.ee,this.featureName)}catch(e){return(0,l.R)(79,e),this.ee.abort(),void this.loadedSuccessfully(!1)}try{if(!this.#r(this.featureName,e.runtime.session,e.init))return this.abortHandler?.(),(0,L.Ze)(this.agentRef,this.featureName),void this.loadedSuccessfully(!1);const{Aggregate:r}=await t();this.featAggregate=new r(e,n),e.runtime.harvester.initializedAggregates.push(this.featAggregate),this.loadedSuccessfully(!0)}catch(e){(0,l.R)(34,e),this.abortHandler?.(),(0,L.Ze)(this.agentRef,this.featureName,!0),this.loadedSuccessfully(!1)}};g.RI?(0,P.GG)(()=>i(),!0):i()}#r(e,r,n){if(this.blocked)return!1;switch(e){case t.K7.sessionReplay:return(0,I.SR)(n)&&!!r;case t.K7.sessionTrace:return!!r;default:return!0}}#t(e){if(!B.has(e)&&(B.add(e),!(0,a.f)(e.info))){const t=(0,i.pV)();let r={...t.info?.jsAttributes};try{r={...r,...e.info?.jsAttributes}}catch(e){}O(e,{...t,info:{...t.info,jsAttributes:r},runtime:e.runtime},e.runtime.loaderType)}}}var U=r(6630);class K extends W{static featureName=U.T;constructor(e){var t;super(e,U.T),this.setupInspectionEvents(),t=e,(0,N.Y)(k.Fw,function(e,r){"string"==typeof e&&("/"!==e.charAt(0)&&(e="/"+e),t.runtime.customTransaction=(r||"http://custom.transaction")+e,(0,S.p)("api-"+k.Fw,[(0,_.t)()],void 0,void 0,t.ee))},t),this.importAggregator(e,()=>e.init.feature_flags.includes("rum_v2")?r.e(478).then(r.bind(r,908)):r.e(478).then(r.bind(r,7927)))}setupInspectionEvents(){const e=(e,t)=>{e&&(0,T.W)({timeStamp:e.timeStamp,loaded:"complete"===e.target.readyState,type:"window",name:t,data:e.target.location+""})};(0,P.sB)(t=>{e(t,"DOMContentLoaded")}),(0,P.GG)(t=>{e(t,"load")}),(0,P.Qr)(t=>{e(t,"navigate")}),this.ee.on(u.tS.UPDATE,(e,t)=>{(0,T.W)({type:"lifecycle",name:"session",data:t})})}}class F extends e.d{constructor(e){var t;(super(),g.gm)?(this.features={},(0,i.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(K),O(this,e,e.loaderType||"agent"),t=this,(0,N.Y)(k.cD,function(e,r,n=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof r)||null===r)return(0,N.U)(t,e,r,k.cD,n);(0,l.R)(40,typeof r)}else(0,l.R)(39,typeof e)},t),function(e){(0,N.Y)(k.Dl,function(t,r=!1){if("string"!=typeof t&&null!==t)return void(0,l.R)(41,typeof t);const n=e.info.jsAttributes["enduser.id"];r&&null!=n&&n!==t?(0,S.p)("api-setUserIdAndResetSession",[t],void 0,"session",e.ee):(0,N.U)(e,"enduser.id",t,k.Dl,!0)},e)}(this),function(e){(0,N.Y)(k.nb,function(t){if("string"==typeof t||null===t)return(0,N.U)(e,"application.version",t,k.nb,!1);(0,l.R)(42,typeof t)},e)}(this),function(e){(0,N.Y)("start",function(){e.ee.emit("manual-start-all")},e)}(this),function(e){(0,N.Y)(k.Pv,function(t=!0){if("boolean"==typeof t){if((0,S.p)("api-"+k.Pv,[t],void 0,"session",e.ee),e.runtime.consented=t,t){const t=e.features.page_view_event;t.onAggregateImported.then(e=>{const r=t.featAggregate;e&&!r.sentRum&&r.sendRum?.()})}}else(0,l.R)(65,typeof t)},e)}(this),this.run()):(0,l.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}get api(){return this}run(){try{const e=function(e){const t={};return n.forEach(r=>{t[r]=!!e[r]?.enabled}),t}(this.init),r=[...this.desiredFeatures],i=this.init.feature_flags.includes("rum_v2");r.sort((e,r)=>t.P3[e.featureName]-t.P3[r.featureName]),r.forEach(r=>{if(!e[r.featureName]&&(i||r.featureName!==t.K7.pageViewEvent))return;const n=function(e){switch(e){case t.K7.ajax:return[t.K7.jserrors];case t.K7.sessionTrace:return[t.K7.ajax,t.K7.pageViewEvent];case t.K7.sessionReplay:return[t.K7.sessionTrace];case t.K7.pageViewTiming:return[t.K7.pageViewEvent];default:return[]}}(r.featureName).filter(e=>!(e in this.features));n.length>0&&(0,l.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)})}catch(e){(0,l.R)(22,e);for(const e in this.features)this.features[e].abortHandler?.();const t=(0,i.Zm)();delete t.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return t.ee.get(this.agentIdentifier).abort(),!1}}}var V=r(2843),z=r(782);class G extends W{static featureName=z.T;constructor(e){super(e,z.T),g.RI&&((0,V.u)(()=>(0,S.p)("docHidden",[(0,_.t)()],void 0,z.T,this.ee),!0),(0,V.G)(()=>(0,S.p)("winPagehide",[(0,_.t)()],void 0,z.T,this.ee)),this.importAggregator(e,()=>r.e(478).then(r.bind(r,9917))))}}var q=r(3969);class Y extends W{static featureName=q.TZ;constructor(e){super(e,q.TZ),this.importAggregator(e,()=>r.e(478).then(r.bind(r,6555)))}}var Z=r(6774),J=r(3878),X=r(3304);class Q{constructor(e,t,r,n,i){this.name="UncaughtError",this.message="string"==typeof e?e:(0,X.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function ee(e){return ne(e)?e:new Q(void 0!==e?.message?e.message:e,e?.filename||e?.sourceURL,e?.lineno||e?.line,e?.colno||e?.col,e?.__newrelic,e?.cause)}function te(e){const t="Unhandled Promise Rejection: ";if(!e?.reason)return;if(ne(e.reason)){try{e.reason.message.startsWith(t)||(e.reason.message=t+e.reason.message)}catch(e){}return ee(e.reason)}const r=ee(e.reason);return(r.message||"").startsWith(t)||(r.message=t+r.message),r}function re(e){if(e.error instanceof SyntaxError&&!/:\d+$/.test(e.error.stack?.trim())){const t=new Q(e.message,e.filename,e.lineno,e.colno,e.error.__newrelic,e.cause);return t.name=SyntaxError.name,t}return ne(e.error)?e.error:ee(e)}function ne(e){return e instanceof Error&&!!e.stack}function ie(e,r,n,i,s=(0,_.t)()){"string"==typeof e&&(e=new Error(e)),(0,S.p)("err",[e,s,!1,r,n.runtime.isRecording,void 0,i],void 0,t.K7.jserrors,n.ee),(0,S.p)("uaErr",[],void 0,t.K7.genericEvents,n.ee)}var se=r(993),ae=r(3785);function oe(e,{customAttributes:t={},level:r=se.p_.INFO}={},n,i,s=(0,_.t)()){(0,ae.R)(n.ee,e,t,r,!1,i,s)}function ce(e,r,n,i,s=(0,_.t)()){(0,S.p)("api-"+k.hG,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}function de(e,r,n,i,s=(0,_.t)()){const{start:a,end:o,customAttributes:c}=r||{},d={customAttributes:c||{}};if("object"!=typeof d.customAttributes||"string"!=typeof e||0===e.length)return void(0,l.R)(57);const u=(e,t)=>
19null==e?t:"number"==typeof e?e:e instanceof PerformanceMark?e.startTime:Number.NaN;if(d.start=u(a,0),d.end=u(o,s),Number.isNaN(d.start)||Number.isNaN(d.end))(0,l.R)(57);else{if(d.duration=d.end-d.start,!(d.duration<0))return(0,S.p)("api-"+k.V1,[d,e,i],void 0,t.K7.genericEvents,n.ee),d;(0,l.R)(58)}}function ue(e,r={},n,i,s=(0,_.t)()){(0,S.p)("api-"+k.fF,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}var le=r(5718);const fe=(e,t)=>e?.nrMfeId===t.id&&(!e?.nrMfeObserved||e?.nrMfeObserved===t.instance),he=e=>{try{return g.gm.CSS.escape(e)}catch(t){return e}},pe=(e,t={})=>{const r=t.id,n=t.instance;if(!e||!r||!n)return!1;try{let r=1===e.nodeType?e:e.parentElement;for(;r?.tagName;){if(fe(r.dataset,t))return r.dataset.nrMfeObserved=n,!0;r=r.parentNode}}catch(e){}return!1},ge=(e,t)=>{const r=g.gm.document?.querySelectorAll('[data-nr-mfe-id="'.concat(he(e.id),'"]')),n=(Array.from(r)||[]).find(t=>fe(t.dataset,e));let i=!!n;i&&(n.dataset.nrMfeObserved??=e.instance);const s=new g.gm.MutationObserver(r=>{r.forEach(r=>{r.addedNodes.forEach(r=>{const n=1===r.nodeType?r:null;!i&&fe(n?.dataset,e)&&(s.disconnect(),s.observe(n,{childList:!0,subtree:!0}),i=!0,n.dataset.nrMfeObserved=e.instance),(e=>{try{return e?.textContent?.trim()||["img","video","canvas","svg"].includes(e?.nodeName?.toLowerCase())}catch(e){return!1}})(r)&&(i||pe(r,e))&&t(r,s)})})});return s.observe(n||g.gm.document,{childList:!0,subtree:!0}),s},me=(e,t,r)=>{try{const n=new g.gm.PerformanceObserver(e=>{e.getEntries().forEach(r)});return n.observe(t),e.push(n),n}catch(e){return null}};function ve(e,t){let r,n,i=!1;const s=e=>null==e?e:e-(t?.scriptStart||t?.registeredAt||0),a={fcp:{get value(){const e=s(r);return e>1e4?void 0:e},set value(e){i||(r=e)}},lcp:{get value(){if(void 0!==a.fcp.value)return s(n)},set value(e){i||(n=e)}},cls:{value:void 0},inp:{value:void 0},disconnect:()=>{}};if(!(e&&g.RI&&g.gm.MutationObserver&&g.gm.PerformanceObserver))return a;const o=[];setTimeout(()=>{r||a.disconnect()},1e4);const c=()=>{if(!i){if(null==r){const e=(0,_.t)();if(s(e)>1e4)return void a.disconnect();r=e}n??=(0,_.t)(),a.cls.value??=0}},d=ge(e,(e,t)=>{c(),t.disconnect()});o.push(d);let u=0,l=null;const f=new Set;try{l=new g.gm.ResizeObserver(e=>{i||e.forEach(e=>{try{const t=e.contentRect.width*e.contentRect.height;t>u&&(u=t,a.lcp.value=(0,_.t)()),l.unobserve(e.target)}catch(e){}})})}catch(e){}const h=ge(e,e=>{if(c(),l)try{const t=1===e.nodeType?e:e.parentElement;t&&!f.has(t)&&(f.add(t),"IMG"===t.tagName?t.complete?l.observe(t):t.addEventListener("load",()=>{l.observe(t)},{once:!0}):"VIDEO"===t.tagName?t.readyState>=2?l.observe(t):t.addEventListener("loadeddata",()=>{l.observe(t)},{once:!0}):l.observe(t))}catch(e){}});l&&o.push(l),o.push(h),me(o,{type:"layout-shift",buffered:!0},t=>{i||t.hadRecentInput||(t.sources||[]).some(r=>!!pe(r.node,e)&&(c(),a.cls.value+=t.value,!0))}),me(o,{type:"event",buffered:!0,durationThreshold:40},t=>{!i&&t.interactionId&&pe(t.target,e)&&(void 0===a.inp.value||t.duration>a.inp.value)&&(c(),a.inp.value=t.duration)});const p=["pointerdown","keydown"],m=()=>{p.forEach(e=>{g.gm.removeEventListener(e,v,{passive:!0})})};a.disconnect=()=>{i=!0,o.forEach(e=>{try{e?.disconnect()}catch(e){}}),m(),["visibilitychange","pagehide"].forEach(e=>{g.gm.removeEventListener(e,a.disconnect,{once:!0,passive:!0})})};const v=t=>{pe(t?.target,e)&&((()=>{try{h?.disconnect(),l?.disconnect()}catch(e){}})(),m())};p.forEach(e=>{g.gm.addEventListener(e,v,{passive:!0})}),["visibilitychange","pagehide"].forEach(e=>{g.gm.addEventListener(e,a.disconnect,{once:!0,passive:!0})});const y=g.gm.document?.querySelectorAll('[data-nr-mfe-id="'.concat(he(e.id),'"]'));return Array.from(y||[]).some(t=>fe(t.dataset,e))&&c(),a}var ye=r(9566),be=r(7560),Ee=r(9119);const we=["entry","scripts","all"],Re=["name","id","type"],Te=new Map([[ce,"addPageAction"],[oe,"log"],[de,"measure"],[ie,"noticeError"],[ue,"recordCustomEvent"]]),Ae={experimental:(0,C.J)(()=>(0,l.R)(54,"newrelic.register")),disabled:(0,C.J)(()=>(0,l.R)(55)),invalidTarget:(0,C.J)(e=>(0,l.R)(48,e)),deregistered:(0,C.J)(()=>(0,l.R)(68)),invalidTimingMethod:(0,C.J)(e=>(0,l.R)(80,e)),duplicateName:(0,C.J)(e=>(0,l.R)(81,e)),duplicateId:(0,C.J)(e=>(0,l.R)(82,e))};function Se(e){(0,N.Y)(k.eY,function(t){return xe(e,t)},e)}function xe(e,r){Ae.experimental(),r||={},r.instance=(0,ye.LA)(8),r.type=w.f.MFE,r.licenseKey||=e.info.licenseKey,r.blocked=!1,("object"!=typeof r.tags||null===r.tags||Array.isArray(r.tags))&&(r.tags={}),r.parent??={get id(){return e.runtime.appMetadata.agents?.[0].entityGuid},type:w.f.BA},r.manifest=(0,be.N)(r.manifest),void 0===r.timingMethod||we.includes(r.timingMethod)||(Ae.invali
19dTimingMethod(r.timingMethod),r.timingMethod=void 0);const n=(0,le.Qr)(r);r.manifest&&(0,le.xo)(n,r);const i=ve(r,n),s=(0,Ee.L)(""+location),a={};Object.prototype.hasOwnProperty.call(r,"attributes")||Object.defineProperty(r,"attributes",{get:()=>({...a,"source.id":r.id,"source.name":r.name,"source.type":r.type,"parent.type":r.parent?.type||w.f.BA,"parent.id":r.parent?.id})}),Object.entries(r.tags).forEach(([e,t])=>{Re.includes(e)||(a["source.".concat(e)]=t)});let o=()=>{};const c=e.runtime.registeredEntities,d=e=>{r.blocked=!0,o=e};function u(e){return"string"==typeof e&&!!e.trim()&&e.trim().length<501}e.init.api.register.enabled||d(Ae.disabled),u(r.id)&&u(r.name)||d(()=>Ae.invalidTarget(r)),c.forEach(e=>{try{const{name:t,id:n}=e.metadata.target;t===r.name&&n!==r.id&&Ae.duplicateName(r),n===r.id&&t!==r.name&&Ae.duplicateId(r)}catch(e){}});const f={addPageAction:(t,n={})=>m(ce,[t,{...a,...n},e],r),deregister:()=>{p(),d(Ae.deregistered)},log:(t,n={})=>m(oe,[t,{...n,customAttributes:{...a,...n.customAttributes||{}}},e],r),measure:(t,n={})=>m(de,[t,{...n,customAttributes:{...a,...n.customAttributes||{}}},e],r),noticeError:(t,n={})=>m(ie,[t,{...a,...n},e],r),recordCustomEvent:(t,n={})=>m(ue,[t,{...a,...n},e],r),setApplicationVersion:e=>g("application.version",e),setCustomAttribute:(e,t)=>g(e,t),setUserId:e=>g("enduser.id",e),metadata:{get customAttributes(){return a},target:r,timings:n,vitals:i,events:{latestTimestamp:void 0}}},h=()=>(r.blocked&&o(),r.blocked);function p(){if(n.reportedAt)return;n.reportedAt=(0,_.t)(),i.disconnect(),n.fcp=i.fcp,n.lcp=i.lcp,n.cls=i.cls,n.inp=i.inp;const e=n.fetchEnd-n.fetchStart,t=n.scriptEnd-n.scriptStart,r={assetUrl:n.asset,assetType:n.type,registerUrl:s,deregisterUrl:(0,Ee.L)(""+location),pageUrl:void 0,currentUrl:void 0,timeAlive:n.reportedAt-n.registeredAt,timeToBeRequested:n.fetchStart,timeToExecute:t,timeToFetch:e,timeToLoad:e+t,t
19imeToRegister:n.registeredAt,totalWeight:n.totalWeight,...void 0!==n.renderBlocking&&{renderBlocking:n.renderBlocking},...i.fcp.value>=0&&{"vitals.fcp.value":i.fcp.value},...i.lcp.value>=0&&{"vitals.lcp.value":i.lcp.value},...i.cls.value>=0&&{"vitals.cls.value":i.cls.value},...i.inp.value>=0&&{"vitals.inp.value":i.inp.value}};f.recordCustomEvent("MicroFrontEndTiming",r)}h()||(c.push(f),(0,V.G)(p));const g=(e,t)=>{h()||(a[e]=t)},m=(r,n,i)=>{if(h()&&r!==xe)return;const s=f.metadata.events.latestTimestamp??(0,_.t)();f.metadata.events.latestTimestamp=void 0;const a=Te.get(r)||"unknown";(0,S.p)(q.xV,["API/register/".concat(a,"/called")],void 0,t.K7.metrics,e.ee);try{return r(...n,i,s)}catch(e){(0,l.R)(50,e)}};return f}class Oe extends W{static featureName=Z.T;constructor(e){var t;super(e,Z.T),t=e,(0,N.Y)(k.o5,(e,r)=>ie(e,r,t),t),function(e){(0,N.Y)(k.bt,function(t){e.runtime.onerror=t},e)}(e),function(e){let t=0;(0,N.Y)(k.k6,function(e,r){++t>10||(this.runtime.releaseIds[e.slice(-200)]=(""+r).slice(-200))},e)}(e),Se(e);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on("internal-error",(t,r)=>{this.abortHandler&&(0,S.p)("ierr",[ee(t),(0,_.t)(),!0,{},e.runtime.isRecording,r],void 0,this.featureName,this.ee)}),g.gm.addEventListener("unhandledrejection",t=>{this.abortHandler&&(0,S.p)("err",[te(t),(0,_.t)(),!1,{unhandledPromiseRejection:1},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,J.jT)(!1,this.removeOnAbort?.signal)),g.gm.addEventListener("error",t=>{this.abortHandler&&(0,S.p)("err",[re(t),(0,_.t)(),!1,{},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,J.jT)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e,()=>r.e(478).then(r.bind(r,9377)))}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var _e=r(8990);let ke=1;function Ne(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===g.gm?0:(0,_e.I)(e,"nr@id",function(){return ke++})}function Le(e){if("string"==typeof e)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,X.A)(e).length}catch(e){return}}}var Me=r(8139),Pe=r(3434),Ie=r(5732);const je={},Ce=["open","send","setRequestHeader"];function De(e,t){var r=e||R.ee;const n=function(e){return(e||R.ee).get("xhr")}(r);if(void 0===g.gm.XMLHttpRequest)return n;if(je[n.debugId]++)return n;je[n.debugId]=1,(0,Me.u)(r,t);var i=(0,Pe.YM)(n,void 0,t),s=g.gm.XMLHttpRequest,a=g.gm.MutationObserver,o=g.gm.Promise,c=g.gm.setInterval,d="readystatechange",u=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],f=[],h=g.gm.XMLHttpRequest=function(e){const r=new s(e),a=n.context(r);a.targets=(0,Ie.$5)(t);try{n.emit("new-xhr",[r],a),r.addEventListener(d,(o=a,function(){var e=this;e.readyState>3&&!o.resolved&&(o.resolved=!0,n.emit("xhr-resolved",[],e)),i.inPlace(e,u,"fn-",E)}),(0,J.jT)(!1))}catch(e){(0,l.R)(15,e);try{n.emit("internal-error",[e])}catch(e){}}var o;return r};function p(e,t){i.inPlace(t,["onreadystatechange"],"fn-",E)}if(function(e,t){for(var r in e)t[r]=e[r]}(s,h),h.prototype=s.prototype,i.inPlace(h.prototype,Ce,"-xhr-",E),n.on("send-xhr-start",function(e,t){p(e,t),function(e){f.push(e),a&&(m?m.then(b):c?c(b):(v=-v,y.data=v))}(t)}),n.on("open-xhr-start",p),a){var m=o&&o.resolve();if(!c&&!o){var v=1,y=document.createTextNode(v);new a(b).observe(y,{characterData:!0})}}else r.on("fn-end",function(e){e[0]&&e[0].type===d||b()});function b(){for(var e=0;e<f.length;e++)p(0,f[e]);f.length&&(f=[])}function E(e,t){return t}return n}var Be="fetch-",He=Be+"body-",We=["arrayBuffer","blob","json","text","formData"],Ue=g.gm.Request,Ke=g.gm.Response,Fe="prototype";const Ve={};function ze(e,t){const r=function(e){return(e||R.ee).get("fetch")}(e);if(!(Ue&&Ke&&g.gm.fetch))return r;if(Ve[r.debugId]++)return r;function n(e,n,i){var s=e[n];"function"==typeof s&&(e[n]=function(){var e=[...arguments];const n={},a=(0,Ie.$5)(t);var o;r.emit(i+"before-start",[e],n),n[R.P]&&n[R.P].dt&&(o=n[R.P].dt);var c=s.apply(this,e);return r.emit(i+"start",[e,o],c),c.then(function(e){return r.emit(i+"end",[null,e,a],c),e},function(e){throw r.emit(i+"end",[e,void 0,a],c),e})})}
19return Ve[r.debugId]=1,We.forEach(e=>{n(Ue[Fe],e,He),n(Ke[Fe],e,He)}),n(g.gm,"fetch",Be),r.on(Be+"end",function(e,n,i){var s=this;if(s.targets=i||[t.runtime.v2Target],n){var a=n.headers.get("content-length");null!==a&&(s.rxSize=a),r.emit(Be+"done",[null,n],s)}else r.emit(Be+"done",[e],s)}),r}var Ge=r(7485);class qe{constructor(e){this.agentRef=e}generateTracePayload(e){const t=this.agentRef.loader_config;if(!this.shouldGenerateTrace(e)||!t)return null;var r=(t.accountID||"").toString()||null,n=(t.agentID||"").toString()||null,i=(t.trustKey||"").toString()||null;if(!r||!n)return null;var s=(0,ye.ZF)(),a=(0,ye.el)(),o=Date.now(),c={spanId:s,traceId:a,timestamp:o};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(c.traceContextParentHeader=this.generateTraceContextParentHeader(s,a),c.traceContextStateHeader=this.generateTraceContextStateHeader(s,o,r,n,i)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(c.newrelicHeader=this.generateTraceHeader(s,a,o,r,n,i)),c}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,s){if(!("function"==typeof g.gm?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return s&&n!==s&&(a.d.tk=s),btoa((0,X.A)(a))}shouldGenerateTrace(e){return this.agentRef.init?.distributed_tracing?.enabled&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1;const r=this.agentRef.init?.distributed_tracing;if(e.sameOrigin)t=!0;else if(r?.allowed_origins instanceof Array)for(var n=0;n<r.allowed_origins.length;n++){var i=(0,Ge.D)(r.allowed_origins[n]);if(e.hostname===i.hostname&&e.protocol===i.protocol&&e.port===i.port){t=!0;break}}return t}excludeNewrelicHeader(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.cors_use_tracecontext_headers}}var Ye=r(7295);function Ze(e){return"string"==typeof e?e:e instanceof(0,i.dV)().o.REQ?e.url:g.gm?.URL&&e instanceof URL?e.href:void 0}function $e(e,t){var r=(0,Ge.D)(t),n=e.params||e;n.hostname=r.hostname,n.port=r.port,n.protocol=r.protocol,n.host=r.hostname+":"+r.port,n.pathname=r.pathname,e.parsedOrigin=r,e.sameOrigin=r.sameOrigin}var Je=["load","error","abort","timeout"],Xe=Je.length,Qe=(0,i.dV)().o.REQ,et=(0,i.dV)().o.XHR;const tt="X-NewRelic-App-Data",rt="internal-error";class nt extends W{static featureName=c.TZ;constructor(e){super(e,c.TZ),this.dt=new qe(e),this.handler=(e,t,r,n)=>(0,S.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:"xhr",fetch:"fetch",beacon:"beacon"};g.gm?.performance?.getEntriesByType("resource").forEach(r=>{if(r.initiatorType in e&&0!==r.responseStatus){const n={status:r.responseStatus},i={rxSize:r.transferSize,duration:Math.floor(r.duration),cbTime:0};$e(n,r.name),this.handler("xhr",[n,i,r.startTime,r.responseEnd,e[r.initiatorType]],void 0,t.K7.ajax)}})}catch(e){}ze(this.ee,e),De(this.ee,e),function(e,r,n,i){const s=[c.mo.ALL,c.mo.FAILURES].includes(e.init.ajax?.capture_payloads);function a(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=A,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},t.latestLongtaskEnd=0,e.addEventListener("load",function(r){O(t,e)},(0,J.jT)(!1)),g.lR||e.addEventListener("progress",function(e){t.lastSize=e.loaded},(0,J.jT)(!1))}function o(e){this.params={method:e[0]},$e(this,e[1]),this.metrics={}}function d(t,r){e.loader_config.xpid&&this.sameOrigin&&r.setRequestHeader("X-NewRelic-ID",e.loader_config.xpid);var n=i.generateTracePayload(this.parsedOrigin);if(n){var s=!1;n.newrelicHeader&&(r.setRequestHeader("newrelic",n.newrelicHeader),s=!0),n.traceContextParentHeader&&(r.setRequestHeader("traceparent",n.traceContextParentHeader),n.traceContextStateHeader&&r.setRequestHeader("tracestate",n.traceContextStateHeader),s=!0),s&&(this.dt=n)}}function u(e,t){s&&e.length>=2&&(this.requestHeaders??={},this.requestHeaders[e[0].toLowerCase()]=e[1])}function l(e,t){var n=this.metrics,i=e[0],s=this;if(n&&i){var a=Le(i);a&&(n.txSize=a)}this.startTime=(0,_.t)(),this.requestBody=i,this.listener=function(e){try{"abort"!==e.type||s.loadCaptureCalled||(s.params.aborted=!0),("load"
19!==e.type||s.called===s.totalCbs&&(s.onloadCalled||"function"!=typeof t.onload)&&"function"==typeof s.end)&&s.end(t)}catch(e){try{r.emit(rt,[e])}catch(e){}}};for(var o=0;o<Xe;o++)t.addEventListener(Je[o],this.listener,(0,J.jT)(!1))}function f(e,t,r){this.cbTime+=e,t?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof r.onload||"function"!=typeof this.end||this.end(r)}function h(e,t){var r=""+Ne(e)+!!t;this.xhrGuids&&!this.xhrGuids[r]&&(this.xhrGuids[r]=!0,this.totalCbs+=1)}function p(e,t){var r=""+Ne(e)+!!t;this.xhrGuids&&this.xhrGuids[r]&&(delete this.xhrGuids[r],this.totalCbs-=1)}function m(){this.endTime=(0,_.t)()}function v(e,t){t instanceof et&&"load"===e[0]&&r.emit("xhr-load-added",[e[1],e[2]],t)}function y(e,t){t instanceof et&&"load"===e[0]&&r.emit("xhr-load-removed",[e[1],e[2]],t)}function b(e,t,r){t instanceof et&&("onload"===r&&(this.onload=!0),("load"===(e[0]&&e[0].type)||this.onload)&&(this.xhrCbStart=(0,_.t)()))}function E(e,t){this.xhrCbStart&&r.emit("xhr-cb-time",[(0,_.t)()-this.xhrCbStart,this.onload,t],t)}function w(e){var t,r=e[1]||{};if("string"==typeof e[0]?0===(t=e[0]).length&&g.RI&&(t=""+g.gm.location.href):e[0]&&e[0].url?t=e[0].url:g.gm?.URL&&e[0]&&e[0]instanceof URL?t=e[0].href:"function"==typeof e[0].toString&&(t=e[0].toString()),"string"==typeof t&&0!==t.length){t&&(this.parsedOrigin=(0,Ge.D)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var n=i.generateTracePayload(this.parsedOrigin);if(n&&(n.newrelicHeader||n.traceContextParentHeader))if(e[0]&&e[0].headers)o(e[0].headers,n)&&(this.dt=n);else{var s={};for(var a in r)s[a]=r[a];s.headers=new Headers(r.headers||{}),o(s.headers,n)&&(this.dt=n),e.length>1?e[1]=s:e.push(s)}}function o(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function R(e,t){this.params={},this.metrics={},this.startTime=(0,_.t)(),this.dt=t;let[r,n={}]=e;$e(this,Ze(r));const i=(""+(r&&r instanceof Qe&&r.method||n.method||"GET")).toUpperCase();this.params.method=i,this.txSize=Le(n.body||r?.body)||0;try{var a=n.headers||r?.headers;if(s&&a)if(this.requestHeaders??={},a instanceof Headers)a.forEach(function(e,t){this.requestHeaders[t.toLowerCase()]=e}.bind(this));else if("object"==typeof a)for(var o in a)this.requestHeaders[o.toLowerCase()]=a[o]}catch(e){}this.requestBody=n.body||r?.body}function T(e,t){if(this.endTime=(0,_.t)(),this.params||(this.params={}),(0,Ye.iW)(this.params))return;this.params.status=t?t.status:0;const n=()=>{const e=+this.rxSize,t=null==this.rxSize||isNaN(e)?void 0:e,r={txSize:this.txSize,rxSize:t,duration:this.endTime-this.startTime},n=[this.params,r,this.startTime,this.endTime,"fetch"];this.targets.forEach(e=>x(n,this,e))};t&&s?t.clone().text().then(e=>{this.responseBody=e,this.rxSize&&"0"!==this.rxSize&&0!==this.rxSize||void 0===e||0===this.params.status||(this.rxSize=Le(e)),t?.headers&&(this.responseHeaders={},t.headers.forEach(function(e,t){this.responseHeaders[t.toLowerCase()]=e}.bind(this)))}).catch(e=>{r.emit(rt,[e])}).finally(()=>{n()}):n()}function A(e){const t=this.params,n=this.metrics;if(this.ended)return;this.ended=!0;for(let t=0;t<Xe;t++)e.removeEventListener(Je[t],this.listener,!1);if(t.aborted)return;if((0,Ye.iW)(t))return;if(n.duration=this.endTime-this.startTime,this.loadCaptureCalled||4!==e.readyState?null==t.status&&(t.status=0):O(this,e),n.cbTime=this.cbTime,s){try{this.responseBody=e.responseText}catch(t){this.responseBody=e.response}if((!n.rxSize||0===n.rxSize)&&void 0!==this.responseBody&&0!==t.status){const e=Le(this.responseBody);void 0!==e&&(n.rxSize=e)}try{this.responseHeaders=function(e){const t={};return e?(e.split("\r\n").forEach(function(e){const r=e.indexOf(": ");if(r>0){const n=e.substring(0,r),i=e.substring(r+2);t[n.toLowerCase()]=i}}),t):t}(e.getAllResponseHeaders())}catch(e){r.emit(rt,[e])}}const i=[t,n,this.startTime,this.endTime,"xhr"];this.targets.forEach(e=>x(i,this,e))}function x(e,r,i){n("xhr",[...e,i],r,t.K7.ajax)}function O(e,n){e.params.status=n.status;var i=function(e,t){var r=e.responseType;return"json"===r&&null!==t?t:"arraybuffer"===r||"blob"===r||"json"===r?Le(e.response):"text"===r||""===r||void 0===r?Le(e.responseText):void 0}(n,e.lastSize);if(void 0!==i&&0!==n.status&&(e.metrics.rxSize=i),e.sameOrigin&&n.getAllResponseHeaders().indexOf(tt)>=0){var s=n.getResponseHeader(tt);s&&((0,S.p)("sm",["Ajax/CrossApplicationTracing/Header/Seen"],void 0,t.K7.metrics,r),e.params.cat=s.split(", ").pop())}e.loadCaptureCalled=!0}r.on("new-xhr",a),r.on("open-xhr-start",o),r.on("open-xhr-end",d),r.on("send-xhr-start",l),r.on("setRequestHeader-xhr-start",u),r.on("xhr-cb-time",f),r.on("xhr-load-added",h),r.on("xhr-load-removed",p),r.on("xhr-resolved",m),r.on("addEventListener-end",v),r.on("removeEventListener-end",y),r.on("fn-end",E),r.on("fetch-before-start",w),r.on("fetch-start",R),r.on("fn-start",b),r.on("fetch-done",T)}(e,this.ee,this.handler,this.dt),this.importAggregator(e,()=>r.e(478).then(r.bind(r,3845)))}}const it={},st=["pushState","replaceState"];function at(e,t){const r=function(e){return(e||R.ee).get("history")}(e);return!g.RI||it[r.debugId]++||(it[r.debugId]=1,(0,Pe.YM)(r,void 0,t).inPlace(window.history,st,"-")),r}var ot=r(3738);function ct(e){(0,N.Y)(k.BL,function(r=Date.now()){const n=r-g.WN;n<0&&(0,l.R)(62,r),(0,S.p)(q.XG,[k.BL,{time:n}],void 0,t.K7.metrics,e.ee),e.addToTrace({name:k.BL,start:r,origin:"nr"}),(0,S.p)("api-"+k.hG,[n,k.BL],void 0,t.K7.genericEvents,e.ee)},e)}const{He:dt,bD:ut,d3:lt,Kp:ft,TZ:ht,Lc:pt,uP:gt,Rz:mt}=ot;class vt extends W{static featureName=ht;constructor(e){var n;super(e,ht),n=e,(0,N.Y)(k.U2,function(e){if(!(e&&"object"==typeof e&&e.name&&e.start))return;const r={n:e.name,s:e.start-g.WN,e:(e.end||e.start)-g.WN,o:e.origin||"",t:"api"};r.s<0||r.e<0||r.e<r.s?(0,l.R)(61,{start:r.s,end:r.e}):(0,S.p)("bstApi",[r],void 0,t.K7.sessionTrace,n.ee)},n),ct(e);
19if(!(0,j.V)(e.init))return void this.deregisterDrain();const i=this.ee;let s;at(i,e),this.eventsEE=(0,Me.u)(i,e),this.eventsEE.on(gt,function(e,t){this.bstStart=(0,_.t)()}),this.eventsEE.on(pt,function(e,r){(0,S.p)("bst",[e[0],r,this.bstStart,(0,_.t)()],void 0,t.K7.sessionTrace,i)}),i.on(mt+lt,function(e){this.time=(0,_.t)(),this.startPath=location.pathname+location.hash}),i.on(mt+ft,function(e){(0,S.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,t.K7.sessionTrace,i)});try{s=new PerformanceObserver(e=>{const r=e.getEntries();(0,S.p)(dt,[r],void 0,t.K7.sessionTrace,i)}),s.observe({type:ut,buffered:!0})}catch(e){}this.importAggregator(e,()=>r.e(478).then(r.bind(r,6974)),{resourceObserver:s})}}var yt=r(733),bt=r(6344);class Et extends W{static featureName=bt.TZ;#i;recorder;constructor(e){var n;let i;super(e,bt.TZ),n=e,(0,N.Y)(k.CH,function(){(0,S.p)(k.CH,[],void 0,t.K7.sessionReplay,n.ee)},n),function(e){(0,N.Y)(k.Tb,function(){(0,S.p)(k.Tb,[],void 0,t.K7.sessionReplay,e.ee)},e)}(e);const s="".concat(u.Wt).concat((0,yt.Y)(e.info.licenseKey,e.info.applicationID));try{i=JSON.parse(localStorage.getItem(s))}catch(e){}(0,I.SR)(e.init)&&this.ee.on(k.CH,()=>this.#s()),this.#a(i)&&this.importRecorder().then(e=>{e.startRecording(bt.Qb.PRELOAD,i?.sessionReplayMode)}),this.abortHandler=this.#n,this.importAggregator(this.agentRef,()=>r.e(478).then(r.bind(r,6167)),this),this.ee.on("err",e=>{this.blocked||this.agentRef.runtime.isRecording&&(this.errorNoticed=!0,(0,S.p)(bt.Vh,[e],void 0,this.featureName,this.ee))})}#a(e){return e&&(e.sessionReplayMode===u.g.FULL||e.sessionReplayMode===u.g.ERROR)||(0,I.Aw)(this.agentRef.init)}importRecorder(){return this.recorder?Promise.resolve(this.recorder):(this.#i??=Promise.all([r.e(478),r.e(249)]).then(r.bind(r,4866)).then(({Recorder:e})=>(this.recorder=new e(this),this.recorder)).catch(e=>{throw this.ee.emit("internal-error",[e]),this.blocked=!0,e}),this.#i)}#s(){this.blocked||(this.featAggregate?this.featAggregate.mode!==u.g.FULL&&this.featAggregate.initializeRecording(u.g.FULL,!0,bt.Qb.API):this.importRecorder().then(()=>{this.recorder.startRecording(bt.Qb.API,u.g.FULL)}))}#n(){this.recorder?.stopRecording()}}var wt=r(3962);class Rt extends W{static featureName=wt.TZ;constructor(e){if(super(e,wt.TZ),function(e){const r=e.ee.get("tracer");function n(){}(0,N.Y)(k.dT,function(e){return(new n).get("object"==typeof e?e:{})},e);const i=n.prototype={createTracer:function(n,i){var s={},a=this,o="function"==typeof i;return(0,S.p)(q.xV,["API/createTracer/called"],void 0,t.K7.metrics,e.ee),function(){if(r.emit((o?"":"no-")+"fn-start",[(0,_.t)(),a,o],s),o)try{return i.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw r.emit("fn-err",[arguments,this,t],s),t}finally{r.emit("fn-end",[(0,_.t)()],s)}}}};["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach(r=>{N.Y.apply(this,[r,function(){return(0,S.p)(k.hw+r,[performance.now(),...arguments],this,t.K7.softNav,e.ee),this},e,i])}),(0,N.Y)(k.PA,function(){(0,S.p)(k.hw+"routeName",[performance.now(),...arguments],void 0,t.K7.softNav,e.ee)},e)}(e),!g.RI||!(0,i.dV)().o.MO)return;const n=at(this.ee,e);try{this.removeOnAbort=new AbortController}catch(e){}wt.tC.forEach(e=>{(0,J.sp)(e,e=>{c(e)},!0,this.removeOnAbort?.signal)}
19);const s=()=>(0,S.p)("newURL",[(0,_.t)(),""+window.location],void 0,this.featureName,this.ee);n.on("pushState-end",s),n.on("replaceState-end",s),(0,J.sp)(wt.OV,e=>{c(e),(0,S.p)("newURL",[e.timeStamp,""+window.location],void 0,this.featureName,this.ee)},!0,this.removeOnAbort?.signal);let a=!1;const o=new((0,i.dV)().o.MO)((e,t)=>{a||(a=!0,requestAnimationFrame(()=>{(0,S.p)("newDom",[(0,_.t)()],void 0,this.featureName,this.ee),a=!1}))}),c=(0,C.s)(e=>{"loading"!==document.readyState&&((0,S.p)("newUIEvent",[e],void 0,this.featureName,this.ee),o.observe(document.body,{attributes:!0,childList:!0,subtree:!0,characterData:!0}))},100,{leading:!0});this.abortHandler=function(){this.removeOnAbort?.abort(),o.disconnect(),this.abortHandler=void 0},this.importAggregator(e,()=>r.e(478).then(r.bind(r,4393)),{domObserver:o})}}var Tt=r(981);const At={},St=new Set;function xt(e){return"string"==typeof e?{type:"string",size:(new TextEncoder).encode(e).length}:e instanceof ArrayBuffer?{type:"ArrayBuffer",size:e.byteLength}:e instanceof Blob?{type:"Blob",size:e.size}:e instanceof DataView?{type:"DataView",size:e.byteLength}:ArrayBuffer.isView(e)?{type:"TypedArray",size:e.byteLength}:{type:"unknown",size:0}}class Ot{constructor(e,t){this.timestamp=(0,_.t)(),this.currentUrl=(0,Ee.L)(window.location.href),this.socketId=(0,ye.LA)(8),this.requestedUrl=(0,Ee.L)(e),this.requestedProtocols=Array.isArray(t)?t.join(","):t||"",this.openedAt=void 0,this.protocol=void 0,this.extensions=void 0,this.binaryType=void 0,this.messageOrigin=void 0,this.messageCount=0,this.messageBytes=0,this.messageBytesMin=0,this.messageBytesMax=0,this.messageTypes=void 0,this.sendCount=0,this.sendBytes=0,this.sendBytesMin=0,this.sendBytesMax=0,this.sendTypes=void 0,this.closedAt=void 0,this.closeCode=void 0,this.closeReason="unknown",this.closeWasClean=void 0,this.connectedDuration=0,this.hasErrors=void 0}}class _t extends W{static featureName=o.TZ;constructor(e){super(e,o.TZ);const n=e.init.feature_flags.includes("websockets")||e.init.web_sockets?.enabled,s=!e.init.feature_flags.includes("no_spv"),a=[e.init.page_action.enabled,e.init.performance.capture_marks,e.init.performance.capture_measures,e.init.performance.resources.enabled,e.init.user_actions.enabled,n,s];var c;let d;if(c=e,(0,N.Y)(k.hG,(e,t)=>ce(e,t,c),c),function(e){(0,N.Y)(k.fF,(t,r)=>ue(t,r,e),e)}(e),ct(e),Se(e),function(e){(0,N.Y)(k.V1,(t,r)=>de(t,r,e),e)}(e),this.removeOnAbort=new AbortController,this.abortHandler=()=>{this.removeOnAbort.abort(),this.abortHandler=void 0},n){const u=function(e,t){if(!(0,i.dV)().o.WS)return e;const r=e.get("websockets");if(At[r.debugId]++)return r;At[r.debugId]=1,(0,V.G)(()=>{const e=(0,_.t)();St.forEach(t=>{t.nrData.closedAt=e,t.nrData.closeCode=1001,t.nrData.closeReason="Page navigating away",t.nrData.closeWasClean=!1,t.nrData.openedAt&&(t.nrData.connectedDuration=e-t.nrData.openedAt),r.emit("ws",[t.nrData,t.targets],t)})});
19class n extends WebSocket{static name=Tt.R.WS;static toString(){return"function WebSocket() { [native code] }"}toString(){return"[object WebSocket]"}get[Symbol.toStringTag](){return n.name}#o(e){(e.__newrelic??={}).socketId=this.nrData.socketId,this.nrData.hasErrors??=!0}constructor(...e){super(...e),this.nrData=new Ot(e[0],e[1]),this.targets=(0,Ie.$5)(t),this.addEventListener("open",()=>{this.nrData.openedAt=(0,_.t)(),["protocol","extensions","binaryType"].forEach(e=>{this.nrData[e]=this[e]}),St.add(this)}),this.addEventListener("message",e=>{const{type:t,size:r}=xt(e.data);this.nrData.messageOrigin??=(0,Ee.L)(e.origin),this.nrData.messageCount++,this.nrData.messageBytes+=r,this.nrData.messageBytesMin=Math.min(this.nrData.messageBytesMin||1/0,r),this.nrData.messageBytesMax=Math.max(this.nrData.messageBytesMax,r),(this.nrData.messageTypes??"").includes(t)||(this.nrData.messageTypes=this.nrData.messageTypes?"".concat(this.nrData.messageTypes,",").concat(t):t)}),this.addEventListener("close",e=>{this.nrData.closedAt=(0,_.t)(),this.nrData.closeCode=e.code,e.reason&&(this.nrData.closeReason=e.reason),this.nrData.closeWasClean=e.wasClean,this.nrData.connectedDuration=this.nrData.closedAt-this.nrData.openedAt,St.delete(this),r.emit("ws",[this.nrData,this.targets],this)})}addEventListener(e,t,...r){const n=this,i="function"==typeof t?function(...e){try{return t.apply(this,e)}catch(e){throw n.#o(e),e}}:t?.handleEvent?{handleEvent:function(...e){try{return t.handleEvent.apply(t,e)}catch(e){throw n.#o(e),e}}}:t;return super.addEventListener(e,i,...r)}send(e){if(this.readyState===WebSocket.OPEN){const{type:t,size:r}=xt(e);this.nrData.sendCount++,this.nrData.sendBytes+=r,this.nrData.sendBytesMin=Math.min(this.nrData.sendBytesMin||1/0,r),this.nrData.sendBytesMax=Math.max(this.nrData.sendBytesMax,r),(this.nrData.sendTypes??"").includes(t)||(this.nrData.sendTypes=this.nrData.sendTypes?"".concat(this.nrData.sendTypes,",").concat(t):t)}try{return super.send(e)}catch(e){throw this.#o(e),e}}close(...e){try{super.close(...e)}catch(e){throw this.#o(e),e}}}return g.gm.WebSocket=n,r}(this.ee,e);u.on("ws",(e,t)=>{(0,S.p)("ws-complete",[e,t],void 0,this.featureName,this.ee)})}if(s){if("function"==typeof g.gm.ReportingObserver){const l=new g.gm.ReportingObserver(e=>{e.forEach(e=>{(0,S.p)("spv",[kt(e),(0,_.t)()],void 0,t.K7.genericEvents,this.ee)}),l.disconnect()},{types:["csp-violation"],buffered:!0});l.observe()}g.gm.addEventListener("securitypolicyviolation",e=>{(0,S.p)("spv",[kt(e),e.timeStamp],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(!1,this.removeOnAbort.signal))}if(g.RI){if(ze(this.ee,e),De(this.ee,e),d=at(this.ee,e),e.init.user_actions.enabled){function f(t){const r=(0,Ge.D)(t);return e.beacons.includes(r.hostname+":"+r.port)}function h(){d.emit("navChange")}o.Zp.forEach(e=>(0,J.sp)(e,e=>(0,S.p)("ua",[e],void 0,this.featureName,this.ee),!0)),o.qN.forEac
19h(e=>{const t=(0,C.s)(e=>{(0,S.p)("ua",[e],void 0,this.featureName,this.ee)},500,{leading:!0});(0,J.sp)(e,t)}),g.gm.addEventListener("error",()=>{(0,S.p)("uaErr",[],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(!1,this.removeOnAbort.signal)),this.ee.on("open-xhr-start",(e,r)=>{f(e[1])||r.addEventListener("readystatechange",()=>{2===r.readyState&&(0,S.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(void 0,this.removeOnAbort.signal))}),this.ee.on("fetch-start",e=>{e.length>=1&&!f(Ze(e[0]))&&(0,S.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)}),d.on("pushState-end",h),d.on("replaceState-end",h),window.addEventListener("hashchange",h,(0,J.jT)(!0,this.removeOnAbort.signal)),window.addEventListener("popstate",h,(0,J.jT)(!0,this.removeOnAbort.signal))}if(e.init.performance.resources.enabled&&g.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{(0,S.p)("browserPerformance.resource",[e],void 0,this.featureName,this.ee)})}).observe({type:"resource",buffered:!0})}}a.some(e=>e)?this.importAggregator(e,()=>r.e(478).then(r.bind(r,8019))):this.deregisterDrain()}}function kt(e){const t=e.body??e;return{blockedUrl:t.blockedURL??e.blockedURI,documentUrl:t.documentURL??e.documentURI,effectiveDirective:t.effectiveDirective,originalPolicy:t.originalPolicy,sourceFile:t.sourceFile,statusCode:t.statusCode,lineNumber:t.lineNumber,columnNumber:t.columnNumber,disposition:"reporting"===t.disposition?"report":t.disposition,sample:t.sample,referrer:t.referrer}}var Nt=r(2646);const Lt=new Map;function Mt(e,t,r,n,i=!0,s){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,l.R)(29);const a=function(e){return(e||R.ee).get("logger")}(e),o=(0,Pe.YM)(a,void 0,s),c=new Nt.y(R.P);c.level=n.level,c.customAttributes=n.customAttributes,c.autoCaptured=i;const d=t[r]?.[Pe.Jt]||t[r];return Lt.set(d,c),o.inPlace(t,[r],"wrap-logger-",()=>Lt.get(d),void 0,!0),a}var Pt=r(1910);class It extends W{static featureName=se.TZ;constructor(e){var t;super(e,se.TZ),t=e,(0,N.Y)("log",(e,r)=>oe(e,r,t),t),function(e){(0,N.Y)(k.Wb,(t,r,{customAttributes:n={},level:i=se.p_.INFO}={})=>{Mt(e.ee,t,r,{customAttributes:n,level:i},!1,e)},e)}(e),Se(e);const n=this.ee;["log","error","warn","info","debug","trace"].forEach(t=>{(0,Pt.i)(g.gm.console[t]),Mt(n,g.gm.console,t,{level:"log"===t?"info":t},void 0,e)}),this.ee.on("wrap-logger-end",function([t],r,i,s=[e.runtime.v2Target]){const{level:a,customAttributes:o,autoCaptured:c}=this;s.forEach(e=>{(0,ae.R)(n,t,o,a,c,e)})}),this.importAggregator(e,()=>r.e(478).then(r.bind(r,5288)))}}new F({features:[nt,K,G,vt,Et,Y,Oe,_t,It,Rt],loaderType:"spa"})})()})();</script>
19<link href="/resources/pagebuilder2/box/box.css" rel="stylesheet"
20			type="text/css" />
21		<link
22			href="/resources/pagebuilder2/assets/minimalist-blocks/content.css"
23			rel="stylesheet" type="text/css" />
24   		
25   		
26   		
27
28
29
30
31 
32
33 
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51		
52		
53			
54		
55
56
57
58
59
60
61	
62	
63
64
65	
66		
67	
68	
69
70
71	
72	
73		
74	
75
76
77
78 
79 
80 	
81 	
82		<meta name="viewport" content="width=device-width, initial-scale=1.0">
83 	
84 	
85  
86    
87   		
88   		
89   		
90   		
91   		
92   		
93   		
94    
95    <meta name="google" content="notranslate">
96    
97    	
98        	<link rel="canonical" href="https://learn.excelsirji.com/courses/Learn-Excel-from-Basics-to-AI--FREE-696cecf361729d185b1c7649" />
99  
100
101
102<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
103<link rel="icon" href="/favicon.ico" type="image/x-icon">
104
105
106
107
108
109
110	
111		
111<script>var orgCountry = "IN";</script>
111
112	
113	
114
115
116<link id="theme" href="https://d502jbuhuh9wk.cloudfront.net/resources/themes/default/spectre.min.css" rel="stylesheet">
117
118<link rel="preconnect" href="https://fonts.googleapis.com"> 
119<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 
120
121<link rel="preload" href="https://fonts.googleapis.com/icon?family=Material+Icons|Material+Icons+Outlined" as="style" onload="this.onload=null;this.rel='stylesheet'">
122<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons|Material+Icons+Outlined" ></noscript>
123
124<link rel="preload" href="https://d502jbuhuh9wk.cloudfront.net/resources/css/intlTelInput.css?v=1" as="style" onload="this.onload=null;this.rel='stylesheet'">
125<noscript><link rel="stylesheet" href="https://d502jbuhuh9wk.cloudfront.net/resources/css/intlTelInput.css?v=1" ></noscript>
126
127<link rel="preload" href="https://d502jbuhuh9wk.cloudfront.net/fontawesome/css/all.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
128<noscript><link rel="stylesheet" href="https://d502jbuhuh9wk.cloudfront.net/fontawesome/css/all.min.css" ></noscript>
129
130<link id="theme-exp" href="https://d502jbuhuh9wk.cloudfront.net/resources/themes/default/spectre-exp.min.css" rel="stylesheet">
131
132
133
134	
135	<link href="https://d502jbuhuh9wk.cloudfront.net/staticfiles/resources/stylesheets/sstyles_0f8f8346b730ed7f9d44d25335e652c6.css" rel="stylesheet">
136	<link rel="stylesheet" href="https://d502jbuhuh9wk.cloudfront.net/staticfiles/resources/stylesheets/sstore_052a28d8fc16dab749345a09dfcd63bf.css"/>
137	
138	<link rel="stylesheet" href="https://d502jbuhuh9wk.cloudfront.net/resources/stylesheets/gtheme3.css?v=7"/>
139	
140	<style type="text/css">
141		#loginLoader{
142			position: absolute;
143	    	left: 0;
144	    	right: 0;
145	    	margin-left: auto;
146	    	margin-right: auto;
147	    	width: 100px;
148	    	top: 50%;
149		}
150	    .customSocialBtn {
151	      	display: flex; 
152	    	white-space: nowrap;
153	    	justify-content: center;
154	    	align-items: center;
155	    	padding: 11px 67px;
156	    	position: static;
157	    	left: 0px;
158	    	top: 40px;
159	    	cursor: pointer;
160	    	margin: auto;
161	    	border: none;
162	    	gap: 10px;
163	    	/*width: 364px;
164	    	height: 48px;
165	      	 background: #000000; */
166	    	/*For New Button Remove Bellow Codes and Uncomment upper Code  */
167	    	background: white;
168	      	border-radius: 4px;
169	      	box-shadow: 0 2px 4px 0 rgb(0 0 0 / 25%);
170	      	width: 245px;
171	      	height: 40px;
172	    }
173	  
174	    .customSocialBtn img.icon {     
175	    	height: 20px;
176	    	width: 20px;
177	    }
178	    .customSocialBtn span.buttonText {
179	    	font-style: normal;
180	    	font-weight: 900;
181	    	font-size: 16px;
182	    	line-height: 120%;
183			opacity: 0.9;
184	    	font-family: 'Roboto', sans-serif;
185	    	/* color: #F7F7F7; */
186	    	/*For New Button Remove Bellow Codes and Uncomment upper Code  */
187	    	color: #808080;
188	    }
189	</style>
190	
191	
192		
193		
194		 
195			<style type="text/css">
196				
197			</style>
198		
199	
200	
201		
202		
203			<style type="text/css">
204				footer a, footer+div a {
205					color: var(--footerTextColor) !important;
206				}
207				footer .socialIcons {text-align: right;}
208				@media (max-width: 600px) {
209					footer .linksCont a { display: block !important; }
210					footer .socialIcons {text-align: center;margin-top: 20px;}
211				}
212			</style>
213		
214	
215
216
217
218
219
220<style type="text/css">
221	:root {
222	 	--themeColor: #5755d9;
223	 	--themeBGColor: #fff;
224		--headerHeight: 80px;
225		--headerTextColor: #0a0959;
226		--headerBGColor: #fdfbfb;
227		--footerTextColor: #FAF0F0;
228	}
229
230
231	:root {
232	 	--themeColor: #317AE7;
233	 	--themeBGColor: #EFF5FE;
234	 	--themeCornerRadius: 25px;
235	 	--themeGrayColor: #F5F5F5;
236	 }
237
238</style>
239
240<style type="text/css">
241	
242    
243
244</style>
245
246
247
248
249<script type="text/javascript">
250	window.onload = function(event) {
251	   document.querySelectorAll('header .avatar img').forEach(function(img){
252		   	if(img.naturalWidth == 0) {
253		   		img.style.display='none';
254		   	}
255	   })
256	};
257	var RESCDN = "https://d502jbuhuh9wk.cloudfront.net";
258	
259	function showCourseDefaultCover(img, cid) {
260		var rndm = ((parseInt(cid.replace(/[a-z]/g, '')) % 10) % 6) + 1;
261		rndm = isNaN(rndm) ? 1 : rndm;
262		if(img === null) {
263			return RESCDN + "/resources/images/cc"+rndm+".jpg";
264		}
265		
266		img.src = RESCDN + "/resources/images/cc"+rndm+".jpg";
267	}
268</script>
268
269
270
271
272	
273	
274
275
276
277
278
279
280
281<script type="text/javascript">var learnerConsentMsg = `We've updated our <a href='/termsofuse' target='_blank' style='text-decoration:underline'>terms and conditions</a> and <a href='/privacy-policy' target='_blank' style='text-decoration:underline'>privacy policy</a>.<br>By proceeding, you agree to our new terms.`;</script>
281
282
283<script type="text/javascript">var creatorConsentMsg = `We've updated our <a href='https://graphy.com/legal/terms' target='_blank' style='text-decoration:underline'>terms and conditions</a> and <a href='https://graphy.com/legal/privacy' target='_blank' style='text-decoration:underline'>privacy policy</a>.<br>By proceeding, you agree to our new terms.`;</script>
283
284
285<script type="text/javascript">var cookieMsg = `We use cookies to personalise your experience and to analyse our website traffic. By continuing to use our website, you consent to our cookies.`;</script>
285
286
287
288
289
290
291
292<script type="text/template" id="consentPromptTemplate">
293<div class="spectre">
294	<div class="modal active" id="consentPrompt">
295		    <a href="javascript:void(0);" class="modal-overlay" aria-label="Close"></a>
296		    <div class="modal-container" style="max-width:325px">
297		      <div class="modal-header" style="padding:0.8rem 0.8rem 0px 0.8rem;">
298		        <div class="modal-title h5 text-center">Updated Terms</div>
299		      </div>
300		      <div class="modal-body">
301		        
302				<form id="consentForm" style="text-align:center; font-size:13px">
303					<div class="content"></div><br>
304					<div class="text-center">
305						<button id="consentBtn" type="button" class="btn close btn-primary">I Agree</button>
306					</div>
307				</form>
308
309		    </div>
310		  </div>
311</div>
312</script>
312
313
314
315<script>
316	var hideCookiePopup = false;
317	var cookieConsentEnabled = true;
318	if(!cookieConsentEnabled){
319		hideCookiePopup = true;
320	}
321	var SPORG = {subscriptionPlan: "launch", checkout_version: "2", customer_type: "r"};
322</script>
vendor: 1 bytes, line 322
322
323<script type="text/template" id="cookiePopupTemplate">
324<div class="spectre" style="position: fixed; bottom: 0; width: 100%; opacity:1; z-index: 9999;">
325		<div class="modal-container p-0" id="cookiePopup">        
326			<form id="cookiePopupForm">
327				<div class="columns" style="align-items: center;">
328					<div class="column col-sm-12 content text-center"></div>
329					<div class="column col-sm-12 text-center">
330						<a href="/privacy-policy" class="btn" target="_blank" id="viewPrivacyPolicyBtn" style="margin-right:15px;">View privacy policy</a>
331						<button id="acceptCookiesBtn" type="button" class="btn close btn-primary">Accept cookies</button>
332					</div>
333				</div>
334			</form>
335		</div>
336</div>
337</script>
337
338
339
340
341	
342		
343		
344			
345		
346	
347
348
349
350
351
352<!-- Google tag (gtag.js) -->
vendor: 64 bytes, lines 352-353
352
353<script async src="https://www.googletagmanager.com/gtag/js?id=
353G-F3JG413BC3
vendor: 12 bytes, line 353
353"></script>
354<script>
355 
vendor: 131 bytes, lines 355-359
355window.dataLayer = window.dataLayer || [];
356 function gtag(){dataLayer.push(arguments);}
357 gtag('js', new Date());
358
359 gtag('config', '
359G-F3JG413BC3
vendor: 4 bytes, line 359
359');
360</script>
360
361
362
363
364
365
366
367
368	
369
370
371<!-- Google Tag Manager -->
372<script>
vendor: 327 bytes, lines 372-376
372(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
373new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
374j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
375'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
376})(window,document,'script','dataLayer','
376GTM-KW7N9P2
vendor: 4 bytes, line 376
376');
377</script>
377
378<!-- End Google Tag Manager -->
379 
380 	
380<script defer type="text/javascript" src="https://api.pirsch.io/pirsch-extended.js" 
381    id="pirschextendedjs" 
382    data-code="yC7RsVPamLZfZxOoirzOBh118RYP87Mw"></script>
382
383 
384	
385	
386
387
388
389
390
391
392
393
394	
395	
396
397		
398		
399		
400		
401			
402		
403
404		
405			
406			
407			
408		
409
410		
411		
412
413	
414
415
416
417
418<meta property="og:url"
419	content="https://learn.excelsirji.com/courses/Learn-Excel-from-Basics-to-AI--FREE-696cecf361729d185b1c7649" />
420<meta property="og:type" content="product" />
421<meta property="og:title" content="Learn Excel from Basics to AI — FREE" />
422
423	<meta property="og:image"
424		content="https://learn.excelsirji.com/s/store/courses/696cecf361729d185b1c7649/cover.jpg?v=1" />
425
426
427
428	<meta name="description"
429		content="Learn Excel from basics to AI in this free 5-day Excel course. Perfect for beginners, students, and professionals. No prior experience needed." />
430
431
432
433	
434		<meta name="keywords"
435			content="free excel course,excel course for beginners,excel basics course,excel training online,excel online course,excel course free,learn excel online,excel classes online,excel certification course,excel course in india" />
436	
437	
438
439
440
441	
442		<title>Learn Excel from Basics to AI — FREE</title>
443	
444	
445
446
447<style type="text/css">
448	.courseContents.table td {
449		border-bottom: none;
450		padding: .3rem .2rem;
451	}
452	
453	.courseItemIcon {
454		padding: 6px;
455		border-radius: 50%;
456	}
457	
458	.restrictHide {
459		display: none !important;
460	}
461	
462	@media ( max-width : 640px) {
463		.whatsapp-widget-container {
464			display: none;
465		}
466	}
467</style>
468
469
470
471
472
473
474
475
476
477
478
479<script type="application/ld+json">
480    {
481      "@context": "http://schema.org/",
482      "@type": "Product",
483      "sku": "696cecf361729d185b1c7649",
484      "image": [
485        "https://d502jbuhuh9wk.cloudfront.net/courses/696cecf361729d185b1c7649/696cecf361729d185b1c7649_scaled_cover.jpg?v=1"
486      ],
487      "name": "Learn Excel from Basics to AI — FREE",
488      "description": "Learn Excel from basics to AI in this free 5-day Excel course. Perfect for beginners, students, and professionals. No prior experience needed.",
489      "brand": {
490        "@type": "Brand",
491        "name": "EXCELSIRJI"
492      },
493		"category": "Software & Technology",
494      "offers": {
495        "@type": "Offer",
496        "url": "https://learn.excelsirji.com/courses/Learn-Excel-from-Basics-to-AI--FREE-696cecf361729d185b1c7649",
497        "price": "0",
498        "priceCurrency": "USD",
499		"availability": "https://schema.org/InStock"
500      }
501
502      }
503
504    </script>
vendor: 1 bytes, line 504
504
505<script>
506    var contentTitle = "Learn Excel from Basics to AI — FREE";
507    var checkoutRedirectGuestUsers = 'signup';
508</script>
508
509
510
511
512</head>
513<body class="contentDescBody theme3">
514	
515		
516		
517			
518
519
520
521<div class="header spectre "
522	style="background-color: #fdfbfb;">
523	
524	<header class="navbar container" style="min-height: 80px;">
525		  
526		  <div id="navbar-section-btn">
527		  	
528				<a href="javascript:void(0);" amplitude-event="navbar_link_tapped_user_landing_page" amplitude-payload='{"custom_domain": "learn.excelsirji.com","button":"cart"}' class="nav-link badge cartBtn mr-2" data-badge="0"><i class="material-icons">shopping_cart</i></a>
529			
530		  	<a class="btn btn-link btn-action ml-2" id="header-collapse-btn"  href="javascript:void(0);">
531				<i class="icon-menu material-icons">menu</i>
532		  	</a>
533		  </div>
534		  <section class="navbar-section" style="min-height: 80px;">
535		    <a href="/" amplitude-event="navbar_link_tapped_user_landing_page" amplitude-payload='{"custom_domain": "learn.excelsirji.com","button":"profile_logo"}'><img alt="logo" onerror="this.src='https://d502jbuhuh9wk.cloudfront.net/resources/images/yourlogohere.jpg'" src='https://d502jbuhuh9wk.cloudfront.net/logos/696502429e49c234f6d30d1e.png?v=1'/></a>
536		  </section>
537		  
538			  <section class="navbar-section hide-md">
539			  	<form class="input-group p-0 relative" action="/s/store/courses" method="GET" style="width:100%;background:transparent">
540			  		<div class="input-group" style="width: 100%;">
541						<input type="text" name="query" value="" class="form-input input-lg searchTxtBox" placeholder="Search">
542						<button type="submit" class="btn btn-link"><i class="fa-regular fa-magnifying-glass"></i></button>
543					</div>
544				</form>
545			  </section>
546		  
547		  <section class="navbar-section menu-links">
548			
549			
550			
551			
552				
553					<a class="nav-link" href="https://www.excelsirji.com/excel-courses/" data-id="5arfj45sh" target='_blank'>Courses</a>
554				
555					<a class="nav-link" href="https://www.excelsirji.com/" data-id="ezf5cvhad" target='_blank'>Free Tutorials</a>
556				
557			
558			
559			
560			
561				<a href="/products#nav_bar" class="nav-link" amplitude-event="digital_products_tapped" amplitude-payload='{"source":"nav_bar"}' href="javascript:void(0);">Digital Products</a>
562			
563			
564			
565				
566				
567					
568						
569						
570							<a href="javascript:void(0);" class="nav-link badge cartBtn hide-md" data-badge="0"><i class="fa-regular fa-cart-shopping"></i></a>
571						
572					
573		    			<a href="javascript:void(0);" class="btn btn-primary loginBtn">Login</a>
574				
575			
576		  </section>
577	</header>
578	
579	
580		<form class="show-md container" action="/s/store/courses" method="GET" style="background:transparent;">
581			<div class="input-group relative" style="width: 100%;">
582				<input type="text" name="query" value="" class="form-input input-lg searchTxtBox" placeholder="Search">
583				<button type="submit" class="btn btn-link"><i class="fa-regular fa-magnifying-glass"></i></button>
584			</div>
585		</form>
586	
587</div>
588		
589	
590
591	
592
593
594
595
596<script>const customDomain = "learn.excelsirji.com";</script>
596
597
598   
599  
600
601<script>
602var disabledLocleVar='Disabled';
603var enabledLocaleVar='Enabled';
604var smsLocaleVar='SMS';
605var webpushLocaleVar='Web Push';
606var mobilepushLocaleVar='Mobile Push';
607var invoicenumberLocaleVar='Invoice Number';
608var productLocaleVar='Product';
609var dateLocaleVar='Date';
610var amountLocaleVar='Amount';
611var detailsLocaleVar='Details';
612var subscriptionPlanLocaleVar='Subscription Plan';
613var addonsLocaleVar='Add Ons';
614var showLocalVar='Show';
615var hideLocaleVar='Hide';
616</script>
616 
617<div class="spectre">
618
619	
620	
621		
622		
623		
624			
625				
625<script>
626					var isPopupLogin = true;
627					var login = '';
628					var message = '';
629					function closeLoginPopup() {
630						$("#loginFormHtml").removeClass("active");
631						$("body").removeClass("overflowYDisable");
632					}
633				</script>
633
634				
635				
636				
637					
638				
639
640				<div class="modal" id="loginFormHtml">
641					<iframe id="microfe-popup-login" src="/t/public/login" loading="lazy"
642						style="width: calc(100% + 10px); height: 100vh; border: none;"
643						onload="$(this).parent().removeClass('loading');"></iframe>
644				</div>
645			
646		
647	 
648	
649
650	<div class="modal" id="cartHtml">
651		<a href="javascript:void(0);" class="modal-overlay close"
652			aria-label="Close"></a>
653		<div class="modal-container" style="max-width: 800px;">
654			<div class="modal-header">
655				<a href="javascript:void(0);"
656					class="close btn btn-clear float-right" aria-label="Close"></a>
657				<div class="modal-title h5">
658					<i class="fa-regular fa-shopping-cart"></i>
659					Cart
660					(<span class="cartCount">0</span>
661					Items
662					)
663				</div>
664			</div>
665			<div class="modal-body" style="max-height: 70vh;">
666				<div class="content">
667
668					<div class="text-center msg loading"></div>
669					<div class="text-center msg noItems" style="display: none;">
670						There are no items in your cart<br/>
671						<a class="btn btn-primary" href="/s/store"
672							style="margin: 20px auto;">
673							Add More
674						</a>
675					</div>
676					<div class="items msg" style="display: none;">
677						<div class="m-0 cartDiv">
678							<table class="table cartTable">
679								<thead>
680									<tr>
681										<th colspan="2">Item Details</th>
682										<th class="text-right">Price</th>
683										<th style="width: 50px;"></th>
684									</tr>
685								</thead>
686								<tbody></tbody>
687							</table>
688						</div>
689						<div class="suggestCart mt-2 bg-gray p-2" style="display: none;">
690							<h6>You may also be interested in</h6>
691							<div class="columns loading" id="cartRelatedCont"></div>
692						</div>
693					</div>
694				</div>
695			</div>
696			<div class="modal-footer">
697				<div class="msg items clearfix">
698					
699						
700						
701							<div class="float-left text-gray">
702								Note: Promo Codes can be applied after checkout
703							</div>
704						
705						
706					
707					<div class="float-right">
708						Total Amount
709						<span class="text-primary curr">$<span
710							class="totalAmount">0</span></span>
711					</div>
712				</div>
713				<div class="msg items clearfix mt-2">
714					<a class="btn float-left" href="/s/store" amplitude-event="add_more_course_checkout">
715						Add More
716					</a>
717					
718					
719						
720							
721						
722						
723					
724					<a class="btn btn-primary float-right" href="/s/checkout" amplitude-event="checkout_tapped_course_checkout" amplitude-payload='{"currency": "USD" }'>Checkout</a>
725				</div>
726			</div>
727		</div>
728	</div>
729	<div class="modal" id="newCheckoutHtml" style="padding: 0; z-index: 10000;">
730	<div id="newCheckoutLoader" class="loading loading-lg" style="position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);width: 100%;height: 100%;background-color: rgba(0, 0, 0, 0.5); z-index: 1000;display:none;"></div>
731		<!-- <a href="javascript:void(0);" class="modal-overlay close"
732			aria-label="Close"></a>
733		<div class="modal-container" style=""> -->
734		
735
736			<iframe onload="hideCheckoutLoader()" id="newCheckoutIframe" sandbox="allow-top-navigation allow-modals allow-popups allow-presentation allow-orientation-lock allow-pointer-lock allow-popups-to-escape-sandbox allow-top-navigation-by-user-activation allow-scripts allow-same-origin allow-forms" style = "width: calc(100% + 10px); height: 100%; border: none;"  src=""></iframe>
737				
738		<!-- </div> -->
739	</div>
740</div>
741
742<script type="text/template" id="cartItemTemplate">
743		<tr data-id="<@- item.id @>" data-type="<@- item.type @>" data-title="<@- item.title @>" data-price="<@- item.price @>" data-coursecategory="<@- item.courseCategory @>">
744			<@ var itemType = item.type; @>
745			<td style="width:150px;">	
746				<@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item.id +"/"+ item.id +"_scaled_cover.jpg?v=" + coverVersion; if(isNaN(coverVersion)) { curl = showCourseDefaultCover(null, item.id)   } @>
747				<img alt="<@- item.title @> cover" style="width:100%;max-height:100px;" class="img-fit-contain lazy"  onerror="showCourseDefaultCover(this, '<@- item.id @>')" 
748						data-src='<@- curl @>' />
749			</td>
750			<td class="itemTitle"><@- item.title @><@ if(item.description !== undefined) { @><div class='text-gray variantDescription'><@ print(item.description) @></div><@ } @></td>
751			<td class="text-right curr"><@ if(item.priceWithoutTax !== undefined && '' != '') { @><@ print(getDisplayAmount(item.priceWithoutTax)) @><br><small><@ print(getDisplayAmount(item.price)) @> incl. <@- item.gstRate @>% </small><@ } else { @><@ print(getDisplayAmount(item.price)) @> <@ if(item.gstRate > 0 && '' != '') { print("<br><small>incl. " +item.gstRate+"% </small>") } @><@ } @> 				
752			<@ if(item.pgChargesLearnerPercent !==undefined && getDisplayAmount(item.pgChargesLearnerPercent).includes('₹')) {@> <br><small>Internet handling fees: <@print(getDisplayAmount(item.pgChargesLearnerPercent/100*item.price))@></small> <@} @>
753			</td>
754			<td>
754<button class="btn btn-sm btn-error btn-action circle removeItemBtn" data-url="/s/cart/remove/<@- item.id @>"><i class="material-icons">clear</i></button></td>
755		</tr>
756	</script>
vendor: 1 bytes, line 756
756
757<script type="text/template" id="cartcoursecard-template">
758		<div class="column col-2 col-md-4 scourse <@- item['spayee:resource']['spayee:courseType'] @>" title="<@- item["spayee:resource"]["spayee:title"] @>">
759			  <a class="card" title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>">
760				<@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item["spayee:resource"]["spayee:coverVersion"]; if(isNaN(item["spayee:resource"]["spayee:coverVersion"])) { curl = showCourseDefaultCover(null, item._id)   } @>
761		              <img style="width: 100%;" alt="<@- item['spayee:resource']['spayee:title'] @> cover" class="lazy" data-src="<@- curl  @>" onerror="showCourseDefaultCover(this, '<@- item._id @>')">
762					  <div class="card-footer" style="padding: 0.2rem;"><span class="ctitle text-ellipsis d-block" style="color:#2f4f4f;font-size:small;"><@- item["spayee:resource"]["spayee:title"] @></span></div>
763		      </a>
764		</div>
765	</script>
vendor: 1 bytes, line 765
765
766<script type="text/template" id="coursecard-template">
767		<div class="column scourse <@- item['spayee:resource']['spayee:courseType'] @> hidePackageRibbon<@- item['spayee:resource']['spayee:hidePackageRibbon'] @>">
768					
769					
770					
771					<@ var itemCategory =  (item['spayee:resource']['spayee:filter1'] !== undefined)? item['spayee:resource']['spayee:filter1'][0]:'' @>
772
773					<a class="card courseDiscId" style="height:100%" title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" data-id="<@- item._id@>" data-dcid="<@-item._id@>"
774						amplitude-event="course_card_tapped_checkout"
775						amplitude-payload='{"<@-  item['spayee:resource']['spayee:courseType']== 'package' ? "package_id" : "course_id" @>": "<@- item._id @>","is_a_package":"<@-  item['spayee:resource']['spayee:courseType']== 'package' ? "true" : "false" @>","price_on_card":"<@- removeCurrencySymbol(getCourseDisplayPrice('$', '', item, '0.0', '', false)) @>","currency":"USD","multiple_pricing_plans_exist":"<@- isMultiplePlansAvailable('', item) @>","wallet_coins_enabled_on_school":"false","category":"<@- itemCategory @>"}'
776					>
777					
778						
779					
780		              <div class="card-image relative <@ print(item["spayee:resource"]["spayee:availableForMembership"] ? 'includedInMembership' : '') @>">
781						<@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id + "/" + item._id +"_scaled_cover.jpg?v=" + item["spayee:resource"]["spayee:coverVersion"]; if(isNaN(item["spayee:resource"]["spayee:coverVersion"])) { curl = showCourseDefaultCover(null, item._id);   } @>
782						<div class="blurbg lazy" data-bg="<@- curl @>"></div>
783		                <img alt="<@- item['spayee:resource']['spayee:title'] @> cover" class="lazy" data-src="<@- curl @>" onerror="showCourseDefaultCover(this, '<@- item._id @>')">
784		              </div>
785		              <div class="card-body text-ellipsis">
786							<span class="ctitle" style="color:#2f4f4f;text-wrap: balance;overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 2;"><@- item["spayee:resource"]["spayee:title"] @></span><br>
787
788							<@ if(item.rating !== undefined) { @>
789								<span class="text-gray ratingIcons icon-text">
790								<@ for(var i=1;i<6;i++) { @>
791									<@ if(item.rating.avgRating >= i) { @><i class="material-icons text-primary">star</i><@ }else if(item.rating.avgRating > i-1 && item.rating.avgRating < i) { @><i class="material-icons text-primary">star_half</i><@ }else { @>
792									<i class="material-icons">star_border</i>								
793								<@ } } @></span><small class="d-inline-block pl-1 text-dark"><@ print(formatRating(item['rating']['avgRating'])) @> (<@- item['rating']['total'] @> ratings)</small>
794							<@ }else { @> <span class="text-gray ratingIcons icon-text">&nbsp;</span> <@ } @>
795							<br>
796							<span class="text-gray">
797								<@ if(item['spayee:resource']['spayee:courseType'] === 'package') { @>
798									<@ print(item["courses-count"]!==undefined?item["courses-count"]:"0") @> Courses
799								<@ }else { @>
800									<@ print(item["spayee:resource"]["spayee:publisher"]!==undefined?htmlEntities(item["spayee:resource"]["spayee:publisher"]):"&nbsp;") @>
801								<@ } @>
802							</span>
803					  </div>
804		              <div class="card-footer">
805						<@ print(getCourseDisplayPrice('$', '', item, '0.0', '', true)) @>
806						<span class="text-gray" style="font-size:small">
807							<@ if(item['spayee:resource']['spayee:instalmentPlanId']!=null && item['spayee:resource']['spayee:instalmentPlanId'] !== "") { @>
808								<@ print(getCourseInstalmentDisplayPrice('', item))@>
809								<@ }else { @>
810								<@ "&nbsp;" @>
811							<@ } @>
812						</span>
813		              </div>
814					<div style="padding: 0 0.8rem 0.8rem 0.8rem;">
815						<span class="text-gray" style="font-size:small">
816							<@ if(getMultiplePlanLabel('', item)>1) {@>
817							<i class="material-icons text-primary" style="font-size:small">discount</i>
818							<@ print(' Flexible pricing plans') } @>
819						</span>
820					</div>
821		            </a>
822		</div>
823	</script>
823
824
825<script type="text/template" id="blogcard-template">
826		<div class="column col-3 col-md-6 col-sm-6 col-xs-12 scourse" style="margin-bottom: 20px;">
827					<a class="card" title="<@- item['spayee:resource']['spayee:title'] @>" href="/blog/<@- item['spayee:resource']['spayee:url'] @>">
828		              <div class="card-image relative">
829						<@ if(item['spayee:resource']['spayee:cover'] !== undefined && item['spayee:resource']['spayee:cover']) { @>
830							<div class="blurbg lazy" data-bg="https://d502jbuhuh9wk.cloudfront.net/articles/<@- item._id @>/cover.jpg<@ print(item["spayee:resource"]["spayee:coverVersion"] !== undefined?"?v="+item["spayee:resource"]["spayee:coverVersion"]:"") @>"></div>
831							<img alt="<@- item['spayee:resource']['spayee:title'] @> cover" class="img-responsive centered relative lazy" style="max-height: 100%;" data-src="https://d502jbuhuh9wk.cloudfront.net/articles/<@- item._id @>/cover.jpg?v=<@- item['spayee:resource']['spayee:coverVersion'] @>" onerror="showCourseDefaultCover(this, '<@- item._id @>')">
832						<@ }else { @>
833							<div class="blurbg lazy" data-bg="https://d502jbuhuh9wk.cloudfront.net/resources/images/defaultCourseCover.png"></div>
834							<img alt="<@- item['spayee:resource']['spayee:title'] @> cover" class="img-responsive centered relative lazy" style="max-height: 100%;" data-src='https://d502jbuhuh9wk.cloudfront.net/resources/images/defaultCourseCover.png'>
835						<@ } @>
836		              </div>
837		              <div class="card-body text-ellipsis"><span style="color:#2f4f4f;"><@- item["spayee:resource"]["spayee:title"] @></span></div>
838		              <div class="card-footer" style="padding: 0.4rem;">
839						<span class="text-gray float-left text-ellipsis" style="max-width: calc(100% - 110px);"><@ print(item["spayee:resource"]["spayee:author"]!==undefined?htmlEntities(item["spayee:resource"]["spayee:author"]):"") @></span>
840						<@ var pdate = item.createdDate.$date; if(item['spayee:resource']['spayee:publishDate'] !== undefined && item['spayee:resource']['spayee:publishDate'] !== '') { pdate = item['spayee:resource']['spayee:publishDate']; } @>
841						<time class="float-right text-warning"><@ print(formatDate(new Date(pdate))) @></time>
842		              </div>
843		            </a>
844		</div>
845	</script>
845
846	
847	
847<script type="text/javascript">
848	  var uuid = function (a) {
849		  // https://github.com/amplitude/Amplitude-Javascript/blob/master/src/uuid.js
850		  return a // if the placeholder was passed, return
851		    ? // a random number from 0 to 15
852		      (
853		        a ^ // unless b is 8,
854		        ((Math.random() * // in which case
855		          16) >> // a random number from
856		          (a / 4))
857		      ) // 8 to 11
858		        .toString(16) // in hexadecimal
859		    : // or otherwise a concatenated string:
860		      (
861		        [1e7] + // 10000000 +
862		        -1e3 + // -1000 +
863		        -4e3 + // -4000 +
864		        -8e3 + // -80000000 +
865		        -1e11
866		      ) // -100000000000,
867		        .replace(
868		          // replacing
869		          /[018]/g, // zeroes, ones, and eights with
870		          uuid, // random hex digits
871		        );
872	  };
873		
874	  (function(e,t){var n=e.amplitude||{_q:[],_iq:{}};var r=t.createElement("script")
875	  ;r.type="text/javascript"
876	  ;r.integrity="sha384-tzcaaCH5+KXD4sGaDozev6oElQhsVfbJvdi3//c2YvbY02LrNlbpGdt3Wq4rWonS"
877	  ;r.crossOrigin="anonymous";r.async=true
878	  ;r.src="https://cdn.amplitude.com/libs/amplitude-8.5.0-min.gz.js"
879	  ;r.onload=function(){if(!e.amplitude.runQueuedFunctions){
880	  console.log("[Amplitude] Error: could not load SDK")}}
881	  ;var i=t.getElementsByTagName("script")[0];i.parentNode.insertBefore(r,i)
882	  ;function s(e,t){e.prototype[t]=function(){
883	  this._q.push([t].concat(Array.prototype.slice.call(arguments,0)));return this}}
884	  var o=function(){this._q=[];return this}
885	  ;var a=["add","append","clearAll","prepend","set","setOnce","unset","preInsert","postInsert","remove"]
886	  ;for(var c=0;c<a.length;c++){s(o,a[c])}n.Identify=o;var u=function(){this._q=[]
887	  ;return this}
888	  ;var l=["setProductId","setQuantity","setPrice","setRevenueType","setEventProperties"]
889	  ;for(var p=0;p<l.length;p++){s(u,l[p])}n.Revenue=u
890	  ;var d=["init","logEvent","logRevenue","setUserId","setUserProperties","setOptOut","setVersionName","setDomain","setDeviceId","enableTracking","setGlobalUserProperties","identify","clearUserProperties","setGroup","logRevenueV2","regenerateDeviceId","groupIdentify","onInit","logEventWithTimestamp","logEventWithGroups","setSessionId","resetSessionId"]
891	  ;function v(e){function t(t){e[t]=function(){
892	  e._q.push([t].concat(Array.prototype.slice.call(arguments,0)))}}
893	  for(var n=0;n<d.length;n++){t(d[n])}}v(n);n.getInstance=function(e){
894	  e=(!e||e.length===0?"$default_instance":e).toLowerCase()
895	  ;if(!Object.prototype.hasOwnProperty.call(n._iq,e)){n._iq[e]={_q:[]};v(n._iq[e])
896	  }return n._iq[e]};e.amplitude=n})(window,document);
897	
898	  amplitude.getInstance().init('e56929a4c3888c23e97a7e70e34ccf6c');
899	  amplitude.getInstance().setUserId(null);
900	  //amplitude.getInstance().regenerateDeviceId();
901
902    var userProperties = {
903			custom_domain: "learn.excelsirji.com",
904			org_id: "696502429e49c234f6d30d1e",
905			default_google_login_enabled: 'true' == 'true',
906			personalized_google_login_enabled: '' != '' && 'true' == 'false' ? true : false,
907			facebook_login_enabled: '' == 'true' ? true : false
908	  };
909	  amplitude.getInstance().setUserProperties(userProperties);
910    
911/*     var deviceId = uuid();
912	  amplitude.getInstance().setDeviceId(deviceId);
913	  sessionStorage.setItem('amplitudeDeviceId', deviceId); */
914	</script>
914
915	
916	
916<script type="text/javascript">
917		window.signupParams = {source: "store", platform: "web", sourceId: null};
918		var showGraphyFomoFlag = '';
919		
920	</script>
920
921
922	
922<script type="text/javascript">
923		function hideCheckoutLoader() {
924			if(typeof window.hideLoader =="function") {
925				window.hideLoader();
926			}
927		}
928		var checkoutRedirectGuestUsers = 'signup';
929	</script>
929
930
931
932
933
934
935
936<script type="text/template" id="spcoursecard-2-template">
937		<div class="column third">
938			<@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @>
939			<a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>"  amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' style="text-decoration: none;">
940			<@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id);   } @>
941			<img class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')">
942			<h4 class="size-21 text-ellipsis" style="text-wrap: balance;overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 1;"><@- item['spayee:resource']['spayee:title'] @></h4>
943			<p class="size-16"><@ if(item.rating !== undefined) { @>
944								<span class="text-gray ratingIcons icon-text">
945								<@ for(var i=1;i<6;i++) { @>
946									<@ if(item.rating.avgRating >= i) { @><i class="material-icons text-primary">star</i><@ }else if(item.rating.avgRating > i-1 && item.rating.avgRating < i) { @><i class="material-icons text-primary">star_half</i><@ }else { @>
947									<i class="material-icons">star_border</i>								
948								<@ } } @></span><span><@ print(formatRating(item['rating']['avgRating'])) @> (<@- item['rating']['total'] @> ratings)</span>
949			<@ }else { @> <span class="text-gray ratingIcons icon-text">&nbsp;</span> <@ } @></p>
950			<p class="size-16 text-ellipsis"><@ if(item['spayee:resource']['spayee:courseType'] === 'package') { @><@ print(item["courses-count"]!==undefined?item["courses-count"]:"0") @> Courses<@ }else { @>
951				<@ print(item["spayee:resource"]["spayee:publisher"]!==undefined?item["spayee:resource"]["spayee:publisher"]:"&nbsp;") @><@ } @></p>
952			
953			<p class="size-18"><span style="color: rgb(21, 101, 192);"><@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', true)) @></span><br></p>
954			<div style="margin:1em 0"></div>
955			</a>
956		</div>
957	</script>
vendor: 1 bytes, line 957
957
958<script type="text/template" id="spcoursecard-1-template">
959		<div class="column third">
960			<@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @>
961			<a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>"  amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' style="text-decoration: none;">
962			<@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id);   } @>
963			<img class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover"  onerror="showCourseDefaultCover(this, '<@- item._id @>')">
964			<h4 class="size-21 text-ellipsis" style="text-wrap: balance;overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 1;"><@- item['spayee:resource']['spayee:title'] @></h4>
965			<div class="size-16 text-ellipsis" style="max-height: 3rem;"><@ print(item['spayee:resource']['spayee:shortDescription']!==undefined?item['spayee:resource']['spayee:shortDescription']:"") @></div>
966
967			<p class="size-18"><span style="color: rgb(21, 101, 192);"><@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', true)) @></span><br></p>
968			<div style="margin:1em 0"></div>
969			</a>
970		</div>
971	</script>
vendor: 1 bytes, line 971
971
972<script type="text/template" id="spcoursecard-3-template">
973		<div class="column third">
974			<@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @>
975			<a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>"  amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' style="text-decoration: none;">
976			<@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id);   } @>
977			<img class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover"  onerror="showCourseDefaultCover(this, '<@- item._id @>')">
978			<h4 class="size-21 text-ellipsis" style="text-wrap: balance;overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 1;"><@- item['spayee:resource']['spayee:title'] @></h4>
979			<div class="size-16 text-ellipsis" style="max-height: 3rem;"><@ print(item['spayee:resource']['spayee:shortDescription']!==undefined?item['spayee:resource']['spayee:shortDescription']:"") @></div>
980			<p class="size-16 text-ellipsis"><@ if(item['spayee:resource']['spayee:courseType'] === 'package') { @><@ print(item["courses-count"]!==undefined?item["courses-count"]:"0") @> Courses<@ }else { @>
981				<@ print(item["spayee:resource"]["spayee:publisher"]!==undefined?item["spayee:resource"]["spayee:publisher"]:"&nbsp;") @><@ } @></p>
982			<p class="size-18"><span style="color: rgb(21, 101, 192);"><@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', true)) @></span><br></p>
983			<div style="margin:1em 0"></div>
984			</a>
985		</div>
986	</script>
986
987	
988<script type="text/template" id="spcoursecard-4-template">
989		<div class="column third text-center" style="padding-left: 1rem; padding-right: 1rem; margin-bottom: 0px;">
990			<@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id);   } @>
991			<@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @>
992			<a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>"  amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' style="text-decoration: none;">
993			<img class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover"  onerror="showCourseDefaultCover(this, '<@- item._id @>')">
994			</a>
995			<h3 class="size-18 text-center" style="text-wrap: balance;overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 1;"><b class="text-primary"><@- item['spayee:resource']['spayee:title'] @></b></h3>
996			<div class="discription"><@ print(item['spayee:resource']['spayee:shortDescription']!==undefined?item['spayee:resource']['spayee:shortDescription']:"") @></div>
997			<p class="size-18 price text-primary"><@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', true)) @></p>
998			<a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" class="buy-btn btn btn-primary" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}'>Buy now<br></a>
999		</div>
1000	</script>
1000	
1001<script type="text/template" id="spcoursecard-5-template">
1002		<div class="column third" style="padding-left: 1rem; padding-right: 1rem; margin-bottom: 0px;">
1003			<@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id);   } @>
1004			<@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @>			
1005			<a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>"  amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' style="text-decoration: none;">
1006			<img class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover"  onerror="showCourseDefaultCover(this, '<@- item._id @>')">
1007			</a>
1008			<h3 class="sub-heading"><b class="size-18 text-primary"><@- item['spayee:resource']['spayee:title'] @></b></h4>
1009			<p class="size-16 description text-primary"> <@ if(item['spayee:resource']['spayee:courseType'] === 'package') { @><@ print(item["courses-count"]!==undefined?item["courses-count"]:"0") @> Courses<@ }else { @>
1010				Instructor : <@ print(item["spayee:resource"]["spayee:publisher"]!==undefined?item["spayee:resource"]["spayee:publisher"]:"&nbsp;") @><@ } @></p>
1011			<@if(item.rating){@>
1012				<p class="size-16 description text-primary">Rating: &nbsp;
1013 					<@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@>
1014						<@if(item.rating){@> 
1015							<@if(item.rating.avgRating){@> 
1016								<@ if(item.rating.avgRating >= ratingsSize) {@> 
1017									<i class="icon ion-android-star text-primary"></i>&nbsp; 
1018								<@ } else if(item.rating.avgRating > ratingsSize-1 && item.rating.avgRating < ratingsSize) { @> 
1019									<i class="icon ion-android-star-half text-primary"></i>&nbsp; 
1020								<@ } @>
1021							<@}@>		
1022		  				<@}@>
1023					<@}@>
1024				</p>
1025			<@}@>
1026		
1027			<p class="size-18 price text-primary">Price : <@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', true)) @></p>
1028			<a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" class="buy-btn btn btn-primary" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}'>Buy now</a>
1029		</div>
1030	</script>
1030
1031	
1032<script type="text/template" id="spcoursecard-6-template">
1033		<div class="column third">
1034			<@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id);   } @>
1035			<@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @>
1036				
1037				
1038				<@  var itemCategory =  (item['spayee:resource']['spayee:filter1'] !== undefined)? item['spayee:resource']['spayee:filter1'][0]:''@>
1039				
1040				<@ if (item['spayee:resource']['spayee:availableForMarket']==="true" ) { @> 
1041				   <a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>"  amplitude-event="course_card_tapped_checkout" amplitude-payload='{"<@-  item['spayee:resource']['spayee:courseType']== 'package' ? "package_id" : "course_id" @>": "<@- item._id @>","is_a_package":"<@-  item['spayee:resource']['spayee:courseType']== 'package' ? "true" : "false" @>","price_on_card":"<@- removeCurrencySymbol(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @>","currency":"USD","multiple_pricing_plans_exist":"<@- isMultiplePlansAvailable(sessionCountry, item) @>","wallet_coins_enabled_on_school":"<@- false @>","category":"<@- itemCategory @>"}'>
1042				<@ } else { @>
1043 				   <a title="<@- item['spayee:resource']['spayee:title'] @>" amplitude-event="course_card_tapped_checkout" amplitude-payload='{"<@-  item['spayee:resource']['spayee:courseType']== 'package' ? "package_id" : "course_id" @>": "<@- item._id @>","is_a_package":"<@-  item['spayee:resource']['spayee:courseType']== 'package' ? "true" : "false" @>","price_on_card":"<@- removeCurrencySymbol(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @>","currency":"USD","multiple_pricing_plans_exist":"<@- isMultiplePlansAvailable(sessionCountry, item) @>","wallet_coins_enabled_on_school":"<@- false @>","category":"<@- itemCategory @>"}'>  
1044                <@ } @>
1045			
1046			
1047			<img class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover"  onerror="showCourseDefaultCover(this, '<@- item._id @>')" style="border-radius: 20px; margin-bottom: 0px; width: 100%; height: 190px;object-fit:cover;">
1048			</a>
1049			<div style="font-weight: 800; line-height: 1.1; text-wrap: balance;overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 1;" class="text-ellipsis"><@- item['spayee:resource']['spayee:title'] @></div>
1050			<p class="size-16 description text-primary"><@ if(item['spayee:resource']['spayee:courseType'] === 'package') { @> Courses<@ } @></p>
1051			<p class="size-18 price text-primary"><@ if (item['spayee:resource']['spayee:availableForMarket']==="true" ) @> <@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @></p>
1052			<@ if (item.isMembershipPage != undefined && !item.isMembershipPage) { @>
1053            
1054				
1055					<@ var itemCategory =  (item['spayee:resource']['spayee:filter1'] !== undefined)? item['spayee:resource']['spayee:filter1'][0]:'' @>
1056					<@ if(isMultiplePlansAvailable(sessionCountry, item) === false) { @>
1057						<a title="<@- item['spayee:resource']['spayee:title'] @>" href="/single-checkout/<@- item['_id'] @>?pid=<@ print(getCoursePid(sessionCountry, item)) @>" class="buy-btn btn btn-primary" amplitude-event="course_buy_now_tapped_checkout" amplitude-payload='{"<@-  item['spayee:resource']['spayee:courseType']== 'package' ? "package_id" : "course_id" @>": "<@- item._id @>","is_a_package":"<@-  item['spayee:resource']['spayee:courseType']== 'package' ? "true" : "false" @>","price_on_card":"<@- removeCurrencySymbol(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @>","currency":"USD","multiple_pricing_plans_exist":"<@- isMultiplePlansAvailable(sessionCountry, item) @>","wallet_coins_enabled_on_school":"<@- false @>","category":"<@- itemCategory @>"}' style="border: none;padding: 16px 61px; font-size: 16px; letter-spacing: 0.08px; line-height: 16px; font-weight: 600; text-decoration: none; display: block; text-align: center;">
1058							Buy now
1059						</a>
1060					<@ } else { @>
1061
1062						<a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" class="buy-btn btn btn-primary" amplitude-event="course_buy_now_tapped_checkout" amplitude-payload='{"<@-  item['spayee:resource']['spayee:courseType']== 'package' ? "package_id" : "course_id" @>": "<@- item._id @>","is_a_package":"<@-  item['spayee:resource']['spayee:courseType']== 'package' ? "true" : "false" @>","price_on_card":"<@- removeCurrencySymbol(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @>","currency":"USD","multiple_pricing_plans_exist":"<@- isMultiplePlansAvailable(sessionCountry, item) @>","wallet_coins_enabled_on_school":"<@- false @>","category":"<@- itemCategory @>"}' style="border: none;padding: 16px 61px; font-size: 16px; letter-spacing: 0.08px; line-height: 16px; font-weight: 600; text-decoration: none; display: block; text-align: center;">
1063							Buy now
1064						</a>
1065					<@ } @>
1066				
1067				
1068			
1069			<@ } @>
1070		</div>
1071	</script>
1071			
1072	
1073	
1074<script type="text/template" id="spcoursecard-7-template">
1075		<div class="column third course-mob-block">
1076			<div class="inner-course-block">
1077			<@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id);   } @>
1078			<@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @>			
1079			<a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>"  amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' style="text-decoration: none;">
1080			<img class="lazy" data-style="width: 100%; height: auto;" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover"  onerror="showCourseDefaultCover(this, '<@- item._id @>')" >
1081			</a>
1082			<div class="course-price-block">
1083			<p class="text-ellipsis" title="<@- item['spayee:resource']['spayee:title'] @>" style="font-size: 18px; font-weight: 700; line-height: 1.3rem; width: 100%; margin-top: 0px; margin-bottom: 0px; min-height: 47px; text-wrap: balance;overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 1;">
1084				<@- item['spayee:resource']['spayee:title'] @>
1085			</p>
1086			<p class="text-primary" style="word-break: break-all; font-size: 14px; font-weight: 500; line-height: 1.5; margin-top: 16px; margin-bottom: 0px;">
1087					<@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @>
1088			</p>
1089			</div>
1090			<a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" class="buy-btn btn btn-primary" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' style="display: inline-block; text-decoration: none; transition: all 0.16s ease 0s; border: none; cursor: pointer; border-radius: 4px; padding: 13px 28px; line-height: 1.5; font-weight: 600; font-size: 14px; letter-spacing: 0.15px; margin-top: 28px;">
1091				Enroll now
1092			</a>
1093			</div>
1094		</div>
1095</script>
1095		
1096	
1097<script type="text/template" id="spcoursecard-8-template">
1098	 <div class="row clearfix" style="margin-bottom: 24px; margin-top: 14px;">
1099			<@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id);   } @>
1100			<@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @>
1101                    <div class="column third center" style="padding-left: 0px; padding-right: 0px;">
1102                        <img
1103                            class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover"  onerror="showCourseDefaultCover(this, '<@- item._id @>')"
1104                            style="margin-top: 0px; margin-bottom: 0px;"
1105                        />
1106                    </div>
1107                    <div class="column two-third course-block-mob" style="display: flex; flex-direction: column; justify-content: center;">
1108                        <div class="course-price-block">	
1109							<h3 style="color: rgb(255, 255, 255); font-size: 18px; font-weight: 700; line-height: 1.1; margin-bottom: 0px; margin-top: 0px; text-wrap: balance;overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 1;">
1110								<@- item['spayee:resource']['spayee:title'] @>
1111							</h3>
1112                        	<div class="sortDescription8">
1113                            	<@ print(item['spayee:resource']['spayee:shortDescription']!==undefined?item['spayee:resource']['spayee:shortDescription']:"") @>
1114                        	</div>
1115						</div>
1116
1117                        <a class="buy-btn btn btn-primary" title="<@- item['spayee:resource']['spayee:title'] @>" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" style="width: fit-content; text-align: left; display: inline-block; text-decoration: none; transition: all 0.16s ease 0s; cursor: pointer; background-color: rgb(231, 215, 73); color: rgb(0, 0, 0);border-radius: 0px;padding: 16px 48px;line-height: 16px;font-weight: 700;font-size: 16px;letter-spacing: 0.08px;border-image: initial;">
1118                            Enroll for <@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @>
1119                        </a>
1120					</div>
1121        </div>
1122	</script>
1122	
1123
1124
1125	<!-- vegas TEMPLATE 9 NEW-->
1126	
1126<script type="text/template" id="spcoursecard-9-template" >
1127    <div class="column third text-center course-card-fixed-height" style="padding-left: 1rem; padding-right: 1rem; margin-bottom: 2rem; text-align:left;">
1128        <div style="border:1px solid #D7D7D7; border-radius:24px; padding-bottom: 20px; height: 100%; display: flex; flex-direction: column;">
1129            <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @>
1130            <@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @>
1131            
1132            <a style="color:black; text-align:left;" title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}'>
1133                <img style="height:200px; width:100%; object-fit:fill; margin:0px 0px; border-top-left-radius:24px; border-top-right-radius:24px;" class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')">
1134            </a>
1135            
1136			<div style="padding:10px 20px; flex-grow: 1; display: flex; flex-direction: column;" class="course-card-content">
1137				<h3 
1138					class="size-18 text-left" 
1139					title="<@- item['spayee:resource']['spayee:title'] @>" 
1140					style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 100%; display: block; margin-bottom: 12px; color: black;"
1141				>
1142					<b style="color:black;"><@- item['spayee:resource']['spayee:title'] @></b>
1143				</h3>
1144			
1145				<div 
1146					class="size-16 text-ellipsis course-card-text" 
1147					title="<@= (item['spayee:resource']['spayee:shortDescription'] || ' ').replace(/<[^>]*>/g, '') @>" 
1148					style="max-height: 3rem; min-height: 3rem; margin-bottom: 12px; overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1;"
1149				>
1150				<@= (item['spayee:resource']['spayee:shortDescription'] || '').replace(/<[^>]*>/g, '') @>
1151				</div>
1152			</div>
1153			
1154                <div style="margin-top: auto; margin-left:10px;">
1155                    <a style="background-color:#FB5607 !important; border:0px !important; border-radius:62px !important; padding:10px 16px !important; width: fit-content; display: inline-block; text-decoration: none; color: white; padding: 12px 24px; font-weight: 600 !important; font-size: 16px;letter-spacing:0px; !important" 
1156                       class="buy-btn btn btn-primary" 
1157                       title="<@- item['spayee:resource']['spayee:title'] @>" 
1158                       amplitude-event="buy_now_tapped_course_checkout" 
1159                       amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' 
1160                       href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>">
1161                        Enroll for <@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @>
1162                    </a>
1163                </div>
1164            </div>
1165        </div>
1166    </div>
1167</script>
1167
1168
1169			<!--Blaze Course nEW tEMPLATE 10-->
1170			
1170<script type="text/template" id="spcoursecard-10-template">
1171							<div class="column third text-center course-card-fixed-height" style="padding-left: 1rem; padding-right: 1rem; margin-bottom: 10px;margin-top:10px; text-align:left;">
1172								<div style="height: 100%; display: flex; flex-direction: column;">
1173									<@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @>
1174									<@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @>
1175									
1176									<a style="color:black; text-align:left;" title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' style="text-decoration: none; color:black; font-size:24px;">
1177										<img style="height:320px;  object-fit:cover; margin:0px 0px;" class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')">
1178									</a>
1179									
1180									<div style=" flex-grow: 1; display: flex; flex-direction: column;" class="course-card-content">
1181										<h3 
1182			    class="size-18 text-left" 
1183			    style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 100%; display: block; margin-bottom: 12px; color: white;"
1184			>
1185			    <b title="<@= item['spayee:resource']['spayee:title'] @>" style="color:white;">
1186			        <@- item['spayee:resource']['spayee:title'] @>
1187			    </b>
1188			</h3>
1189										
1190										<div title="<@= (item['spayee:resource']['spayee:shortDescription'] || ' ').replace(/<[^>]*>/g, '') @>" class="size-16 text-ellipsis course-card-text" style="max-height: 3rem; min-height: 3rem; margin-bottom: 12px; overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1;color:white;">
1191											<@= (item['spayee:resource']['spayee:shortDescription'] || '').replace(/<[^>]*>/g, '') @>
1192										</div>
1193										
1194										<div style="margin-top: auto;">
1195											<a style="width:100% !important;font-weight:600 !important; letter-spacing:0px; color:black !important; background-color:#D8FD46 !important; border:0px !important; border-radius:0px !important; padding:20px 36px !important; width: fit-content; display: inline-block; text-decoration: none; transition: all 0.16s ease 0s; cursor: pointer; padding: 16px 28px; line-height: 16px; font-weight: 700; font-size: 16px; letter-spacing: 0px; border-image: initial;" 
1196											class="buy-btn btn btn-primary" 
1197											title="<@- item['spayee:resource']['spayee:title'] @>" 
1198											amplitude-event="buy_now_tapped_course_checkout" 
1199											amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' 
1200											href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>">
1201											 Enroll for <@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @>
1202										 </a>
1203			
1204										</div>
1205									</div>
1206								</div>
1207							</div>
1208						</script>
1208
1209			
1210			<!--Olive Course 11-->
1211			
1211<script type="text/template" id="spcoursecard-11-template" >
1212				<@ 
1213				// Calculate colors based on index
1214				var colorIndex = (typeof window.courseCardColorIndex === 'undefined') ? 0 : window.courseCardColorIndex;
1215				var colors = [
1216					{ bg: '#FFA46B', btnBg: '#361500' },  // Orange card → Dark brown button
1217					{ bg: '#87A1F6', btnBg: '#001A71' },  // Blue card → Dark blue button
1218					{ bg: '#B073DC', btnBg: '#34005A' }  // Purple card → Dark brown button (default)
1219				];
1220				var currentColor = colors[colorIndex % 3];
1221				window.courseCardColorIndex = colorIndex + 1;
1222				@>
1223				
1224				<div class="column third text-center course-card course-card-fixed-height" style="padding: 0 15px; margin-bottom: 30px;">
1225					<div class="course-card-wrapper" style="background-color: <@- currentColor.bg @>; height: 100%; border-radius: 32px; overflow: hidden;">
1226						<@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; 
1227						if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @>
1228						
1229						<a class="course-image-link" style="display: block; padding: 16px;padding-bottom:0px" title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>">
1230							<img style="height:320px; width:100%; object-fit:cover; border-radius: 32px;" class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')">
1231						</a>
1232						
1233						<div style="padding: 20px;" class="course-card-content">
1234							<h3 style="font-size:24px; text-transform:uppercase; color: black; margin: 0 0 15px 0; text-align: left;white-space:nowrap; overflow: hidden; text-overflow: ellipsis;width: 100%;display:block;">
1235								<b title="<@= item['spayee:resource']['spayee:title'] @>"><@- item['spayee:resource']['spayee:title'] @></b>
1236							</h3>
1237							<div title="<@= (item['spayee:resource']['spayee:shortDescription'] || ' ').replace(/<[^>]*>/g, '') @>" class="size-16 text-ellipsis course-card-text" style="max-height: 3rem; min-height: 3rem; color:black; margin-bottom: 12px;text-align: left;">
1238								<@ print(item['spayee:resource']['spayee:shortDescription']!==undefined?item['spayee:resource']['spayee:shortDescription']:"&nbsp;") @>
1239							</div>
1240							<a class="enroll-button" 
1241							   style="display: block; 
1242									  background-color: <@- currentColor.btnBg @>; 
1243									  color: white !important; 
1244									  padding: 12px; 
1245									  text-align: center; 
1246									  font-weight: 600; 
1247									  text-decoration: none;
1248									  border-radius: 32px;"
1249							   href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>">
1250								Enroll for <@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @>
1251							</a>
1252						</div>
1253					</div>
1254				</div>
1255				
1256			</script>
1256
1257			
1258
1259			<!-- Nebula Course 12-->
1260			
1260<script type="text/template" id="spcoursecard-12-template" >
1261				<div class="column third text-center course-card-fixed-height" style="padding-left: 1rem; padding-right: 1rem; margin-bottom: 2rem; text-align:left;">
1262					<div style="border:0px; border-radius:16px; padding-bottom: 20px; height: 100%; display: flex; flex-direction: column;">
1263						<@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @>
1264						<@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @>
1265						
1266						<a style="color:black; text-align:left;" title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}'>
1267							<img style="height:240px; width:100%; object-fit:fill; margin:0px 0px; border-radius:16px; " class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')">
1268						</a>
1269						
1270						<div style="padding:10px 0px; flex-grow: 1; display: flex; flex-direction: column;" class="course-card-content">
1271							<h3 
1272								class="size-18 text-left" 
1273								title="<@- item['spayee:resource']['spayee:title'] @>" 
1274								style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 100%; display: block; margin-bottom: 12px; color: black;"
1275							>
1276								<b style="color:black;"><@- item['spayee:resource']['spayee:title'] @></b>
1277							</h3>
1278						
1279							<div 
1280								class="size-16 text-ellipsis course-card-text" 
1281								title="<@= (item['spayee:resource']['spayee:shortDescription'] || ' ').replace(/<[^>]*>/g, '') @>" 
1282								style="max-height: 3rem; min-height: 3rem; margin-bottom: 12px; overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1;"
1283							>
1284							<@= (item['spayee:resource']['spayee:shortDescription'] || '').replace(/<[^>]*>/g, '') @>
1285							</div>
1286						</div>
1287							
1288							<div style="margin-top: auto; margin-left:0px;">
1289								<a style="background-color:#6715FF !important;  border-radius:12px !important; padding:10px 16px !important; width: fit-content; display: inline-block; text-decoration: none; color: white; padding: 12px 24px; font-weight: 600 !important; font-size: 16px;letter-spacing:0px; !important" 
1290								   class="buy-btn btn btn-primary" 
1291								   title="<@- item['spayee:resource']['spayee:title'] @>" 
1292								   amplitude-event="buy_now_tapped_course_checkout" 
1293								   amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' 
1294								   href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>">
1295									Enroll for <@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @>
1296								</a>
1297							</div>
1298						</div>
1299					</div>
1300				</div>
1301			</script>
1301
1302
1303
1304
1305		<!--Dusk Course-13-->
1306		
1306<script type="text/template" id="spcoursecard-13-template" >
1307			<div class="column third text-center course-card-fixed-height" style="padding-left: 1rem; padding-right: 1rem; margin-bottom: 2rem; text-align:left;">
1308				<div style="border:0px; border-radius:16px; padding-bottom: 20px; height: 100%; display: flex; flex-direction: column;">
1309					<@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @>
1310					<@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @>
1311					
1312					<a style="color:black; text-align:left;" title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}'>
1313						<img style="height:240px; width:100%; object-fit:fill; margin:0px 0px; border-radius:16px; " class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')">
1314					</a>
1315					
1316					<div style="padding:10px 0px; flex-grow: 1; display: flex; flex-direction: column;" class="course-card-content">
1317						<h3 
1318							class="size-18 text-left" 
1319							title="<@- item['spayee:resource']['spayee:title'] @>" 
1320							style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 100%; display: block; margin-bottom: 12px; color: black;"
1321						>
1322							<b style="color:black;"><@- item['spayee:resource']['spayee:title'] @></b>
1323						</h3>
1324					
1325						<div 
1326							class="size-16 text-ellipsis course-card-text" 
1327							title="<@= (item['spayee:resource']['spayee:shortDescription'] || ' ').replace(/<[^>]*>/g, '') @>" 
1328							style="max-height: 3rem; min-height: 3rem; margin-bottom: 12px; overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1;"
1329						>
1330						<@= (item['spayee:resource']['spayee:shortDescription'] || '').replace(/<[^>]*>/g, '') @>
1331						</div>
1332					</div>
1333					
1334				   
1335						
1336						<div style="margin-top: auto; margin-left:0px;">
1337							<a style="background-color:#282400 !important;border:0px ;  border-radius:41px !important; padding:10px 24px !important; width: fit-content; display: inline-block; text-decoration: none; color: white; padding: 12px 24px; font-weight: 600 !important; font-size: 16px;letter-spacing:0px; !important" 
1338							   class="buy-btn btn btn-primary" 
1339							   title="<@- item['spayee:resource']['spayee:title'] @>" 
1340							   amplitude-event="buy_now_tapped_course_checkout" 
1341							   amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' 
1342							   href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>">
1343								Enroll for <@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @>
1344							</a>
1345						</div>
1346					</div>
1347				</div>
1348			</div>
1349		</script>
1349
1350			
1351			
1352
1353
1354
1355
1356
1357
1358
1359<!-- Curriculum 1st Template -->
1360<script type="text/template" id="coursecurr-1-template">
1361       <table class="table courseContents">
1362        <thead>
1363            <tr>
1364                <td style="width: 50px;"></td>
1365                <td style="width: 50px;"></td>
1366                <td></td>
1367            </tr>
1368        </thead>
1369        <tbody>
1370            <@ $.each(item, function(index, value) { @>
1371            <tr>
1372                <td><i class="material-icons courseItemIcon" data-type="<@- value.type @>"></i></td>
1373                <td colspan="2">
1374                    <@- value.title @> 
1375					<@ if(value.type == 'aiheading') { @>
1376						<small>(coming soon)</small><@ } @>
1377					<@ if(assetInfo && value.type == 'video' && value.duration !== undefined && value.duration > 0) { @>
1378						<small>(<@ print(Math.floor(value.duration)) @>:00)</small><@ } @>
1379					<@ if(assetInfo && value.type == 'pdf' && value.pages !== undefined && value.pages > 0) { @>
1380						<small>(<@- value.pages @> pages)</small>
1381					<@ } @>
1382                </td>
1383            </tr>
1384            <@ if(value.items != undefined) { @> <@ $.each(value['items'], function(index1, value1) { @>
1385            <tr>
1386                <td></td>
1387                <td><i class="material-icons courseItemIcon" data-type="<@- value1.type @>"></i></td>
1388                <td>
1389                    <@- value1.title @>
1390					<@ if(assetInfo && value.type == 'video' && value1.duration !== undefined && value1.duration > 0) { @><small>(<@ print(Math.floor(value1.duration)) @>:00)</small><@ } @>
1391					<@ if(assetInfo && value1.type =='pdf' && value1.pages !== undefined && value1.pages > 0) { @><small>(<@- value1.pages @> pages)</small><@ } @>
1392					<@ if(value1.type =='aiheading') { @><small>(coming soon)</small><@ } @>
1393                </td>
1394            </tr>
1395            <@ }); @> <@ } @> <@ }); @>
1396        </tbody>
1397    </table>
1398</script>
1398
1399
1400
1401<!-- Curriculum 2nd Template -->
1402<script type="text/template" id="coursecurr-2-template">
1403    <div class="column full curriculum2"  spellcheck="false">
1404      <div class="course-content1" >
1405    	<p style="font-size: 15px; font-weight: 400; margin-top: 0px;">
1406    		<@if(summary.modules && summary.modules>0){@>
1407    			<@print(summary.modules)@> Modules &nbsp;<i class="icon ion-android-folder-open"></i>&nbsp; &nbsp; <@if(summary.sessions && summary.sessions>0 && curriculumAssetInfo){@>|<@}@>&nbsp; &nbsp;
1408    		<@}@>
1409    		<@if(summary.sessions && summary.sessions>0 && curriculumAssetInfo){@>
1410    			<@print(summary.sessions)@> Sessions <i class="icon ion-android-laptop"></i>&nbsp; &nbsp; <@if(summary.durations && summary.durations>0 && curriculumAssetInfo){@>|<@}@>&nbsp; &nbsp;
1411    		<@}@>
1412    		<@if(summary.durations && summary.durations>0 && curriculumAssetInfo){@>
1413    			<@print(millisecondsToHHMMSSStr(summary.durations))@> Total Time&nbsp;&nbsp;<i class="icon ion-ios-clock-outline"></i>
1414    		<@}@>
1415    	</p>
1416      </div>
1417
1418
1419    	<@ $.each(item, function(index, value) { @>
1420    	<div class="course-course-content-box" >
1421    		<div class="course-content-blue-title <@if(value && value.contents){@> bg-primary <@}else if($('#'+id).closest('div.is-section').hasClass("is-bg-grey")){@>bg-white<@}else{@>is-bg-grey<@}@>" >
1422              <span class="title-icon">
1423    			<span class="material-icons <@if(value && !value.contents){@> text-primary <@}@>"><@ print(getCourseAssetIcon(value.type))@></span>
1424    		  </span>
1425    			<div class="titl5b" >
1426    				<h3 class="<@if(value && !value.contents){@> text-primary <@}@>">
1427    					<@print(value.title)@> <@ if(curriculumAssetInfo && value.type == 'pdf' && value.pages !== undefined && value.pages > 0) { @><small>(<@- value.pages @> pages)</small><@ } @>
1428    					<@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value.id)){@>
1429    							<a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,"-"))@>-<@- courseId @>#<@print(value.id)@>" class="previewBtn"><span class="<@if(value && !value.contents){@> text-primary <@}@>">Preview</span></a>
1430    					<@}@>
1431    				</h3>
1432    		  		<p class="<@if(value && !value.contents){@> text-primary <@}@>"><@if(value && value.contents && curriculumAssetInfo){@>
1433    						Sessions: <@print(value.contents)@>
1434    					<@}@>
1435    					<@if(value.moduleDurations && curriculumAssetInfo){@><@if(value && value.contents){@>|<@}@>
1436    						Time: <@print(millisecondsToHHMMSSStr(value.moduleDurations))@>
1437    					<@}@>
1438    				<@if(value && value.contents>0){@><span class="material-icons">expand_more</span><@}@>  </p>
1439    			</div>
1440    		</div>
1441    <@if(value && value.items){@>
1442    	<@ $.each(value['items'], function(index1, value1) { @>
1443    		<div class="course-content-body <@if(index==0){@>showing<@ }@>" >
1444    				<div class="desc1 " >
1445    				<div class="is-box-9" >
1446    					<div class="boxa1" >
1447    						<span class="material-icons text-primary"><@ print(getCourseAssetIcon(value1.type))@></span>
1448    						<p> <@print(value1.title)@> <@ if(curriculumAssetInfo && value1.type == 'pdf' && value1.pages !== undefined && value1.pages > 0) { @><small>(<@- value1.pages @> pages)</small><@ } @>
1449							<@ if(value1.type == 'aiheading') { @><small>(coming soon)</small><@ } @>
1450							</p>
1451		
1452    					</div>
1453    				</div>
1454    				<div class="is-box-1" >
1455    					<div class="boxa2" >
1456    						<@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value1.id)){@>
1457    								<a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,"-"))@>#<@print(value1.id)@>">
1458										<@ if(value1.type == 'video') { @> Watch <@ } else {@> Preview <@ } @>
1459									</a>
1460    						<@}@>
1461    					</div>
1462    				</div>
1463    				<div class="is-box-2" >
1464    					<div class="boxa2" >
1465    						<p class="duration"><@if(value1.duration && curriculumAssetInfo){@><@print(millisecondsToHHMMSSStr(value1.duration))@><@}@></p>
1466    					</div>
1467    				</div>
1468    				</div>
1469    		</div>
1470    	<@ }); @>
1471    <@}@>
1472    	</div>
1473      <@ }); @>
1474
1475    </div>
1476</script>
1476
1477
1478
1479
1480
1481
1482<!-- Curriculum 3rd Template -->
1483<script type="text/template" id="coursecurr-3-template">
1484     <div class="column full" spellcheck="false" data-gramm="false">
1485        <div class="accordion-syllabus" >
1486			<@ $.each(item, function(index, value) { @>
1487            <div class="accordion-syllabus-item">
1488                <header class="accordion-syllabus-header">
1489                    <h4 class="accordion-syllabus-header__title">
1490                        <span class="text-primary">
1491							<@if(index<9){@>
1492									0<@print(index+1)@>
1493								<@ } else {@> 
1494									<@print(index+1)@> 
1495							<@ } @>
1496						</span>
1497                        <p><@print(value.title)@> <span class="text-primary show-sm" style="font-size: 14px;">
1498							<@if(value && value.items){@>
1499								<@ print(value.items.length) @> attachment(s) 
1500							<@}@>
1501						<@if(value.moduleDurations && curriculumAssetInfo){@>
1502							<@if(value && value.contents){@> • <@}@>
1503    						<@print(millisecondsToHHMMSSStr(value.moduleDurations))@>
1504    					<@}@>
1505						</span></p>
1506						
1507                    </h4>
1508                    <div class="accordion-syllabus-header__info">
1509                        <p class="text-primary hide-sm">
1510							<@if(value && value.items){@>
1511								<@ print(value.items.length) @> attachment(s) 
1512							<@}@>
1513						<@if(value.moduleDurations && curriculumAssetInfo){@>
1514							<@if(value && value.contents){@> • <@}@>
1515    						<@print(millisecondsToHHMMSSStr(value.moduleDurations))@>
1516    					<@}@>
1517						</p>
1518						<@if(value && value.items){@>
1519                        <div class="accordion-syllabus-header__icon text-primary">
1520                            <i class="fa fa-angle-left" aria-hidden="true"></i>
1521                        </div>
1522						<@}@>
1523                    </div>
1524                </header>
1525				<@if(value && value.items){@>
1526                <div class="accordion-content" style="">
1527                    <div class="accordian-content-block">
1528                        <ul class="accordian-list">
1529							<@ $.each(value['items'], function(index1, value1) { @>
1530                            <li class="accordian-list__item">
1531                                <div class="accordian-content-card">
1532                                    <div class="accordian-content-card__info">
1533                                        <div class="accordian-content-card__ico">
1534											<@ if(value1.type == 'code'){ @>
1535												<img src="/resources/images/CodeIcon.svg">
1536											<@ } else { @>
1537												<span class="material-icons text-primary">
1538													<@ print(getCourseAssetIcon(value1.type))@>
1539												</span>
1540											<@ } @>
1541										</div>
1542                                        <div class="accordian-content-card__title">
1543											<@print(value1.title)@> <@ if(curriculumAssetInfo && value1.type == 'pdf' && value1.pages !== undefined && value1.pages > 0) { @><small>(<@- value1.pages @> pages)</small><@ } @>
1544											<@ if(value1.type == 'aiheading') { @><small>(coming soon)</small><@ } @>
1545										</div>
1546                                    </div>
1547                                    <div class="accordian-content-card__link">
1548										<@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value1.id)){@>
1549    										<a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,"-"))@>-<@- courseId @>#<@print(value1.id)@>" class="previewBtn">
1550												<span class="text-primary">
1551													<@ if(value1.type == 'video') { @> Watch <@ } else {@> Preview <@ } @><span style="color:#000"><i class="fa fa-solid fa-arrow-up-right"></i></span>
1552												</span>
1553											</a>
1554    									<@}@>
1555                                    </div>
1556                                </div>
1557                            </li>
1558                    		<@ }); @>
1559                        </ul>
1560                    </div>
1561                </div>
1562			<@ } @>
1563            </div>
1564           <@ }); @>   
1565        </div>
1566    </div>
1567</script>
1567
1568
1569
1570
1571<!-- Curriculum 4th Template -->
1572<script type="text/template" id="coursecurr-4-template">
1573   <div class="column full coursecurr4">
1574	 <@ $.each(item, function(index, value) { @>
1575	 <div class="accordion-syllabus-item">
1576	 <header class="accordion-syllabus-header" >
1577		 <h4 class="accordion-syllabus-header__title">
1578			 <span>
1579				 <@if(index<9){@>0<@print(index+1)@><@ } else {@> <@print(index+1)@> <@ } @>
1580			 </span>
1581			 <div class="accordion-syllabus-header__title-block" > 
1582				 <p style="font-size: 20px; font-weight: 700;">
1583					 <@print(value.title)@>
1584				 </p>
1585				 <p class="text-primary" style="font-weight: 500; font-size: 14px; line-height: 150%; margin-top: 10px; ">
1586					 <@if(value && value.type == 'aiheading'){@>
1587						 (coming soon)
1588					 <@}@>
1589					 <@if(value && value.items){@>
1590						 <@ print(value.items.length) @> attachment(s) 
1591					 <@}@>
1592					 <@if(value.moduleDurations && curriculumAssetInfo){@><@if(value && value.contents){@> • <@}@>
1593						 <@print(millisecondsToHHMMSSStr(value.moduleDurations))@>
1594					 <@}@>
1595				 </p>
1596			 </div>
1597		 </h4>
1598		 <@if(value && value.items){@>
1599		 <div class="accordion-syllabus-header__info" >
1600			 <div class="accordion-syllabus-header__icon" >
1601				 <i class="fa fa-angle-left" aria-hidden="true"></i>
1602			 </div>
1603		 </div>
1604		 <@ } @>
1605	 </header>
1606	 <@if(value && value.items){@>
1607	 <div class="accordion-content"  style="">
1608		 <div class="accordian-content-block" >
1609			 <ul class="accordian-list">
1610				 <@ $.each(value['items'], function(index1, value1) { @>
1611				 <li class="accordian-list__item">
1612					 <div class="accordian-content-card" >
1613						 <div class="accordian-content-card__info" >
1614							 <div class="accordian-content-card__ico" >
1615								 <@ if(value1.type == 'code'){ @>
1616									 <img src="/resources/images/CodeIcon.svg">
1617								 <@ } else { @>
1618									 <span class="material-icons text-primary">
1619										 <@ print(getCourseAssetIcon(value1.type))@>262
1620									 </span>
1621								 <@ } @>
1622							 </div>
1623							 <div class="accordian-content-card__title" >
1624								 <@print(value1.title)@> <@ if(curriculumAssetInfo && value1.type == 'pdf' && value1.pages !== undefined && value1.pages > 0) { @><small>(<@- value1.pages @> pages)</small><@ } @>
1625								 <@ if(value1.type == 'aiheading') { @><small>(coming soon)</small><@ } @>
1626							 </div>
1627						 </div>
1628						 <div class="accordian-content-card__link" >
1629							 <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value1.id)){@>
1630							 <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,"-"))@>-<@- courseId @>#<@print(value1.id)@>" class="previewBtn">
1631								 <span class="text-primary">
1632									 <@ if(value1.type == 'video') { @> Watch <@ } else {@> Preview <@ } @> <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right"></i></span>
1633								 </span>
1634							 </a>
1635							 <@ } @>
1636						 </div>
1637					 </div>
1638				 </li>
1639				 <@ }); @>
1640			 </ul>
1641		 </div>
1642	 </div>
1643	 <@ } @>
1644   </div>
1645  <@ }); @>  
1646 </div>
1647 </script>
1647
1648
1649 <!-- vegas curriculum-5-->
1650 
1650<script>
1651	// Simple responsive positioning
1652	function updatePosition() {
1653		const element = document.getElementById('totalTimeElement');
1654		if(element){
1655		if (window.innerWidth > 768) {
1656			element.style.position = 'absolute';
1657			element.style.top = "5px";
1658			element.style.right = '122px';
1659		} else {
1660			element.style.position = 'static';
1661			element.style.margin = '0 0';
1662		}
1663		}
1664	}
1665	
1666	// Run on load and resize
1667	window.addEventListener('load', updatePosition);
1668	window.addEventListener('resize', updatePosition);
1669	</script>
1669
1670 
1670<script type="text/template" id="coursecurr-5-template">
1671	<div class="total-time" id="totalTimeElement" style="
1672    font-size: 18px;
1673    font-weight: 600;
1674    color: #FB5607;
1675    padding: 8px 12px;
1676    border-radius: 4px;
1677    white-space: nowrap;">
1678     <@if(summary.durations && summary.durations>0 && curriculumAssetInfo){@>
1679        <@print(millisecondsToHHMMSSStr(summary.durations))@>
1680    <@}@>
1681</div>
1682
1683<div class="accordion-syllabus" style="max-width:1000px !important">
1684    <@ $.each(item, function(index, value) { @>
1685    <div class="accordion-syllabus-item" style="<@ if(index >= 5) { @> display: none; <@ } @>">
1686        <header class="accordion-syllabus-header" style="background:#F5F5F5 !important; border-radius:0px;box-shadow:none;padding:0.5rem !important">
1687            <h4 class="accordion-syllabus-header__title">
1688                <span class="text-primary" style="font-size:18px ; font-weight:600; color:black;"> 
1689                    <@if(index < 9) {@>  
1690                        Week <@print(index + 1)@>:  
1691                    <@ } else {@>  
1692                        Week <@print(index + 1)@>:
1693                    <@ } @>  
1694                </span>
1695                <p style="font-size:18px ; font-weight:600;"><@print(value.title)@> <span class="text-primary show-sm" style="font-size: 14px;">
1696                    <@if(value && value.items){@>
1697                        <@ print(value.items.length) @> attachment(s) 
1698                    <@} else {@>
1699                        1 attachment(s)
1700                    <@}@>
1701                    <@if(value.moduleDurations && curriculumAssetInfo){@>
1702						• <@print(millisecondsToHHMMSSStr(value.moduleDurations))@>
1703					<@}@>
1704                </span></p>
1705            </h4>
1706			
1707            <div class="accordion-syllabus-header__info">
1708                <p class="text-primary hide-sm" style="color:#FB5607 !important;">
1709                    <@if(value && value.items){@>
1710                        <@ print(value.items.length) @> attachment(s) 
1711                    <@} else {@>
1712                        1 attachment(s)
1713                    <@}@>
1714                    <@if(value.moduleDurations && curriculumAssetInfo){@>
1715						• <@print(millisecondsToHHMMSSStr(value.moduleDurations))@>
1716					<@}@>
1717                </p>
1718                <div class="accordion-syllabus-header__icon text-primary">
1719                    <i class="fa fa-angle-left" aria-hidden="true" style="color:#FB5607;"></i>
1720                </div>
1721            </div>
1722        </header>
1723        <div class="accordion-content" style="filter:none;">
1724            <div class="accordian-content-block" style="background:#F5F5F5 !important;box-shadow:none;padding:16px 66px 3px 69px !important;">
1725                <ul class="accordian-list">
1726                    <@ var itemsCount = value['items'] ? value['items'].length : 0; @>
1727                    <@ if(value['items'] && value['items'].length > 0) { @>
1728                        <@ $.each(value['items'], function(index1, value1) { @>
1729                        <li class="accordian-list__item" style="padding:0px 0px !important;<@ if(index1 >= 5) { @> display: none; <@ } @>"> 
1730							<style>
1731								@media (max-width: 768px) {
1732								  .accordian-content-card {
1733									flex-direction: column !important;
1734									align-items: stretch !important;
1735								  }
1736							  
1737								  .accordian-content-card__top {
1738									flex-direction: row !important;
1739									justify-content: space-between !important;
1740									align-items: center !important;
1741									width: 100% !important;
1742								  }
1743							  
1744								  .accordian-content-card__title {
1745									flex: 1 !important;
1746									margin: 0 10px !important;
1747									white-space: nowrap;
1748									overflow: hidden;
1749									text-overflow: ellipsis;
1750								  }
1751							  
1752								  .accordian-content-card__bottom {
1753									flex-direction: row !important;
1754									justify-content: space-between !important;
1755									align-items: center !important;
1756									width: 100% !important;
1757									margin-top: 6px !important;
1758								  }
1759							  
1760								  .accordian-content-card__link {
1761									flex: 1 !important;
1762									min-width: 0 !important;
1763									text-align: left !important;
1764								  }
1765							  
1766								  .accordian-content-card__time {
1767									flex-shrink: 0 !important;
1768									text-align: right !important;
1769								  }
1770								}
1771							  </style>
1772							  
1773							  <div class="accordian-content-card"
1774     style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; border-bottom: 1px solid #eee;">
1775
1776							  
1777								<!-- Row 1: Icon + Title + Collapse Icon -->
1778								<div class="accordian-content-card__top"
1779									 style="display: flex; align-items: center; justify-content: space-between; width: 100%;">
1780							  
1781								  <!-- Icon -->
1782								  <div class="accordian-content-card__ico" style="flex-shrink: 0;">
1783									<@ if(value1.type == 'code'){ @>
1784									  <img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px;">
1785									<@ } else { @>
1786									  <span class="material-icons text-primary" style="color:#FB5607; font-size: 24px;">
1787										<@ print(getCourseAssetIcon(value1.type))@>
1788									  </span>
1789									<@ } @>
1790								  </div>
1791							  
1792								  <!-- Title -->
1793								  <div class="accordian-content-card__title"
1794									   style="font-weight: 400; font-size: 14px; color: #333; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">
1795									<@print(value1.title)@>
1796								  </div>
1797							  
1798								  <!-- Collapse Icon (optional) -->
1799								  <div class="accordian-content-card__collapse" style="flex-shrink: 0;">
1800									<!-- Example placeholder, add real icon if needed -->
1801									<!-- <i class="fa fa-chevron-down" style="font-size: 16px;"></i> -->
1802								  </div>
1803								</div>
1804							  
1805								<!-- Row 2: Preview Button and Time -->
1806								<div class="accordian-content-card__bottom"
1807									 style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;">
1808							  
1809								  <!-- Preview Button -->
1810								  <div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;">
1811									<@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value1.id)){@>
1812									  <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value1.id)@>"
1813										 class="previewBtn"
1814										 style="font-size: 14px; font-weight: 500; text-decoration: none; color: #FB5607; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;">
1815										<span class="text-primary" style="color:#FB5607;">
1816										  <@ if(value1.type == 'video') { @> Watch <@ } else {@> Preview <@ } @>
1817										  <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#FB5607;"></i></span>
1818										</span>
1819									  </a>
1820									<@}@>
1821								  </div>
1822							  
1823								  <!-- Time -->
1824								  <div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;">
1825									<p class="text-primary course-asset-time"
1826									   style="font-size: 14px; font-weight: 500; color:#FB5607 !important; margin: 0;">
1827									  <@ if(value1.duration && value1.duration > 0) { @>
1828										<@ print(millisecondsToHHMMSSStr(value1.duration)) @>
1829									  <@ } else { @>
1830										--
1831									  <@ } @>
1832									</p>
1833								  </div>
1834							  
1835								</div>
1836							  </div>
1837							  
1838							
1839                        </li>
1840                        <@ }); @>
1841                    <@ } else { @>
1842                        <li class="accordian-list__item" style="padding:0px 0px !important;">
1843							<div class="accordian-content-card"
1844							style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; border-bottom: 1px solid #eee;">
1845					   
1846						   <!-- Row 1: Icon + Title + Collapse Icon -->
1847						   <div class="accordian-content-card__top"
1848								style="display: flex; align-items: center; justify-content: space-between; width: 100%;">
1849						 
1850							   <!-- Icon -->
1851							   <div class="accordian-content-card__ico" style="flex-shrink: 0;">
1852								   <@ if(value.type == 'code'){ @>
1853									   <img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px;">
1854								   <@ } else { @>
1855									   <span class="material-icons text-primary" style="color:#FB5607; font-size: 24px;">
1856										   <@ print(getCourseAssetIcon(value.type))@>
1857									   </span>
1858								   <@ } @>
1859							   </div>
1860						 
1861							   <!-- Title -->
1862							   <div class="accordian-content-card__title"
1863									style="font-weight: 400; font-size: 14px; color: #333; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">
1864								   <@print(value.title)@>
1865							   </div>
1866						 
1867							   <!-- Collapse Icon (optional) -->
1868							   <div class="accordian-content-card__collapse" style="flex-shrink: 0;">
1869								   <!-- Example placeholder, add real icon if needed -->
1870								   <!-- <i class="fa fa-chevron-down" style="font-size: 16px;"></i> -->
1871							   </div>
1872						   </div>
1873						 
1874						   <!-- Row 2: Preview Button and Time -->
1875						   <div class="accordian-content-card__bottom"
1876								style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;">
1877						 
1878							   <!-- Preview Button -->
1879							   <div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;">
1880								   <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value.id)){@>
1881									   <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value.id)@>"
1882										  class="previewBtn"
1883										  style="font-size: 14px; font-weight: 500; text-decoration: none; color: #FB5607; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;">
1884										   <span class="text-primary" style="color:#FB5607;">
1885											   <@ if(value.type == 'video') { @> Watch <@ } else {@> Preview <@ } @>
1886											   <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#FB5607;"></i></span>
1887										   </span>
1888									   </a>
1889								   <@}@>
1890							   </div>
1891						 
1892							   <!-- Time -->
1893							   <div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;">
1894								   <p class="text-primary course-asset-time"
1895									  style="font-size: 14px; font-weight: 500; color:#FB5607 !important; margin: 0;">
1896									   <@ if(value.duration && value.duration > 0) { @>
1897										   <@ print(millisecondsToHHMMSSStr(value.duration)) @>
1898									   <@ } else { @>
1899										   --
1900									   <@ } @>
1901								   </p>
1902							   </div>
1903						   </div>
1904					   </div>
1905                        </li>
1906                    <@ } @>
1907                </ul>
1908            
1909                <@ if(itemsCount > 5) { @>
1910                    <div style="text-align: center; margin-top: 10px;">
1911						<button style="background-color: #FB5607; color: white; padding: 4px 28px; border: none; cursor: pointer; font-size: 16px; border-radius: 24px;" 
1912						onclick="
1913							var parentAccordion = this.closest('.accordion-content');
1914							parentAccordion.style.maxHeight = 'none';
1915							this.closest('.accordian-content-block').querySelectorAll('.accordian-list__item').forEach(el => el.style.display = 'block'); 
1916							this.style.display = 'none';
1917						">
1918                            View All
1919                        </button>
1920                    </div>
1921                <@ } @>
1922            </div>
1923        </div>
1924    </div>
1925    <@ }); @>
1926    <@ if(item.length > 5) { @>
1927        <div style="text-align: center; margin-top: 10px;margin-bottom: 20px;">
1928            <button style="background-color: #FB5607; color: white; padding: 8px 32px; border: none; cursor: pointer; font-size: 16px; border-radius: 24px;" 
1929                onclick="document.querySelectorAll('.accordion-syllabus-item').forEach(el => el.style.display = 'block'); this.style.display = 'none';">
1930                View All Sessions
1931            </button>
1932        </div>
1933    <@ } @>
1934</div>
1935	</div>
1936</script>
1936
1937
1938
1939<!--Blaze-Curriculum-6-->
1940<script type="text/template" id="coursecurr-6-template">
1941    <div class="column full" spellcheck="false" data-gramm="false">
1942        <div class="total-time" id="totalTimeElement" style="
1943            font-size: 18px;
1944            font-weight: 600;
1945            color: #D8FD46;
1946            padding: 8px 12px;
1947            border-radius: 4px;
1948            white-space: nowrap;
1949            background: #232323;
1950            margin-bottom: 20px;">
1951            <@if(summary.durations && summary.durations>0 && curriculumAssetInfo){@>
1952                <@print(millisecondsToHHMMSSStr(summary.durations))@>
1953            <@}@>
1954        </div>
1955
1956        <div class="accordion-syllabus">
1957            <@ $.each(item, function(index, value) { @>
1958            <div class="accordion-syllabus-item" style="<@ if(index >= 5) { @> display: none; <@ } @>">
1959                <header class="accordion-syllabus-header" style="background:#232323 !important; border-radius:0px;box-shadow:none;padding:20px 20px !important">
1960                    <h4 class="accordion-syllabus-header__title">
1961                        <span class="text-primary" style="font-size:18px ; font-weight:600; color:white;"> 
1962                            <@if(index < 9) {@>  
1963								Week <@print(index + 1)@>:  
1964							<@ } else {@>  
1965								Week <@print(index + 1)@>:
1966							<@ } @>  
1967                        </span>
1968                        <p style="font-size:18px ; font-weight:600;color:white;"><@print(value.title)@> <span class="text-primary show-sm" style="font-size: 14px;color:#D8FD46 !important;">
1969							<@if(value && value.items){@>
1970								<@ print(value.items.length) @> attachment(s) 
1971							<@} else {@>
1972								1 attachment(s)
1973							<@}@>
1974							<@if(value.moduleDurations && curriculumAssetInfo){@>
1975								• <@print(millisecondsToHHMMSSStr(value.moduleDurations))@>
1976							<@}@>
1977						</span></p>
1978                    </h4>
1979                    <div class="accordion-syllabus-header__info">
1980                        <p class="text-primary hide-sm" style="color:#D8FD46 !important;">
1981                            <@if(value && value.items){@>
1982                                <@ print(value.items.length) @> attachment(s) 
1983                            <@} else {@>
1984                                1 attachment(s)
1985                            <@}@>
1986							<@if(value.moduleDurations && curriculumAssetInfo){@>
1987								• <@print(millisecondsToHHMMSSStr(value.moduleDurations))@>
1988							<@}@>
1989                        </p>
1990                        <div class="accordion-syllabus-header__icon text-primary">
1991                            <i class="fa fa-angle-left" aria-hidden="true" style="color:#D8FD46;"></i>
1992                        </div>
1993                    </div>
1994                </header>
1995                <div class="accordion-content" style="filter:none;background:#181818;">
1996                    <div class="accordian-content-block" style="box-shadow:none;padding:16px 20px !important;background:transparent !important;">
1997                        <ul class="accordian-list">
1998                            <@ var itemsCount = value['items'] ? value['items'].length : 0; @>
1999                            <@ if(value['items'] && value['items'].length > 0) { @>
2000                                <@ $.each(value['items'], function(index1, value1) { @>
2001                                <li class="accordian-list__item" style="padding:0px 0px !important;<@ if(index1 >= 5) { @> display: none; <@ } @>"> 
2002                                    <style>
2003                                        @media (max-width: 768px) {
2004                                            .accordian-content-card {
2005                                                flex-direction: column !important;
2006                                                align-items: stretch !important;
2007                                            }
2008                                        
2009                                            .accordian-content-card__top {
2010                                                flex-direction: row !important;
2011                                                justify-content: space-between !important;
2012                                                align-items: center !important;
2013                                                width: 100% !important;
2014                                            }
2015                                        
2016                                            .accordian-content-card__title {
2017                                                flex: 1 !important;
2018                                                margin: 0 10px !important;
2019                                                white-space: nowrap;
2020                                                overflow: hidden;
2021                                                text-overflow: ellipsis;
2022                                            }
2023                                        
2024                                            .accordian-content-card__bottom {
2025                                                flex-direction: row !important;
2026                                                justify-content: space-between !important;
2027                                                align-items: center !important;
2028                                                width: 100% !important;
2029                                                margin-top: 6px !important;
2030                                            }
2031                                        
2032                                            .accordian-content-card__link {
2033                                                flex: 1 !important;
2034                                                min-width: 0 !important;
2035                                                text-align: left !important;
2036                                            }
2037                                        
2038                                            .accordian-content-card__time {
2039                                                flex-shrink: 0 !important;
2040                                                text-align: right !important;
2041                                            }
2042                                        }
2043                                    </style>
2044                                    
2045                                    <div class="accordian-content-card"
2046                                        style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; ">
2047                                    
2048                                        <!-- Row 1: Icon + Title + Collapse Icon -->
2049                                        <div class="accordian-content-card__top"
2050                                            style="display: flex; align-items: center; justify-content: space-between; width: 100%;">
2051                                        
2052                                            <!-- Icon -->
2053                                            <div class="accordian-content-card__ico" style="flex-shrink: 0;">
2054                                                <@ if(value1.type == 'code'){ @>
2055                                                    <img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px; filter: invert(1);">
2056                                                <@ } else { @>
2057                                                    <span class="material-icons text-primary" style="color:#D8FD46; font-size: 24px;">
2058                                                        <@ print(getCourseAssetIcon(value1.type))@>
2059                                                    </span>
2060                                                <@ } @>
2061                                            </div>
2062                                        
2063                                            <!-- Title -->
2064                                            <div class="accordian-content-card__title"
2065                                                style="font-weight: 400; font-size: 14px; color: white; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">
2066                                                <@print(value1.title)@>
2067                                                <!-- <@ if(curriculumAssetInfo && value1.type == 'pdf' && value1.pages !== undefined && value1.pages > 0) { @>
2068                                                    <small style="color: #999;">(<@- value1.pages @> pages)</small>
2069                                                <@ } @>
2070                                                <@ if(value1.type == 'aiheading') { @>
2071                                                    <small style="color: #999;">(coming soon)</small>
2072                                                <@ } @> -->
2073                                            </div>
2074                                        
2075                                            <!-- Collapse Icon -->
2076                                            <div class="accordian-content-card__collapse" style="flex-shrink: 0;">
2077                                            </div>
2078                                        </div>
2079                                    
2080                                        <!-- Row 2: Preview Button and Time -->
2081                                        <div class="accordian-content-card__bottom"
2082                                            style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;">
2083                                        
2084                                            <!-- Preview Button -->
2085                                            <div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;">
2086                                                <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value1.id)){@>
2087                                                <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value1.id)@>"
2088                                                    class="previewBtn"
2089                                                    style="font-size: 14px; font-weight: 500; text-decoration: none; color: #D8FD46 !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;">
2090                                                    <span class="text-primary" style="color:#D8FD46;">
2091                                                        <@ if(value1.type == 'video') { @> Watch <@ } else {@> Preview <@ } @>
2092                                                        <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#D8FD46;"></i></span>
2093                                                    </span>
2094                                                </a>
2095                                                <@}@>
2096                                            </div>
2097                                        
2098                                            <!-- Time -->
2099                                            <div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;">
2100                                                <p class="text-primary course-asset-time"
2101                                                    style="font-size: 14px; font-weight: 500; color:#D8FD46 !important; margin: 0;">
2102                                                    <@ if(value1.duration && value1.duration > 0) { @>
2103                                                        <@ print(millisecondsToHHMMSSStr(value1.duration)) @>
2104                                                    <@ } else { @>
2105                                                        --
2106                                                    <@ } @>
2107                                                </p>
2108                                            </div>
2109                                        </div>
2110                                    </div>
2111                                </li>
2112                                <@ }); @>
2113                            <@ } else { @>
2114								<li class="accordian-list__item" style="padding:0px 0px !important;">
2115									<div class="accordian-content-card"
2116										style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; ">
2117								   
2118										<!-- Row 1: Icon + Title + Collapse Icon -->
2119										<div class="accordian-content-card__top"
2120											style="display: flex; align-items: center; justify-content: space-between; width: 100%;">
2121									  
2122											<!-- Icon -->
2123											<div class="accordian-content-card__ico" style="flex-shrink: 0;">
2124												<@ if(value.type == 'code'){ @>
2125													<img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px; filter: invert(1);">
2126												<@ } else { @>
2127													<span class="material-icons text-primary" style="color:#D8FD46; font-size: 24px;">
2128														<@ print(getCourseAssetIcon(value.type))@>
2129													</span>
2130												<@ } @>
2131											</div>
2132									  
2133											<!-- Title -->
2134											<div class="accordian-content-card__title"
2135												style="font-weight: 400; font-size: 14px; color: white; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">
2136												<@print(value.title)@>
2137											</div>
2138									  
2139											<!-- Collapse Icon (optional) -->
2140											<div class="accordian-content-card__collapse" style="flex-shrink: 0;">
2141												<!-- Example placeholder, add real icon if needed -->
2142												<!-- <i class="fa fa-chevron-down" style="font-size: 16px;"></i> -->
2143											</div>
2144										</div>
2145									  
2146										<!-- Row 2: Preview Button and Time -->
2147										<div class="accordian-content-card__bottom"
2148											style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;">
2149									  
2150											<!-- Preview Button -->
2151											<div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;">
2152												<@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value.id)){@>
2153													<a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value.id)@>"
2154													   class="previewBtn"
2155													   style="font-size: 14px; font-weight: 500; text-decoration: none; color: #D8FD46 !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;">
2156														<span class="text-primary" style="color:#D8FD46;">
2157															<@ if(value.type == 'video') { @> Watch <@ } else {@> Preview <@ } @>
2158															<span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#D8FD46;"></i></span>
2159														</span>
2160													</a>
2161												<@}@>
2162											</div>
2163									  
2164											<!-- Time -->
2165											<div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;">
2166												<p class="text-primary course-asset-time"
2167												   style="font-size: 14px; font-weight: 500; color:#D8FD46 !important; margin: 0;">
2168													<@ if(value.duration && value.duration > 0) { @>
2169														<@ print(millisecondsToHHMMSSStr(value.duration)) @>
2170													<@ } else { @>
2171														--
2172													<@ } @>
2173												</p>
2174											</div>
2175										</div>
2176									</div>
2177								</li>
2178                            <@ } @>
2179                        </ul>
2180                    
2181                        <@ if(itemsCount > 5) { @>
2182                            <div style="text-align: center; margin-top: 10px;">
2183                                <button style="background-color: #D8FD46; color: black; padding: 4px 28px; border: none; cursor: pointer; font-size: 16px; border-radius: 0px;" 
2184                                   onclick="
2185							var parentAccordion = this.closest('.accordion-content');
2186							parentAccordion.style.maxHeight = 'none';
2187							this.closest('.accordian-content-block').querySelectorAll('.accordian-list__item').forEach(el => el.style.display = 'block'); 
2188							this.style.display = 'none';
2189						">
2190                                    View All
2191                                </button>
2192                            </div>
2193                        <@ } @>
2194                    </div>
2195                </div>
2196            </div>
2197            <@ }); @>
2198            <@ if(item.length > 5) { @>
2199                <div style="text-align: center; margin-top: 10px;margin-bottom: 20px;">
2200                    <button style="background-color: #D8FD46; color: black; padding: 8px 32px; border: none; cursor: pointer; font-size: 16px; border-radius: 0px;" 
2201                        onclick="document.querySelectorAll('.accordion-syllabus-item').forEach(el => el.style.display = 'block'); this.style.display = 'none';">
2202                        View All Sessions
2203                    </button>
2204                </div>
2205            <@ } @>
2206        </div>
2207    </div>
2208</script>
2208
2209
2210<script>
2211    // Simple responsive positioning (same as Vegas)
2212    function updatePosition() {
2213        const element = document.getElementById('totalTimeElement');
2214        if(element){
2215            if (window.innerWidth > 768) {
2216                element.style.position = 'absolute';
2217                element.style.top = "5px";
2218                element.style.right = '122px';
2219            } else {
2220                element.style.position = 'static';
2221                element.style.margin = '0 0';
2222            }
2223        }
2224    }
2225    
2226    // Run on load and resize
2227    window.addEventListener('load', updatePosition);
2228    window.addEventListener('resize', updatePosition);
2229</script>
2229
2230
2231
2232
2233
2234<!--Nebula Curriculum 7-->
2235
2236
2237<script>
2238	// Simple responsive positioning
2239	function updatePosition() {
2240		const element = document.getElementById('totalTimeElement');
2241		if(element){
2242		if (window.innerWidth > 768) {
2243			element.style.position = 'absolute';
2244			element.style.top = "5px";
2245			element.style.right = '122px';
2246		} else {
2247			element.style.position = 'static';
2248			element.style.margin = '0 0';
2249		}
2250		}
2251	}
2252	
2253	// Run on load and resize
2254	window.addEventListener('load', updatePosition);
2255	window.addEventListener('resize', updatePosition);
2256	</script>
2256
2257 
2257<script type="text/template" id="coursecurr-7-template">
2258	<div class="total-time" id="totalTimeElement" style="
2259    font-size: 18px;
2260    font-weight: 600;
2261    color: #6715FF;
2262    padding: 8px 12px;
2263    border-radius: 4px;
2264    white-space: nowrap;">
2265     <@if(summary.durations && summary.durations>0 && curriculumAssetInfo){@>
2266        <@print(millisecondsToHHMMSSStr(summary.durations))@>
2267    <@}@>
2268</div>
2269
2270<div class="accordion-syllabus" style="max-width:1000px !important">
2271    <@ $.each(item, function(index, value) { @>
2272    <div class="accordion-syllabus-item" style="<@ if(index >= 5) { @> display: none; <@ } @>">
2273        <header class="accordion-syllabus-header" style="background:#F1ECFB !important; border-radius16px;box-shadow:none;padding:20px !important">
2274            <h4 class="accordion-syllabus-header__title">
2275                <span class="text-primary" style="font-size:18px ; font-weight:600; color:black;"> 
2276                    <@if(index < 9) {@>  
2277                        Week <@print(index + 1)@>:  
2278                    <@ } else {@>  
2279                        Week <@print(index + 1)@>:
2280                    <@ } @>  
2281                </span>
2282                <p style="font-size:18px ; font-weight:600;"><@print(value.title)@> <span class="text-primary show-sm" style="font-size: 14px;">
2283                    <@if(value && value.items){@>
2284                        <@ print(value.items.length) @> attachment(s) 
2285                    <@} else {@>
2286                        1 attachment(s)
2287                    <@}@>
2288                    <@if(value.moduleDurations && curriculumAssetInfo){@>
2289						• <@print(millisecondsToHHMMSSStr(value.moduleDurations))@>
2290					<@}@>
2291                </span></p>
2292            </h4>
2293			
2294            <div class="accordion-syllabus-header__info">
2295                <p class="text-primary hide-sm" style="color:#6715FF !important;">
2296                    <@if(value && value.items){@>
2297                        <@ print(value.items.length) @> attachment(s) 
2298                    <@} else {@>
2299                        1 attachment(s)
2300                    <@}@>
2301                    <@if(value.moduleDurations && curriculumAssetInfo){@>
2302						• <@print(millisecondsToHHMMSSStr(value.moduleDurations))@>
2303					<@}@>
2304                </p>
2305                <div class="accordion-syllabus-header__icon text-primary">
2306                    <i class="fa fa-angle-left" aria-hidden="true" style="color:#6715FF;"></i>
2307                </div>
2308            </div>
2309        </header>
2310        <div class="accordion-content" style="filter:none;background:transparent !important;">
2311            <div class="accordian-content-block" style="background:transparent !important;box-shadow:none;padding:16px 66px 3px 69px !important;">
2312                <ul class="accordian-list">
2313                    <@ var itemsCount = value['items'] ? value['items'].length : 0; @>
2314                    <@ if(value['items'] && value['items'].length > 0) { @>
2315                        <@ $.each(value['items'], function(index1, value1) { @>
2316                        <li class="accordian-list__item" style="padding:0px 0px !important;<@ if(index1 >= 5) { @> display: none; <@ } @>"> 
2317							<style>
2318								@media (max-width: 768px) {
2319								  .accordian-content-card {
2320									flex-direction: column !important;
2321									align-items: stretch !important;
2322								  }
2323							  
2324								  .accordian-content-card__top {
2325									flex-direction: row !important;
2326									justify-content: space-between !important;
2327									align-items: center !important;
2328									width: 100% !important;
2329								  }
2330							  
2331								  .accordian-content-card__title {
2332									flex: 1 !important;
2333									margin: 0 10px !important;
2334									white-space: nowrap;
2335									overflow: hidden;
2336									text-overflow: ellipsis;
2337								  }
2338							  
2339								  .accordian-content-card__bottom {
2340									flex-direction: row !important;
2341									justify-content: space-between !important;
2342									align-items: center !important;
2343									width: 100% !important;
2344									margin-top: 6px !important;
2345								  }
2346							  
2347								  .accordian-content-card__link {
2348									flex: 1 !important;
2349									min-width: 0 !important;
2350									text-align: left !important;
2351								  }
2352							  
2353								  .accordian-content-card__time {
2354									flex-shrink: 0 !important;
2355									text-align: right !important;
2356								  }
2357								}
2358							  </style>
2359							  
2360							  <div class="accordian-content-card"
2361     style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; border-bottom: 1px solid #eee;">
2362
2363							  
2364								<!-- Row 1: Icon + Title + Collapse Icon -->
2365								<div class="accordian-content-card__top"
2366									 style="display: flex; align-items: center; justify-content: space-between; width: 100%;">
2367							  
2368								  <!-- Icon -->
2369								  <div class="accordian-content-card__ico" style="flex-shrink: 0;">
2370									<@ if(value1.type == 'code'){ @>
2371									  <img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px;">
2372									<@ } else { @>
2373									  <span class="material-icons text-primary" style="color:#6715FF; font-size: 24px;">
2374										<@ print(getCourseAssetIcon(value1.type))@>
2375									  </span>
2376									<@ } @>
2377								  </div>
2378							  
2379								  <!-- Title -->
2380								  <div class="accordian-content-card__title"
2381									   style="font-weight: 400; font-size: 14px; color: #333; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">
2382									<@print(value1.title)@>
2383								  </div>
2384							  
2385								  <!-- Collapse Icon (optional) -->
2386								  <div class="accordian-content-card__collapse" style="flex-shrink: 0;">
2387									<!-- Example placeholder, add real icon if needed -->
2388									<!-- <i class="fa fa-chevron-down" style="font-size: 16px;"></i> -->
2389								  </div>
2390								</div>
2391							  
2392								<!-- Row 2: Preview Button and Time -->
2393								<div class="accordian-content-card__bottom"
2394									 style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;">
2395							  
2396								  <!-- Preview Button -->
2397								  <div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;">
2398									<@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value1.id)){@>
2399									  <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value1.id)@>"
2400										 class="previewBtn"
2401										 style="font-size: 14px; font-weight: 500; text-decoration: none; color: #6715FF; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;">
2402										<span class="text-primary" style="color:#6715FF;">
2403										  <@ if(value1.type == 'video') { @> Watch <@ } else {@> Preview <@ } @>
2404										  <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#6715FF;"></i></span>
2405										</span>
2406									  </a>
2407									<@}@>
2408								  </div>
2409							  
2410								  <!-- Time -->
2411								  <div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;">
2412									<p class="text-primary course-asset-time"
2413									   style="font-size: 14px; font-weight: 500; color:#6715FF !important; margin: 0;">
2414									  <@ if(value1.duration && value1.duration > 0) { @>
2415										<@ print(millisecondsToHHMMSSStr(value1.duration)) @>
2416									  <@ } else { @>
2417										--
2418									  <@ } @>
2419									</p>
2420								  </div>
2421							  
2422								</div>
2423							  </div>
2424							  
2425							
2426                        </li>
2427                        <@ }); @>
2428                    <@ } else { @>
2429                        <li class="accordian-list__item" style="padding:0px 0px !important;">
2430							<div class="accordian-content-card"
2431							style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; border-bottom: 1px solid #eee;">
2432					   
2433						   <!-- Row 1: Icon + Title + Collapse Icon -->
2434						   <div class="accordian-content-card__top"
2435								style="display: flex; align-items: center; justify-content: space-between; width: 100%;">
2436						 
2437							   <!-- Icon -->
2438							   <div class="accordian-content-card__ico" style="flex-shrink: 0;">
2439								   <@ if(value.type == 'code'){ @>
2440									   <img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px;">
2441								   <@ } else { @>
2442									   <span class="material-icons text-primary" style="color:#6715FF; font-size: 24px;">
2443										   <@ print(getCourseAssetIcon(value.type))@>
2444									   </span>
2445								   <@ } @>
2446							   </div>
2447						 
2448							   <!-- Title -->
2449							   <div class="accordian-content-card__title"
2450									style="font-weight: 400; font-size: 14px; color: #333; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">
2451								   <@print(value.title)@>
2452							   </div>
2453						 
2454							   <!-- Collapse Icon (optional) -->
2455							   <div class="accordian-content-card__collapse" style="flex-shrink: 0;">
2456								   <!-- Example placeholder, add real icon if needed -->
2457								   <!-- <i class="fa fa-chevron-down" style="font-size: 16px;"></i> -->
2458							   </div>
2459						   </div>
2460						 
2461						   <!-- Row 2: Preview Button and Time -->
2462						   <div class="accordian-content-card__bottom"
2463								style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;">
2464						 
2465							   <!-- Preview Button -->
2466							   <div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;">
2467								   <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value.id)){@>
2468									   <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value.id)@>"
2469										  class="previewBtn"
2470										  style="font-size: 14px; font-weight: 500; text-decoration: none; color: #6715FF; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;">
2471										   <span class="text-primary" style="color:#6715FF;">
2472											   <@ if(value.type == 'video') { @> Watch <@ } else {@> Preview <@ } @>
2473											   <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#6715FF;"></i></span>
2474										   </span>
2475									   </a>
2476								   <@}@>
2477							   </div>
2478						 
2479							   <!-- Time -->
2480							   <div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;">
2481								   <p class="text-primary course-asset-time"
2482									  style="font-size: 14px; font-weight: 500; color:#6715FF !important; margin: 0;">
2483									   <@ if(value.duration && value.duration > 0) { @>
2484										   <@ print(millisecondsToHHMMSSStr(value.duration)) @>
2485									   <@ } else { @>
2486										   --
2487									   <@ } @>
2488								   </p>
2489							   </div>
2490						   </div>
2491					   </div>
2492                        </li>
2493                    <@ } @>
2494                </ul>
2495            
2496                <@ if(itemsCount > 5) { @>
2497                    <div style="text-align: center; margin-top: 10px;">
2498						<button style="background-color: #6715FF; color: white; padding: 4px 28px; border: none; cursor: pointer; font-size: 16px; border-radius: 24px;" 
2499						onclick="
2500							var parentAccordion = this.closest('.accordion-content');
2501							parentAccordion.style.maxHeight = 'none';
2502							this.closest('.accordian-content-block').querySelectorAll('.accordian-list__item').forEach(el => el.style.display = 'block'); 
2503							this.style.display = 'none';
2504						">
2505                            View All
2506                        </button>
2507                    </div>
2508                <@ } @>
2509            </div>
2510        </div>
2511    </div>
2512    <@ }); @>
2513    <@ if(item.length > 5) { @>
2514        <div style="text-align: center; margin-top: 10px;margin-bottom: 20px;">
2515            <button style="background-color: #6715FF; color: white; padding: 8px 32px; border: none; cursor: pointer; font-size: 16px; border-radius: 24px;" 
2516                onclick="document.querySelectorAll('.accordion-syllabus-item').forEach(el => el.style.display = 'block'); this.style.display = 'none';">
2517                View All Sessions
2518            </button>
2519        </div>
2520    <@ } @>
2521</div>
2522	</div>
2523</script>
2523
2524
2525
2526
2527<!--Olive Curriculum 8-->
2528<script>
2529	// Simple responsive positioning
2530	function updatePosition() {
2531		const element = document.getElementById('totalTimeElement');
2532		if(element){
2533		if (window.innerWidth > 768) {
2534			element.style.position = 'absolute';
2535			element.style.top = "5px";
2536			element.style.right = '122px';
2537		} else {
2538			element.style.position = 'static';
2539			element.style.margin = '0 0';
2540		}
2541		}
2542	}
2543	
2544	// Run on load and resize
2545	window.addEventListener('load', updatePosition);
2546	window.addEventListener('resize', updatePosition);
2547	</script>
2547
2548 
2548<script type="text/template" id="coursecurr-8-template">
2549	<div class="total-time" id="totalTimeElement" style="
2550    font-size: 18px;
2551    font-weight: 600;
2552    color: #064400;
2553    padding: 8px 12px;
2554    border-radius: 4px;
2555    white-space: nowrap;">
2556     <@if(summary.durations && summary.durations>0 && curriculumAssetInfo){@>
2557        <@print(millisecondsToHHMMSSStr(summary.durations))@>
2558    <@}@>
2559</div>
2560
2561<div class="accordion-syllabus" style="max-width:1000px !important">
2562    <@ $.each(item, function(index, value) { @>
2563    <div class="accordion-syllabus-item" style="<@ if(index >= 5) { @> display: none; <@ } @>">
2564        <header class="accordion-syllabus-header" style="background:#E5E5E5 !important; border-radius16px;box-shadow:none;padding:20px !important">
2565            <h4 class="accordion-syllabus-header__title">
2566                <span class="text-primary" style="font-size:18px ; font-weight:600; color:black;"> 
2567                    <@if(index < 9) {@>  
2568                        Week <@print(index + 1)@>:  
2569                    <@ } else {@>  
2570                        Week <@print(index + 1)@>:
2571                    <@ } @>  
2572                </span>
2573                <p style="font-size:18px ; font-weight:600;"><@print(value.title)@> <span class="text-primary show-sm" style="font-size: 14px;">
2574                    <@if(value && value.items){@>
2575                        <@ print(value.items.length) @> attachment(s) 
2576                    <@} else {@>
2577                        1 attachment(s)
2578                    <@}@>
2579                    <@if(value.moduleDurations && curriculumAssetInfo){@>
2580						• <@print(millisecondsToHHMMSSStr(value.moduleDurations))@>
2581					<@}@>
2582                </span></p>
2583            </h4>
2584			
2585            <div class="accordion-syllabus-header__info">
2586                <p class="text-primary hide-sm" style="color:#064400 !important;">
2587                    <@if(value && value.items){@>
2588                        <@ print(value.items.length) @> attachment(s) 
2589                    <@} else {@>
2590                        1 attachment(s)
2591                    <@}@>
2592                    <@if(value.moduleDurations && curriculumAssetInfo){@>
2593						• <@print(millisecondsToHHMMSSStr(value.moduleDurations))@>
2594					<@}@>
2595                </p>
2596                <div class="accordion-syllabus-header__icon text-primary">
2597                    <i class="fa fa-angle-left" aria-hidden="true" style="color:#064400;"></i>
2598                </div>
2599            </div>
2600        </header>
2601        <div class="accordion-content" style="filter:none;background:transparent !important;">
2602            <div class="accordian-content-block" style="background:transparent !important;box-shadow:none;padding:16px 66px 3px 69px !important;">
2603                <ul class="accordian-list">
2604                    <@ var itemsCount = value['items'] ? value['items'].length : 0; @>
2605                    <@ if(value['items'] && value['items'].length > 0) { @>
2606                        <@ $.each(value['items'], function(index1, value1) { @>
2607                        <li class="accordian-list__item" style="padding:0px 0px !important;<@ if(index1 >= 5) { @> display: none; <@ } @>"> 
2608							<style>
2609								@media (max-width: 768px) {
2610								  .accordian-content-card {
2611									flex-direction: column !important;
2612									align-items: stretch !important;
2613								  }
2614							  
2615								  .accordian-content-card__top {
2616									flex-direction: row !important;
2617									justify-content: space-between !important;
2618									align-items: center !important;
2619									width: 100% !important;
2620								  }
2621							  
2622								  .accordian-content-card__title {
2623									flex: 1 !important;
2624									margin: 0 10px !important;
2625									white-space: nowrap;
2626									overflow: hidden;
2627									text-overflow: ellipsis;
2628								  }
2629							  
2630								  .accordian-content-card__bottom {
2631									flex-direction: row !important;
2632									justify-content: space-between !important;
2633									align-items: center !important;
2634									width: 100% !important;
2635									margin-top: 6px !important;
2636								  }
2637							  
2638								  .accordian-content-card__link {
2639									flex: 1 !important;
2640									min-width: 0 !important;
2641									text-align: left !important;
2642								  }
2643							  
2644								  .accordian-content-card__time {
2645									flex-shrink: 0 !important;
2646									text-align: right !important;
2647								  }
2648								}
2649							  </style>
2650							  
2651							  <div class="accordian-content-card"
2652     style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; border-bottom: 1px solid #eee;">
2653
2654							  
2655								<!-- Row 1: Icon + Title + Collapse Icon -->
2656								<div class="accordian-content-card__top"
2657									 style="display: flex; align-items: center; justify-content: space-between; width: 100%;">
2658							  
2659								  <!-- Icon -->
2660								  <div class="accordian-content-card__ico" style="flex-shrink: 0;">
2661									<@ if(value1.type == 'code'){ @>
2662									  <img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px;">
2663									<@ } else { @>
2664									  <span class="material-icons text-primary" style="color:#064400; font-size: 24px;">
2665										<@ print(getCourseAssetIcon(value1.type))@>
2666									  </span>
2667									<@ } @>
2668								  </div>
2669							  
2670								  <!-- Title -->
2671								  <div class="accordian-content-card__title"
2672									   style="font-weight: 400; font-size: 14px; color: #333; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">
2673									<@print(value1.title)@>
2674								  </div>
2675							  
2676								  <!-- Collapse Icon (optional) -->
2677								  <div class="accordian-content-card__collapse" style="flex-shrink: 0;">
2678									<!-- Example placeholder, add real icon if needed -->
2679									<!-- <i class="fa fa-chevron-down" style="font-size: 16px;"></i> -->
2680								  </div>
2681								</div>
2682							  
2683								<!-- Row 2: Preview Button and Time -->
2684								<div class="accordian-content-card__bottom"
2685									 style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;">
2686							  
2687								  <!-- Preview Button -->
2688								  <div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;">
2689									<@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value1.id)){@>
2690									  <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value1.id)@>"
2691										 class="previewBtn"
2692										 style="font-size: 14px; font-weight: 500; text-decoration: none; color: #064400; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;">
2693										<span class="text-primary" style="color:#064400;">
2694										  <@ if(value1.type == 'video') { @> Watch <@ } else {@> Preview <@ } @>
2695										  <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#064400;"></i></span>
2696										</span>
2697									  </a>
2698									<@}@>
2699								  </div>
2700							  
2701								  <!-- Time -->
2702								  <div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;">
2703									<p class="text-primary course-asset-time"
2704									   style="font-size: 14px; font-weight: 500; color:#064400 !important; margin: 0;">
2705									  <@ if(value1.duration && value1.duration > 0) { @>
2706										<@ print(millisecondsToHHMMSSStr(value1.duration)) @>
2707									  <@ } else { @>
2708										--
2709									  <@ } @>
2710									</p>
2711								  </div>
2712							  
2713								</div>
2714							  </div>
2715							  
2716							
2717                        </li>
2718                        <@ }); @>
2719                    <@ } else { @>
2720                        <li class="accordian-list__item" style="padding:0px 0px !important;">
2721							<div class="accordian-content-card"
2722							style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; border-bottom: 1px solid #eee;">
2723					   
2724						   <!-- Row 1: Icon + Title + Collapse Icon -->
2725						   <div class="accordian-content-card__top"
2726								style="display: flex; align-items: center; justify-content: space-between; width: 100%;">
2727						 
2728							   <!-- Icon -->
2729							   <div class="accordian-content-card__ico" style="flex-shrink: 0;">
2730								   <@ if(value.type == 'code'){ @>
2731									   <img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px;">
2732								   <@ } else { @>
2733									   <span class="material-icons text-primary" style="color:#064400; font-size: 24px;">
2734										   <@ print(getCourseAssetIcon(value.type))@>
2735									   </span>
2736								   <@ } @>
2737							   </div>
2738						 
2739							   <!-- Title -->
2740							   <div class="accordian-content-card__title"
2741									style="font-weight: 400; font-size: 14px; color: #333; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">
2742								   <@print(value.title)@>
2743							   </div>
2744						 
2745							   <!-- Collapse Icon (optional) -->
2746							   <div class="accordian-content-card__collapse" style="flex-shrink: 0;">
2747								   <!-- Example placeholder, add real icon if needed -->
2748								   <!-- <i class="fa fa-chevron-down" style="font-size: 16px;"></i> -->
2749							   </div>
2750						   </div>
2751						 
2752						   <!-- Row 2: Preview Button and Time -->
2753						   <div class="accordian-content-card__bottom"
2754								style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;">
2755						 
2756							   <!-- Preview Button -->
2757							   <div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;">
2758								   <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value.id)){@>
2759									   <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value.id)@>"
2760										  class="previewBtn"
2761										  style="font-size: 14px; font-weight: 500; text-decoration: none; color: #064400; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;">
2762										   <span class="text-primary" style="color:#064400;">
2763											   <@ if(value.type == 'video') { @> Watch <@ } else {@> Preview <@ } @>
2764											   <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#064400;"></i></span>
2765										   </span>
2766									   </a>
2767								   <@}@>
2768							   </div>
2769						 
2770							   <!-- Time -->
2771							   <div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;">
2772								   <p class="text-primary course-asset-time"
2773									  style="font-size: 14px; font-weight: 500; color:#064400 !important; margin: 0;">
2774									   <@ if(value.duration && value.duration > 0) { @>
2775										   <@ print(millisecondsToHHMMSSStr(value.duration)) @>
2776									   <@ } else { @>
2777										   --
2778									   <@ } @>
2779								   </p>
2780							   </div>
2781						   </div>
2782					   </div>
2783                        </li>
2784                    <@ } @>
2785                </ul>
2786            
2787                <@ if(itemsCount > 5) { @>
2788                    <div style="text-align: center; margin-top: 10px;">
2789						<button style="background-color: #064400; color: white; padding: 4px 28px; border: none; cursor: pointer; font-size: 16px; border-radius: 24px;" 
2790						onclick="
2791							var parentAccordion = this.closest('.accordion-content');
2792							parentAccordion.style.maxHeight = 'none';
2793							this.closest('.accordian-content-block').querySelectorAll('.accordian-list__item').forEach(el => el.style.display = 'block'); 
2794							this.style.display = 'none';
2795						">
2796                            View All
2797                        </button>
2798                    </div>
2799                <@ } @>
2800            </div>
2801        </div>
2802    </div>
2803    <@ }); @>
2804    <@ if(item.length > 5) { @>
2805        <div style="text-align: center; margin-top: 10px;margin-bottom: 20px;">
2806            <button style="background-color: #064400; color: white; padding: 8px 32px; border: none; cursor: pointer; font-size: 16px; border-radius: 24px;" 
2807                onclick="document.querySelectorAll('.accordion-syllabus-item').forEach(el => el.style.display = 'block'); this.style.display = 'none';">
2808                View All Sessions
2809            </button>
2810        </div>
2811    <@ } @>
2812</div>
2813	</div>
2814</script>
2814
2815
2816
2817
2818<!--Dusk Curriculum 9-->
2819<script>
2820	// Simple responsive positioning
2821	function updatePosition() {
2822		const element = document.getElementById('totalTimeElement');
2823		if(element){
2824		if (window.innerWidth > 768) {
2825			element.style.position = 'absolute';
2826			element.style.top = "5px";
2827			element.style.right = '122px';
2828		} else {
2829			element.style.position = 'static';
2830			element.style.margin = '0 0';
2831		}
2832		}
2833	}
2834	
2835	// Run on load and resize
2836	window.addEventListener('load', updatePosition);
2837	window.addEventListener('resize', updatePosition);
2838	</script>
2838
2839 
2839<script>
2840	// Simple responsive positioning
2841	function updatePosition() {
2842		const element = document.getElementById('totalTimeElement');
2843		if(element){
2844		if (window.innerWidth > 768) {
2845			element.style.position = 'absolute';
2846			element.style.top = "5px";
2847			element.style.right = '122px';
2848		} else {
2849			element.style.position = 'static';
2850			element.style.margin = '0 0';
2851		}
2852		}
2853	}
2854	
2855	// Run on load and resize
2856	window.addEventListener('load', updatePosition);
2857	window.addEventListener('resize', updatePosition);
2858	</script>
2858
2859 
2859<script type="text/template" id="coursecurr-9-template">
2860	<div class="total-time" id="totalTimeElement" style="
2861    font-size: 18px;
2862    font-weight: 600;
2863    color: #282400;
2864    padding: 8px 12px;
2865    border-radius: 4px;
2866    white-space: nowrap;">
2867     <@if(summary.durations && summary.durations>0 && curriculumAssetInfo){@>
2868        <@print(millisecondsToHHMMSSStr(summary.durations))@>
2869    <@}@>
2870</div>
2871
2872<div class="accordion-syllabus" style="max-width:1000px !important">
2873    <@ $.each(item, function(index, value) { @>
2874    <div class="accordion-syllabus-item" style="<@ if(index >= 5) { @> display: none; <@ } @>">
2875        <header class="accordion-syllabus-header" style="background:#F5F5F5 !important; border-radius:8px;box-shadow:none;padding:20px !important">
2876            <h4 class="accordion-syllabus-header__title">
2877                <span class="text-primary" style="font-size:18px ; font-weight:600; color:black;"> 
2878                    <@if(index < 9) {@>  
2879                        Week <@print(index + 1)@>:  
2880                    <@ } else {@>  
2881                        Week <@print(index + 1)@>:
2882                    <@ } @>  
2883                </span>
2884                <p style="font-size:18px ; font-weight:600;"><@print(value.title)@> <span class="text-primary show-sm" style="font-size: 14px;">
2885                    <@if(value && value.items){@>
2886                        <@ print(value.items.length) @> attachment(s) 
2887                    <@} else {@>
2888                        1 attachment(s)
2889                    <@}@>
2890                    <@if(value.moduleDurations && curriculumAssetInfo){@>
2891						• <@print(millisecondsToHHMMSSStr(value.moduleDurations))@>
2892					<@}@>
2893                </span></p>
2894            </h4>
2895			
2896            <div class="accordion-syllabus-header__info">
2897                <p class="text-primary hide-sm" style="color:#282400 !important;">
2898                    <@if(value && value.items){@>
2899                        <@ print(value.items.length) @> attachment(s) 
2900                    <@} else {@>
2901                        1 attachment(s)
2902                    <@}@>
2903                    <@if(value.moduleDurations && curriculumAssetInfo){@>
2904						• <@print(millisecondsToHHMMSSStr(value.moduleDurations))@>
2905					<@}@>
2906                </p>
2907                <div class="accordion-syllabus-header__icon text-primary">
2908                    <i class="fa fa-angle-left" aria-hidden="true" style="color:#282400;"></i>
2909                </div>
2910            </div>
2911        </header>
2912        <div class="accordion-content" style="filter:none;background:transparent !important;">
2913            <div class="accordian-content-block" style="background:transparent !important;box-shadow:none;padding:16px 66px 3px 69px !important;">
2914                <ul class="accordian-list">
2915                    <@ var itemsCount = value['items'] ? value['items'].length : 0; @>
2916                    <@ if(value['items'] && value['items'].length > 0) { @>
2917                        <@ $.each(value['items'], function(index1, value1) { @>
2918                        <li class="accordian-list__item" style="padding:0px 0px !important;<@ if(index1 >= 5) { @> display: none; <@ } @>"> 
2919							<style>
2920								@media (max-width: 768px) {
2921								  .accordian-content-card {
2922									flex-direction: column !important;
2923									align-items: stretch !important;
2924								  }
2925							  
2926								  .accordian-content-card__top {
2927									flex-direction: row !important;
2928									justify-content: space-between !important;
2929									align-items: center !important;
2930									width: 100% !important;
2931								  }
2932							  
2933								  .accordian-content-card__title {
2934									flex: 1 !important;
2935									margin: 0 10px !important;
2936									white-space: nowrap;
2937									overflow: hidden;
2938									text-overflow: ellipsis;
2939								  }
2940							  
2941								  .accordian-content-card__bottom {
2942									flex-direction: row !important;
2943									justify-content: space-between !important;
2944									align-items: center !important;
2945									width: 100% !important;
2946									margin-top: 6px !important;
2947								  }
2948							  
2949								  .accordian-content-card__link {
2950									flex: 1 !important;
2951									min-width: 0 !important;
2952									text-align: left !important;
2953								  }
2954							  
2955								  .accordian-content-card__time {
2956									flex-shrink: 0 !important;
2957									text-align: right !important;
2958								  }
2959								}
2960							  </style>
2961							  
2962							  <div class="accordian-content-card"
2963     style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; border-bottom: 1px solid #eee;">
2964
2965							  
2966								<!-- Row 1: Icon + Title + Collapse Icon -->
2967								<div class="accordian-content-card__top"
2968									 style="display: flex; align-items: center; justify-content: space-between; width: 100%;">
2969							  
2970								  <!-- Icon -->
2971								  <div class="accordian-content-card__ico" style="flex-shrink: 0;">
2972									<@ if(value1.type == 'code'){ @>
2973									  <img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px;">
2974									<@ } else { @>
2975									  <span class="material-icons text-primary" style="color:#282400; font-size: 24px;">
2976										<@ print(getCourseAssetIcon(value1.type))@>
2977									  </span>
2978									<@ } @>
2979								  </div>
2980							  
2981								  <!-- Title -->
2982								  <div class="accordian-content-card__title"
2983									   style="font-weight: 400; font-size: 14px; color: #333; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">
2984									<@print(value1.title)@>
2985								  </div>
2986							  
2987								  <!-- Collapse Icon (optional) -->
2988								  <div class="accordian-content-card__collapse" style="flex-shrink: 0;">
2989									<!-- Example placeholder, add real icon if needed -->
2990									<!-- <i class="fa fa-chevron-down" style="font-size: 16px;"></i> -->
2991								  </div>
2992								</div>
2993							  
2994								<!-- Row 2: Preview Button and Time -->
2995								<div class="accordian-content-card__bottom"
2996									 style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;">
2997							  
2998								  <!-- Preview Button -->
2999								  <div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;">
3000									<@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value1.id)){@>
3001									  <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value1.id)@>"
3002										 class="previewBtn"
3003										 style="font-size: 14px; font-weight: 500; text-decoration: none; color: #282400; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;">
3004										<span class="text-primary" style="color:#282400;">
3005										  <@ if(value1.type == 'video') { @> Watch <@ } else {@> Preview <@ } @>
3006										  <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#282400;"></i></span>
3007										</span>
3008									  </a>
3009									<@}@>
3010								  </div>
3011							  
3012								  <!-- Time -->
3013								  <div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;">
3014									<p class="text-primary course-asset-time"
3015									   style="font-size: 14px; font-weight: 500; color:#282400 !important; margin: 0;">
3016									  <@ if(value1.duration && value1.duration > 0) { @>
3017										<@ print(millisecondsToHHMMSSStr(value1.duration)) @>
3018									  <@ } else { @>
3019										--
3020									  <@ } @>
3021									</p>
3022								  </div>
3023							  
3024								</div>
3025							  </div>
3026							  
3027							
3028                        </li>
3029                        <@ }); @>
3030                    <@ } else { @>
3031                        <li class="accordian-list__item" style="padding:0px 0px !important;">
3032							<div class="accordian-content-card"
3033							style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; border-bottom: 1px solid #eee;">
3034					   
3035						   <!-- Row 1: Icon + Title + Collapse Icon -->
3036						   <div class="accordian-content-card__top"
3037								style="display: flex; align-items: center; justify-content: space-between; width: 100%;">
3038						 
3039							   <!-- Icon -->
3040							   <div class="accordian-content-card__ico" style="flex-shrink: 0;">
3041								   <@ if(value.type == 'code'){ @>
3042									   <img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px;">
3043								   <@ } else { @>
3044									   <span class="material-icons text-primary" style="color:#282400; font-size: 24px;">
3045										   <@ print(getCourseAssetIcon(value.type))@>
3046									   </span>
3047								   <@ } @>
3048							   </div>
3049						 
3050							   <!-- Title -->
3051							   <div class="accordian-content-card__title"
3052									style="font-weight: 400; font-size: 14px; color: #333; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">
3053								   <@print(value.title)@>
3054							   </div>
3055						 
3056							   <!-- Collapse Icon (optional) -->
3057							   <div class="accordian-content-card__collapse" style="flex-shrink: 0;">
3058								   <!-- Example placeholder, add real icon if needed -->
3059								   <!-- <i class="fa fa-chevron-down" style="font-size: 16px;"></i> -->
3060							   </div>
3061						   </div>
3062						 
3063						   <!-- Row 2: Preview Button and Time -->
3064						   <div class="accordian-content-card__bottom"
3065								style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;">
3066						 
3067							   <!-- Preview Button -->
3068							   <div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;">
3069								   <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value.id)){@>
3070									   <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value.id)@>"
3071										  class="previewBtn"
3072										  style="font-size: 14px; font-weight: 500; text-decoration: none; color: #282400; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;">
3073										   <span class="text-primary" style="color:#282400;">
3074											   <@ if(value.type == 'video') { @> Watch <@ } else {@> Preview <@ } @>
3075											   <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#282400;"></i></span>
3076										   </span>
3077									   </a>
3078								   <@}@>
3079							   </div>
3080						 
3081							   <!-- Time -->
3082							   <div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;">
3083								   <p class="text-primary course-asset-time"
3084									  style="font-size: 14px; font-weight: 500; color:#282400 !important; margin: 0;">
3085									   <@ if(value.duration && value.duration > 0) { @>
3086										   <@ print(millisecondsToHHMMSSStr(value.duration)) @>
3087									   <@ } else { @>
3088										   --
3089									   <@ } @>
3090								   </p>
3091							   </div>
3092						   </div>
3093					   </div>
3094                        </li>
3095                    <@ } @>
3096                </ul>
3097            
3098                <@ if(itemsCount > 5) { @>
3099                    <div style="text-align: center; margin-top: 10px;">
3100						<button style="background-color: #282400; color: white; padding: 4px 28px; border: none; cursor: pointer; font-size: 16px; border-radius: 24px;" 
3101						onclick="
3102							var parentAccordion = this.closest('.accordion-content');
3103							parentAccordion.style.maxHeight = 'none';
3104							this.closest('.accordian-content-block').querySelectorAll('.accordian-list__item').forEach(el => el.style.display = 'block'); 
3105							this.style.display = 'none';
3106						">
3107                            View All
3108                        </button>
3109                    </div>
3110                <@ } @>
3111            </div>
3112        </div>
3113    </div>
3114    <@ }); @>
3115    <@ if(item.length > 5) { @>
3116        <div style="text-align: center; margin-top: 10px;margin-bottom: 20px;">
3117            <button style="background-color: #282400; color: white; padding: 8px 32px; border: none; cursor: pointer; font-size: 16px; border-radius: 24px;" 
3118                onclick="document.querySelectorAll('.accordion-syllabus-item').forEach(el => el.style.display = 'block'); this.style.display = 'none';">
3119                View All Sessions
3120            </button>
3121        </div>
3122    <@ } @>
3123</div>
3124	</div>
3125</script>
3125
3126
3127
3128
3129
3130
3131
3132<!-- Feedback Template First -->
3133<script type="text/template" id="widget-1-template">
3134<div class="column full feedbackContainer feedback1 spectre">
3135<@if(msg){@>
3136	<h4 style="letter-spacing: 2px; text-align: center;"><@print(msg)@></h4>
3137<@}else{@>
3138<div class="avgratingbox">
3139  <div class="flex-row" >
3140        <div class="is-box-2" >
3141           <p style="color: rgb(247, 247, 247); font-weight: 700!important; font-size: 40px!important; text-align: center; letter-spacing: 3px; padding-bottom: 0px; margin-bottom: 0px; line-height: 1; margin-top: 0px;"> 
3142			<@ if(ratings && ratings.avgRating) {@>
3143				<@ print(parseFloat(ratings.avgRating.toFixed(1))) @>
3144			<@}else{@>
3145				0
3146			<@}@>
3147		  </p>
3148          <h5 class="ratings1" style="text-align: center; margin-bottom: 0px; margin-top: 0px; line-height: 1;">  
3149          <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@>
3150					<@if(ratings){@> 
3151						<@ if(ratings.avgRating >= ratingsSize) {@> 
3152							<i class="icon ion-android-star"></i>&nbsp; 
3153						<@ } else if(ratings.avgRating > ratingsSize-1 && ratings.avgRating < ratingsSize) { @> 
3154							<i class="icon ion-android-star-half"></i>&nbsp;
3155						<@ } else { @> 
3156							<i class="icon ion-android-star-outline"></i>&nbsp; 
3157						<@ } @>
3158					<@} else {@>
3159						<i class="icon ion-android-star-outline"></i>&nbsp;
3160					<@}@>		
3161		  <@}@>
3162          </h5>        
3163          <p style="margin: 10px 0 0 !important;text-align: center;line-height: 1;font-size: 30px!important;"><i class="fa-light fa-users t-white"></i> </p>
3164          <p style="margin-bottom: 10px; margin-top: 0px; font-size: 12px!important; letter-spacing: 1px; font-weight: 500!important; color: rgb(247, 247, 247); text-align: center;">
3165			Total <@ if(ratings){print(ratings.total) }else{0}@> Reviews 
3166		  </p>
3167        </div>
3168        <div class="is-box-9">
3169			<@ for (i = 0; i < 5; i++) {@>
3170				<div class="box7878"> 
3171            <div style="flex:1;">							
3172					<div class="meter <@print(ratingsPer[(parseInt(i)+1)+'-star'].cls)@> nostripes">
3173                  		<span style="width: <@print(ratingsPer[(parseInt(i)+1)+'-star'].rates)@>%"></span>
3174               		</div>	
3175            </div>
3176            <div id="ratingbox">
3177              <p class="ratings2" style=" line-height: 1;">  
3178				<@ for (ratingsSize = 5; ratingsSize >=1; ratingsSize--) {@>
3179						<@if(ratingsSize>i){@>
3180							<i class="fa fa-solid fa-star-sharp text-primary"></i>&nbsp;
3181						<@} else {@>
3182							<i class="fa fa-solid fa-star-sharp"></i>&nbsp;
3183						<@}@>
3184				<@}@>
3185               <span class="t-white">					
3186					<@ if(ratings && ratings.ratingsCount){print(ratings.ratingsCount[(parseInt(5)-i)+'-stars'])}else{0} @>
3187			   </span>
3188              </p>
3189
3190            </div>
3191          </div>
3192	  	<@}@>
3193        </div>        
3194  	</div>
3195</div>
3196	<div class="bg-secondary" style="padding:15px 15px;border-radius:10px;border-top-right-radius: 0;border-top-left-radius: 0;" >
3197		<p
3198			style="font-size: 16px!important; font-weight: 500!important; letter-spacing: 1px;" class="text-primary">
3199			Reviews
3200		</p>
3201
3202<div class="review-box" id="createCustomReview" style="display:none">
3203<div class="flex-row">
3204	<div class="is-box-2 centerbox">
3205		<div class="spectre">
3206			<figure data-initial="<@if(typeof SPUSER !== 'undefined'){print(SPUSER.email.substring(0, 1))}else{@>Me<@}@>" class="uppercase avatar avatar-lg figsize" >
3207				<img src="/s/profile/thumb" alt="" class="review-pic" onerror="profileImageError(this)" data-mhash="<@ if(typeof SPUSER !== 'undefined'){print(SPUSER.mhash)} @>">
3208			</figure>	
3209			<@if(typeof SPUSER !== 'undefined'){ @><p class="review-name"><@ print(SPUSER.name) @> </p><@ } @>
3210		</div>
3211	</div>
3212	<div class="is-box-10">
3213		<textarea rows="3" class="form-input"
3214			placeholder="Add your review here"></textarea>
3215		<div class="rating3">
3216			<p id="rating-stars">
3217				<@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> <i 
3218					class="fa fa-solid fa-star-sharp text-primary rating-star" data-value='<@- ratingsSize @>'></i> <@}@>
3219			</p>
3220
3221			<button class="btn btn-primary <@ if(typeof SPUSER !== 'undefined'){ print('createCustomReviewBtn') }else { print('loginBtn') } @>"
3222				data-reviewData="reviewlist"
3223				style="padding: 2px 28px; text-transform: uppercase; border-radius: 40px;">Post</button>
3224		</div>
3225	</div>
3226</div>
3227</div>		
3228	
3229	<div id="reviewlist">
3230	<@ $.each(items, function(index, item) { @>
3231	<div class="review-box reviewcontainer <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id)	{ @>selfreview<@ } @>">
3232		<@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id)	{ @>
3233			<a class="btn btn-link float-right deleteCurrentReviewBtn" data-id="<@ print(item['_id']) @>"><i class="material-icons">delete</i></a>
3234		<@ } @>
3235		<div class="flex-row">
3236			<div class="is-box-2 centerbox">
3237				<div class="spectre">
3238					<@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id)	{ @>
3239						<figure data-initial="<@if(typeof SPUSER !== 'undefined'){print(SPUSER.email.substring(0, 1))}else{@>Me<@}@>" class="uppercase avatar avatar-lg figsize" >
3240							<img src="/s/profile/thumb" alt="" class="review-pic" onerror="profileImageError(this)" data-mhash="<@ if(typeof SPUSER !== 'undefined'){print(SPUSER.mhash)} @>">
3241					<@ } else {@>	
3242					<figure data-initial="<@ print(getUserInitial(null, item.userName)) @>" class="uppercase avatar avatar-lg figsize" >
3243						<img src="/s/profile/<@- item.userId @>/thumb" alt="" class="review-pic" onerror="profileImageError(this)" data-mhash="<@ item.mhash @>">	
3244					<@ } @>
3245					</figure>
3246					<p class="review-name"><@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id)	{ @><@ print(SPUSER.name) @><@ } else {@>	<@ print(item.userName) @><@ } @>	</p>
3247				</div>
3248			</div>
3249			<div class="is-box-10">
3250				<div class="rating4">
3251					<p>
3252						<@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> <@
3253						if(item.rating >= ratingsSize) {@> 
3254							<i class="fa fa-solid fa-star-sharp text-primary"></i>
3255						<@ } else if(item.rating > ratingsSize-1 && item.rating < ratingsSize) { @> 
3256							<i class="fa fa-solid fa-star-sharp-half text-primary"></i> 
3257						<@ } else { @> 
3258							<i class="fa fa-solid fa-star-sharp"></i> 
3259						<@}@> 
3260						<@ }@>
3261					</p>
3262					<p
3263						style="font-size: 13px!important; color: rgb(174, 170, 170); font-weight: 600!important; margin-top: 4px;">
3264						<time class="timestamp"
3265							datetime="<@ print((new Date(item.createdDate.$date)).toISOString()) @>"><@
3266							print(parseDate(item.createdDate.$date)) @></time>
3267					</p>
3268				</div>
3269				<p  class="reviewTxt"
3270					style="color: rgb(102, 102, 102); font-weight: 500!important; font-size: 13px!important; margin-bottom: 10px;"><@
3271					print(item.reviewtext.replace(/</g,'&lt;').replace(/>/g,'&gt;')) @></p>
3272				<div class="comment-tag">
3273					<@ if(item.isFeatured) {@><span>Featured Review </span><@ } @><@ if(item.isVerifiedPurchase) {@> <span>Verified Purchase </span><@ } @>
3274				</div>
3275			</div>
3276		</div>
3277	</div>
3278	<@ }); @>
3279	</div>	
3280	<button class="bg-primary loadMoreReviewsBtn reviewLMbtn" data-itemTemplate="feedback-1-item-template" data-reviewData="reviewlist" >Load More Reviews</button>
3281</div>
3282<@}@>
3283</script>
3283
3284
3285
3286<script type="text/template" id="feedback-1-item-template">
3287<div class="review-box reviewcontainer <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id)	{ @>selfreview<@ } @>"">
3288<@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id)	{ @>
3289	<a class="btn btn-link float-right deleteCurrentReviewBtn" data-id="<@ print(item['_id']) @>"><i class="material-icons">delete</i></a>
3290<@ } @>
3291<div class="flex-row">
3292	<div class="is-box-2 centerbox">
3293		<div class="spectre">
3294			<@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id)	{ @>
3295				<figure data-initial="<@if(typeof SPUSER !== 'undefined'){print(SPUSER.email.substring(0, 1))}else{@>Me<@}@>" class="avatar avatar-lg figsize" >
3296					<img src="/s/profile/thumb" alt="" class="review-pic" onerror="profileImageError(this)" data-mhash="<@ if(typeof SPUSER !== 'undefined'){print(SPUSER.mhash)} @>">
3297			<@ } else {@>	
3298			<figure data-initial="<@ print(getUserInitial(null, item.userName)) @>" class="avatar avatar-lg figsize" >
3299				<img src="/s/profile/<@- item.userId @>/thumb" alt="" class="review-pic" onerror="profileImageError(this)" data-mhash="<@ item.mhash @>">	
3300			<@ } @>
3301			</figure>
3302			<p class="review-name"><@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id)	{ @><@ print(SPUSER.name) @><@ } else {@>	<@ print(item.userName) @><@ } @>	</p>
3303		</div>
3304	</div>
3305	<div class="is-box-10">
3306		<div class="rating4">
3307			<p>
3308				<@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> <@
3309				if(item.rating >= ratingsSize) {@> 
3310					<i class="fa fa-solid fa-star-sharp text-primary"></i>
3311				<@ } else if(item.rating > ratingsSize-1 && item.rating < ratingsSize) { @> 
3312					<i class="fa fa-solid fa-star-sharp-half text-primary"></i>
3313				<@ } else { @> 
3314					<i class="fa fa-solid fa-star-sharp-outline"></i> 
3315				<@}@> 
3316				<@ } @>
3317			</p>
3318			<p
3319				style="font-size: 13px!important; color: rgb(174, 170, 170); font-weight: 600!important; margin-top: 4px;">
3320				<time class="timestamp"
3321					datetime="<@ print((new Date(item.createdDate.$date)).toISOString()) @>"><@
3322					print(parseDate(item.createdDate.$date)) @></time>
3323			</p>
3324		</div>
3325		<p  class="reviewTxt"
3326			style="color: rgb(102, 102, 102); font-weight: 500!important; font-size: 13px!important; margin-bottom: 10px;"><@
3327			print(item.reviewtext.replace(/</g,'&lt;').replace(/>/g,'&gt;')) @></p>
3328		<div class="comment-tag">
3329			<@ if(item.isFeatured) {@><span>Featured Review </span><@ } @><@ if(item.isVerifiedPurchase) {@> <span>Verified Purchase </span><@ } @>
3330		</div>
3331	</div>
3332</div>
3333</div>
3334</script>
3334
3335
3336
3337<!-- Feedback Template Second -->
3338<script type="text/template" id="feedback-2-template">
3339<div class="column full feedbackContainer feedback2 spectre <@- total @>" style="padding: 0;">
3340<@if(msg){@>
3341	<h4 style="letter-spacing: 2px; text-align: center;"><@print(msg)@></h4>
3342<@}else{@>
3343<@ if(total > 0 && ratings && ratings.avgRating) {@>
3344<div class="avgratingbox">
3345<div class="column third">
3346   <div class="is-card avgRatingContainer" >
3347      <div class="avgRatingInnerContainer">
3348         <h3 style="font-weight: 800; font-size: 12px; line-height: 1.3; margin-bottom: 0px;">Customer ratings</h3>
3349         <div  style="display: flex; flex-direction: row; align-items: center; justify-content: center;">
3350            <i class="icon ion-android-star text-primary" style="font-size: 80px;"></i>
3351            <div style="margin-left: 25px;">
3352               <span style="display: flex; justify-content: flex-start; align-items: baseline;">
3353                  <h3 style="margin-top: 0px; margin-bottom: 0px; font-size: 32px; font-weight: 800; color: var(--themeColor); line-height: 1.3;">
3354                     <@ if(ratings && ratings.avgRating) {@>
3355                     <@ print(parseFloat(ratings.avgRating.toFixed(1))) @>
3356                     <@}else{@>
3357                     0
3358                     <@}@>
3359                  </h3>
3360                  <p class="avgRatingReviews">/5</p>
3361               </span>
3362               <p class="avgRatingReviews">
3363                  <@ if(ratings){print(ratings.total) }else{0}@> reviews
3364               </p>
3365            </div>
3366         </div>
3367      </div>
3368   </div>
3369</div>
3370</div>
3371<@ } @>
3372<div id="feedback2Reviewlist" class="reviewslist">
3373   <@ $.each(items, function(index, item) { @>
3374   		<@ var template = _.template($("#feedback-2-item-template").html()); print(template({item: item})) @>
3375   <@ }); @>
3376   <@}@>
3377</div>
3378<div class="row clearfix">
3379   <div class="column full">
3380      <p class="loadMoreReviewsBtn reviewLMbtn text-primary" data-itemTemplate="feedback-2-item-template" data-reviewData="feedback2Reviewlist" style="text-align: right; font-size: 14px; font-weight: 500;cursor: pointer;line-height: 1.5;display: none;">
3381         View more
3382      </p>
3383   </div>
3384</div>
3385</script>
3385
3386
3387<script type="text/template" id="feedback-2-item-template">
3388	<div class="column third reviewcontainer <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id)	{ @>selfreview<@ } @>">
3389      <div class="is-card avgRatingContainer">
3390         <div style="text-align: center; display: flex; flex-direction: column; align-items: flex-start;" >
3391			<@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id)	{ @>
3392				<a class="btn btn-link float-right deleteCurrentReviewBtn" data-id="<@ print(item['_id']) @>"><i class="material-icons">delete</i></a>
3393			<@ } @>
3394            <p class="reviewTxt" style="font-size: 14px; font-weight: 400; line-height: 1.5; margin-bottom: 25px; margin-top: 0px; min-height: 80px; max-height: 80px; overflow: hidden;">
3395   			<@ print(item.reviewtext.replace(/</g,'&lt;').replace(/>/g,'&gt;')) @>
3396   		 	</p>
3397			<div class="reviewerName">
3398           	<p style="font-size: 12px; font-weight: 500; line-height: 1.3;  text-align: left; padding-top: 0px; margin:0px;">
3399   				<@ print(item.userName) @>
3400   		 	</p></div>
3401			
3402			 <p style="margin: 0px;">
3403				<@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> 
3404					<@ if(item.rating >= ratingsSize) {@> 
3405						<i class="fa fa-solid fa-star-sharp text-primary"></i>
3406					<@ } else if(item.rating > ratingsSize-1 && item.rating < ratingsSize) { @> 
3407						<i class="fa fa-solid fa-star-sharp-half text-primary"></i> 
3408					<@ } @> 
3409				<@ }@>
3410			 </p>		
3411
3412      	 </div>
3413	  </div>	
3414   </div>
3415</script>
vendor: 1 bytes, line 3415
3415
3416<script type="text/template" id="feedback-2-createTemplate">
3417	<div data-cat="1" class="is-section is-box is-section-20" id="createCustomReview" style="display: none;" data-id="<@- parentId @>">
3418  <div class="is-boxes">
3419    <div class="is-box-centered">
3420      <div class="is-container container" style="max-width: 940px;">
3421	
3422		<div class="review-box review-add-box">
3423            <div class="is-container container is-content-800" >
3424               <div class="row clearfix" >
3425                  <div class="column full" >
3426                     <h1 style="text-align: center; font-size: 28px; line-height: 1.1; font-weight: 700; letter-spacing: 0px; color: var(--themeColor); margin-bottom: 44px;">Add a review</h1>
3427                  </div>
3428               </div>
3429               <div class="textarea-cont">
3430                  <div class="review-star text-primary" style="display: flex; flex-direction: row; align-items: center; padding-top: 0px; margin-top: 0px;">
3431					<span id="rating-stars">
3432                     <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> <i 
3433                        class="fa fa-solid fa-star-sharp rating-star" data-value='<@- ratingsSize @>'></i> <@}@>
3434					</span>
3435                  </div>
3436                  <textarea class="add-review-textarea" id="reviewText" style="background: transparent;width: 100%; border-width: 0px; padding-right: 28px; padding-bottom: 28px; min-height: 150px; font-size: 14px; font-weight: 500; line-height: 1.5; padding-top: 10px;" placeholder="Add your review here"></textarea>
3437                  <@ if(typeof SPUSER !== 'undefined' && SPUSER.name.length > 0)	{ @>
3438						<p style="font-weight: 400; font-size: 10px; line-height: 1.3; color: rgba(255, 255, 255, 0.5); margin-top: 0px;"><@ print(SPUSER.name) @></p>
3439				<@ } @>
3440               </div>
3441               <div  style="margin-top: 20px; display: flex; justify-content: flex-end;">
3442                  <button id="reviewSubmitBtn" class="btn btn-primary <@ if(typeof SPUSER !== 'undefined'){ print('createCustomReviewBtn') }else { print('loginBtn') } @>"
3443					data-reviewData="feedback2Reviewlist" disabled >Submit</button>
3444               </div>
3445            </div>
3446		</div>
3447		</div>
3448		</div>
3449	</div>
3450</div>
3451</script>
3451
3452
3453<!-- Vegas 4th feedback Template-->
3454
3455
3456<script type="text/template" id="feedback-4-template">
3457	<div class="column full feedbackContainer feedback2 spectre <@- total @>" style="padding: 0;">
3458	<@if(msg){@>
3459		<h4 style="letter-spacing: 2px; text-align: center;"><@print(msg)@></h4>
3460	<@}else{@>
3461	<@ if(total > 0 && ratings && ratings.avgRating) {@>
3462	<div class="avgratingbox">
3463	<div class="column third">
3464	   <div class="is-card avgRatingContainer" style="border-radius:16px !important ; padding:20px ;border:1px solid #E5E5E5 !important;" >
3465		  <div class="avgRatingInnerContainer">
3466			 <h3 style="font-weight: 800; font-size: 12px; line-height: 1.3; margin-bottom: 0px;">Customer ratings</h3>
3467			 <div  style="display: flex; flex-direction: row; align-items: center; justify-content: center;">
3468				<i class="icon ion-android-star text-primary" style="font-size: 80px;"></i>
3469				<div style="margin-left: 25px;">
3470				   <span style="display: flex; justify-content: flex-start; align-items: baseline;">
3471					  <h3 style="margin-top: 0px; margin-bottom: 0px; font-size: 32px; font-weight: 800; color: var(--themeColor); line-height: 1.3;">
3472						 <@ if(ratings && ratings.avgRating) {@>
3473						 <@ print(parseFloat(ratings.avgRating.toFixed(1))) @>
3474						 <@}else{@>
3475						 0
3476						 <@}@>
3477					  </h3>
3478					  <p class="avgRatingReviews">/5</p>
3479				   </span>
3480				   <p class="avgRatingReviews">
3481					  <@ if(ratings){print(ratings.total) }else{0}@> reviews
3482				   </p>
3483				</div>
3484			 </div>
3485		  </div>
3486	   </div>
3487	</div>
3488	</div>
3489	<@ } @>
3490	<div id="feedback4Reviewlist" class="reviewslist">
3491	   <@ $.each(items, function(index, item) { @>
3492			   <@ var template = _.template($("#feedback-4-item-template").html()); print(template({item: item})) @>
3493	   <@ }); @>
3494	   <@}@>
3495	</div>
3496	<div class="row clearfix">
3497	   <div class="column full" style="text-align: center;">
3498		  <a class="loadMoreReviewsBtn reviewLMbtn text-primary" data-itemTemplate="feedback-4-item-template" data-reviewData="feedback4Reviewlist" style="text-align: center; font-size: 16px; font-weight: 500;cursor: pointer;line-height: 1.5;display: none; background:#FB5607; color:white; padding:12px 28px; border-radius:24px;text-decoration:none;">
3499			View All Reviews
3500		  </a>
3501	   </div>
3502	</div>
3503	</script>
3503
3504	
3505	
3505<script type="text/template" id="feedback-4-item-template">
3506		<div class="column third reviewcontainer <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id)	{ @>selfreview<@ } @>">
3507		  <div class="is-card avgRatingContainer" style="border:1px solid #E5E5E5 !important; border-radius:16px !important;background:white; padding:20px; ">
3508			 <div style="text-align: center; display: flex; flex-direction: column; align-items: flex-start;" >
3509				<@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id)	{ @>
3510					<a  style="color:#FB5607 !important;" class="btn btn-link float-right deleteCurrentReviewBtn" data-id="<@ print(item['_id']) @>"><i class="material-icons">delete</i></a>
3511				<@ } @>
3512				<p class="reviewTxt" style="font-size: 14px; font-weight: 400; line-height: 1.5; margin-bottom: 25px; margin-top: 0px; min-height: 82px; max-height: 80px; overflow: hidden;">
3513				   <@ print(item.reviewtext.replace(/</g,'&lt;').replace(/>/g,'&gt;')) @>
3514					</p>
3515				<div class="reviewerName">
3516				   <p style="font-size: 12px; font-weight: 500; line-height: 1.3;  text-align: left; padding-top: 0px; margin:0px; opacity:0.5;">
3517					   <@ print(item.userName) @>
3518					</p></div>
3519				
3520				 <p style="margin: 0px;">
3521					<@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> 
3522						<@ if(item.rating >= ratingsSize) {@> 
3523							<i class="fa fa-solid fa-star-sharp text-primary" style="color:#FB5607 !important;"></i>
3524						<@ } else if(item.rating > ratingsSize-1 && item.rating < ratingsSize) { @> 
3525							<i class="fa fa-solid fa-star-sharp-half text-primary" style="color:#FB5607 !important;"></i> 
3526						<@ } @> 
3527					<@ }@>
3528				 </p>		
3529	
3530			   </div>
3531		  </div>	
3532	   </div>
3533	</script>
3533
3534	
3534<script type="text/template" id="feedback-4-createTemplate">
3535		<div data-cat="1" class="is-section is-box is-section-20" id="createCustomReview" style="display: none;" data-id="<@- parentId @>">
3536	  <div class="is-boxes">
3537		<div class="is-box-centered">
3538		  <div class="is-container container" style="max-width: 1200px;">
3539		
3540			<div class="review-box review-add-box">
3541				<div class="is-container container is-content-1200" >
3542				   <div class="row clearfix" >
3543					  <div class="column full" >
3544						 <h1 style="text-align: left; font-size: 32px; line-height: 1.1; font-weight: 600; letter-spacing: 0px; color: black; ">Add a review</h1>
3545					  </div>
3546				   </div>
3547				   <div class="textarea-cont">
3548					<div style="display:flex; gap:30px;">
3549						<div><h3 style="font-size:18px;font-weight:600;">Overall Rating</h3></div>
3550						<div class="review-star1 text-primary" 
3551						style="display: flex; flex-direction: row; align-items: center; padding-top: 0px; margin-top: 0px;margin-left:0px !important;margin:0px !important">
3552					   <span id="rating-stars" >
3553						   <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@>
3554							   <i class="fa fa-solid fa-star-sharp rating-star" 
3555								  data-value='<@- ratingsSize @>' 
3556								  style="width: 20px; height: 20px; text-align: center; flex-shrink: 0; margin: 0; padding: 0;"></i>
3557						   <@}@>
3558					   </span>
3559				   </div>
3560				   <style></style>
3561				   
3562				   
3563					</div>
3564					  <textarea class="add-review-textarea" id="reviewText" style="background:#E5E5E5;width: 100%; border: 1px solid #E5E5E5; padding-right: 28px; padding-bottom: 28px; min-height: 180px; font-size: 14px; font-weight: 500; line-height: 1.5; padding-top: 10px;border-radius:16px !important" placeholder="Add your review here"></textarea>
3565					  <@ if(typeof SPUSER !== 'undefined' && SPUSER.name.length > 0)	{ @>
3566							<p style="font-weight: 400; font-size: 10px; line-height: 1.3; color: rgba(255, 255, 255, 0.5); margin-top: 0px;"><@ print(SPUSER.name) @></p>
3567					<@ } @>
3568				   </div>
3569				   <div  style=" display: flex; justify-content: center;">
3570					  <button style="letter-spacing:0px !important ; background-color:#FB5607;padding:12px 28px !important;" id="reviewSubmitBtn" class="btn btn-primary <@ if(typeof SPUSER !== 'undefined'){ print('createCustomReviewBtn') }else { print('loginBtn') } @>"
3571						data-reviewData="feedback4Reviewlist" disabled >Submit</button>
3572				   </div>
3573				</div>
3574			</div>
3575			</div>
3576			</div>
3577		</div>
3578	</div>
3579	</script>
3579
3580	
3581
3582
3583
3584<!-- Blaze 5th feedback Template-->
3585<script type="text/template" id="feedback-5-template">
3586	<div class="column full feedbackContainer feedback2 spectre <@- total @>" style="padding: 0;">
3587	<@if(msg){@>
3588		<h4 style="letter-spacing: 2px; text-align: center;"><@print(msg)@></h4>
3589	<@}else{@>
3590	<@ if(total > 0 && ratings && ratings.avgRating) {@>
3591	<div class="avgratingbox">
3592	<div class="column third">
3593	   <div class="is-card avgRatingContainer" style="background:#232323; border-radius:0px;padding:21px;" >
3594		  <div class="avgRatingInnerContainer">
3595			 <h3 style="font-weight: 800; font-size: 12px; line-height: 1.3; margin-bottom: 0px;color:white;">Customer ratings</h3>
3596			 <div  style="display: flex; flex-direction: row; align-items: center; justify-content: center;">
3597				<i class="icon ion-android-star text-primary" style="font-size: 80px;color:rgb(216, 253, 70);"></i>
3598				<div style="margin-left: 25px;">
3599				   <span style="display: flex; justify-content: flex-start; align-items: baseline;">
3600					  <h3 style="margin-top: 0px; margin-bottom: 0px; font-size: 32px; font-weight: 800; color: rgb(216, 253, 70); line-height: 1.3;">
3601						 <@ if(ratings && ratings.avgRating) {@>
3602						 <@ print(parseFloat(ratings.avgRating.toFixed(1))) @>
3603						 <@}else{@>
3604						 0
3605						 <@}@>
3606					  </h3>
3607					  <p class="avgRatingReviews" style="color:white;">/5</p>
3608				   </span>
3609				   <p class="avgRatingReviews" style="color:white;">
3610					  <@ if(ratings){print(ratings.total) }else{0}@> reviews
3611				   </p>
3612				</div>
3613			 </div>
3614		  </div>
3615	   </div>
3616	</div>
3617	</div>
3618	<@ } @>
3619	<div id="feedback5Reviewlist" class="reviewslist">
3620	   <@ $.each(items, function(index, item) { @>
3621			   <@ var template = _.template($("#feedback-5-item-template").html()); print(template({item: item})) @>
3622	   <@ }); @>
3623	   <@}@>
3624	</div>
3625	<div class="row clearfix">
3626	   <div class="column full" style="text-align: center;">
3627		  <a class="loadMoreReviewsBtn reviewLMbtn text-primary" data-itemTemplate="feedback-5-item-template" data-reviewData="feedback5Reviewlist" style="text-align: center; font-size: 16px; font-weight: 500;cursor: pointer;line-height: 1.5;display: none; background:#D8FD46; color:black; padding:12px 28px; border-radius:0px;text-decoration:none;">
3628			View All Reviews
3629		  </a>
3630	   </div>
3631	</div>
3632	</script>
3632
3633	
3634	
3635	
3635<script type="text/template" id="feedback-5-item-template">
3636		<style>
3637			.template5-review .reviewTxt{
3638				color:white !important;
3639			}
3640			.template5-review .reviewerName p{
3641				color:white !important;
3642			}
3643		</style>
3644		<div class="column third reviewcontainer template5-review <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @> selfreview <@ } @>">
3645			<div class="is-card avgRatingContainer" style="border:1px solid #232323;padding:20px;">
3646				<div style="text-align: center; display: flex; flex-direction: column; align-items: flex-start;">
3647					<@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @>
3648						<a style="color:#D8FD46 !important;" class="btn btn-link float-right deleteCurrentReviewBtn" data-id="<@ print(item['_id']) @>">
3649							<i class="material-icons">delete</i>
3650						</a>
3651					<@ } @>
3652					<p class="reviewTxt" style="font-size: 14px; font-weight: 400; line-height: 1.5; margin-bottom: 25px; margin-top: 0px; min-height: 82px; max-height: 80px; overflow: hidden;">
3653						<@ print(item.reviewtext.replace(/</g,'&lt;').replace(/>/g,'&gt;')) @>
3654					</p>
3655					<div class="reviewerName">
3656						<p style="font-size: 12px; font-weight: 500; line-height: 1.3; text-align: left; padding-top: 0px; margin:0px; opacity:0.5; ">
3657							<@ print(item.userName) @>
3658						</p>
3659					</div>
3660	
3661					<p style="margin: 0px;">
3662						<@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) { @>
3663							<@ if(item.rating >= ratingsSize) { @>
3664								<i class="fa fa-solid fa-star-sharp text-primary" style="color:#D8FD46 !important;"></i>
3665							<@ } else if(item.rating > ratingsSize - 1 && item.rating < ratingsSize) { @>
3666								<i class="fa fa-solid fa-star-sharp-half text-primary" style="color:#D8FD46 !important;"></i>
3667							<@ } @>
3668						<@ } @>
3669					</p>
3670				</div>
3671			</div>
3672		</div>
3673	</script>
3673
3674	
3675	
3675<script type="text/template" id="feedback-5-createTemplate">
3676		<div data-cat="1" class="is-section is-box is-section-20" id="createCustomReview" style="display: none;" data-id="<@- parentId @>">
3677	  <div class="is-boxes">
3678		<div class="is-box-centered" style="background:#181818;">
3679		  <div class="is-container container" style="max-width: 1200px;">
3680		
3681			<div class="review-box review-add-box">
3682				<div class="is-container container is-content-1200" >
3683				   <div class="row clearfix" >
3684					  <div class="column full" >
3685						 <h1 style="text-align: left; font-size: 32px; line-height: 1.1; font-weight: 600; letter-spacing: 0px; color: white; ">Add a review</h1>
3686					  </div>
3687				   </div>
3688				   <div class="textarea-cont" style="background:transparent">
3689					<div style="display:flex; gap:30px;">
3690						<div><h3 style="font-size:18px;font-weight:600; color:white;">Overall Rating</h3></div>
3691						<div class="review-star text-primary" 
3692						style="display: flex; flex-direction: row; align-items: center; padding-top: 0px; margin-top: 0px;margin-left:0px !important;margin:0px !important">
3693					   <span id="rating-stars" >
3694						   <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@>
3695							   <i class="fa fa-solid fa-star-sharp rating-star" 
3696								  data-value='<@- ratingsSize @>' 
3697								  style="width: 20px; height: 20px; text-align: center; flex-shrink: 0; margin: 0; padding: 0;"></i>
3698						   <@}@>
3699					   </span>
3700				   </div>
3701				   
3702				   
3703					</div>
3704					  <textarea class="add-review-textarea" id="reviewText" style="color:white;background:#232323;width: 100%; border: 1px solid #636363; padding: 28px;  min-height: 180px; font-size: 14px; font-weight: 500; line-height: 1.5; padding-top: 10px;border-radius:0px !important" placeholder="Add your review here"></textarea>
3705					  <@ if(typeof SPUSER !== 'undefined' && SPUSER.name.length > 0)	{ @>
3706							<p style="font-weight: 400; font-size: 10px; line-height: 1.3; color: rgba(255, 255, 255, 0.5); margin-top: 0px;"><@ print(SPUSER.name) @></p>
3707					<@ } @>
3708				   </div>
3709				   <div  style=" display: flex; justify-content: center;margin-top:20px;">
3710					  <button style="letter-spacing:0px !important ; background-color:#D8FD46;padding:12px 28px !important; border-radius:0px !important; color:black;" id="reviewSubmitBtn" class="btn btn-primary <@ if(typeof SPUSER !== 'undefined'){ print('createCustomReviewBtn') }else { print('loginBtn') } @>"
3711						data-reviewData="feedback5Reviewlist" disabled >Submit</button>
3712				   </div>
3713				</div>
3714			</div>
3715			</div>
3716			</div>
3717		</div>
3718	</div>
3719	</script>
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735<!-- Nebula Feedback 6-->
3736
3737<script type="text/template" id="feedback-6-template">
3738	<div class="column full feedbackContainer feedback2 spectre <@- total @>" style="padding: 0;">
3739	<@if(msg){@>
3740		<h4 style="letter-spacing: 2px; text-align: center;"><@print(msg)@></h4>
3741	<@}else{@>
3742	<@ if(total > 0 && ratings && ratings.avgRating) {@>
3743	<div class="avgratingbox">
3744	<div class="column third">
3745	   <div class="is-card avgRatingContainer" style="border-radius:16px !important ; padding:20px ;border:1px solid #E5E5E5 !important;" >
3746		  <div class="avgRatingInnerContainer">
3747			 <h3 style="font-weight: 800; font-size: 12px; line-height: 1.3; margin-bottom: 0px;">Customer ratings</h3>
3748			 <div  style="display: flex; flex-direction: row; align-items: center; justify-content: center;">
3749				<i class="icon ion-android-star text-primary" style="font-size: 80px;    color: #6715FF !important;"></i>
3750				<div style="margin-left: 25px;">
3751				   <span style="display: flex; justify-content: flex-start; align-items: baseline;">
3752					  <h3 style="margin-top: 0px; margin-bottom: 0px; font-size: 32px; font-weight: 800;     color: #6715FF !important; line-height: 1.3;">
3753						 <@ if(ratings && ratings.avgRating) {@>
3754						 <@ print(parseFloat(ratings.avgRating.toFixed(1))) @>
3755						 <@}else{@>
3756						 0
3757						 <@}@>
3758					  </h3>
3759					  <p class="avgRatingReviews">/5</p>
3760				   </span>
3761				   <p class="avgRatingReviews">
3762					  <@ if(ratings){print(ratings.total) }else{0}@> reviews
3763				   </p>
3764				</div>
3765			 </div>
3766		  </div>
3767	   </div>
3768	</div>
3769	</div>
3770	<@ } @>
3771	<div id="feedback6Reviewlist" class="reviewslist">
3772	   <@ $.each(items, function(index, item) { @>
3773			   <@ var template = _.template($("#feedback-6-item-template").html()); print(template({item: item})) @>
3774	   <@ }); @>
3775	   <@}@>
3776	</div>
3777	<div class="row clearfix">
3778	   <div class="column full" style="text-align: center;">
3779		  <a class="loadMoreReviewsBtn reviewLMbtn text-primary" data-itemTemplate="feedback-6-item-template" data-reviewData="feedback6Reviewlist" style="text-align: center; font-size: 16px; font-weight: 500;cursor: pointer;line-height: 1.5;display: none; background:#6715FF; color:white; padding:12px 28px; border-radius:24px;text-decoration:none;">
3780			View All Reviews
3781		  </a>
3782	   </div>
3783	</div>
3784	</script>
3784
3785	
3786	
3786<script type="text/template" id="feedback-6-item-template">
3787		<div class="column third reviewcontainer <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id)	{ @>selfreview<@ } @>">
3788		  <div class="is-card avgRatingContainer" style="border:1px solid #E5E5E5 !important; border-radius:16px !important;background:white; padding:20px; ">
3789			 <div style="text-align: center; display: flex; flex-direction: column; align-items: flex-start;" >
3790				<@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id)	{ @>
3791					<a  style="color:#6715FF !important;" class="btn btn-link float-right deleteCurrentReviewBtn" data-id="<@ print(item['_id']) @>"><i class="material-icons">delete</i></a>
3792				<@ } @>
3793				<p class="reviewTxt" style="font-size: 14px; font-weight: 400; line-height: 1.5; margin-bottom: 25px; margin-top: 0px; min-height: 82px; max-height: 80px; overflow: hidden;">
3794				   <@ print(item.reviewtext.replace(/</g,'&lt;').replace(/>/g,'&gt;')) @>
3795					</p>
3796				<div class="reviewerName">
3797				   <p style="font-size: 12px; font-weight: 500; line-height: 1.3;  text-align: left; padding-top: 0px; margin:0px; opacity:0.5;">
3798					   <@ print(item.userName) @>
3799					</p></div>
3800				
3801				 <p style="margin: 0px;">
3802					<@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> 
3803						<@ if(item.rating >= ratingsSize) {@> 
3804							<i class="fa fa-solid fa-star-sharp text-primary" style="color:#6715FF !important;"></i>
3805						<@ } else if(item.rating > ratingsSize-1 && item.rating < ratingsSize) { @> 
3806							<i class="fa fa-solid fa-star-sharp-half text-primary" style="color:#6715FF !important;"></i> 
3807						<@ } @> 
3808					<@ }@>
3809				 </p>		
3810	
3811			   </div>
3812		  </div>	
3813	   </div>
3814	</script>
3814
3815	
3815<script type="text/template" id="feedback-6-createTemplate">
3816		<div data-cat="1" class="is-section is-box is-section-20" id="createCustomReview" style="display: none;" data-id="<@- parentId @>">
3817	  <div class="is-boxes">
3818		<div class="is-box-centered">
3819		  <div class="is-container container" style="max-width: 1200px;">
3820		
3821			<div class="review-box review-add-box">
3822				<div class="is-container container is-content-1200" >
3823				   <div class="row clearfix" >
3824					  <div class="column full" >
3825						 <h1 style="text-align: left; font-size: 32px; line-height: 1.1; font-weight: 600; letter-spacing: 0px; color: black; ">Add a review</h1>
3826					  </div>
3827				   </div>
3828				   <div class="textarea-cont" style="background:transparent">
3829					<div style="display:flex; gap:30px;">
3830						<div><h3 style="font-size:18px;font-weight:600;">Overall Rating</h3></div>
3831						<div class="review-star1 text-primary" 
3832						style="display: flex; flex-direction: row; align-items: center; padding-top: 0px; margin-top: 0px;margin-left:0px !important;margin:0px !important">
3833					   <span id="rating-stars" >
3834						   <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@>
3835							   <i class="fa fa-solid fa-star-sharp rating-star" 
3836								  data-value='<@- ratingsSize @>' 
3837								  style="width: 20px; height: 20px; text-align: center; flex-shrink: 0; margin: 0; padding: 0;"></i>
3838						   <@}@>
3839					   </span>
3840				   </div>
3841				   <style></style>
3842				   
3843				   
3844					</div>
3845					  <textarea class="add-review-textarea" id="reviewText" style="background:white;width: 100%; border: 1px solid #c3c0c0; padding-right: 28px; padding-bottom: 28px;padding-left:20px; min-height: 180px; font-size: 14px; font-weight: 500; line-height: 1.5; padding-top: 10px;border-radius:16px !important" placeholder="Add your review here"></textarea>
3846					  <@ if(typeof SPUSER !== 'undefined' && SPUSER.name.length > 0)	{ @>
3847							<p style="font-weight: 400; font-size: 10px; line-height: 1.3; color: grey; margin-top: 0px;"><@ print(SPUSER.name) @></p>
3848					<@ } @>
3849				   </div>
3850				   <div  style=" display: flex; justify-content: center;">
3851					  <button style="letter-spacing:0px !important ; background-color:#6715FF;padding:12px 28px !important;margin-top:30px;" id="reviewSubmitBtn" class="btn btn-primary <@ if(typeof SPUSER !== 'undefined'){ print('createCustomReviewBtn') }else { print('loginBtn') } @>"
3852						data-reviewData="feedback6Reviewlist" disabled >Submit</button>
3853				   </div>
3854				</div>
3855			</div>
3856			</div>
3857			</div>
3858		</div>
3859	</div>
3860	</script>
3860
3861
3862
3863
3864
3865
3866<!-- Olive Feedback 7-->
3867<script type="text/template" id="feedback-7-template">
3868	<div class="column full feedbackContainer feedback2 spectre <@- total @>" style="padding: 0;">
3869	<@if(msg){@>
3870		<h4 style="letter-spacing: 2px; text-align: center;"><@print(msg)@></h4>
3871	<@}else{@>
3872	<@ if(total > 0 && ratings && ratings.avgRating) {@>
3873	<div class="avgratingbox">
3874	<div class="column third">
3875	   <div class="is-card avgRatingContainer" style="border-radius:16px !important ; padding:20px ;border:1px solid #E5E5E5 !important;" >
3876		  <div class="avgRatingInnerContainer">
3877			 <h3 style="font-weight: 800; font-size: 12px; line-height: 1.3; margin-bottom: 0px;">Customer ratings</h3>
3878			 <div  style="display: flex; flex-direction: row; align-items: center; justify-content: center;">
3879				<i class="icon ion-android-star text-primary" style="font-size: 80px;    color: #064400 !important;"></i>
3880				<div style="margin-left: 25px;">
3881				   <span style="display: flex; justify-content: flex-start; align-items: baseline;">
3882					  <h3 style="margin-top: 0px; margin-bottom: 0px; font-size: 32px; font-weight: 800;     color: #064400 !important; line-height: 1.3;">
3883						 <@ if(ratings && ratings.avgRating) {@>
3884						 <@ print(parseFloat(ratings.avgRating.toFixed(1))) @>
3885						 <@}else{@>
3886						 0
3887						 <@}@>
3888					  </h3>
3889					  <p class="avgRatingReviews">/5</p>
3890				   </span>
3891				   <p class="avgRatingReviews">
3892					  <@ if(ratings){print(ratings.total) }else{0}@> reviews
3893				   </p>
3894				</div>
3895			 </div>
3896		  </div>
3897	   </div>
3898	</div>
3899	</div>
3900	<@ } @>
3901	<div id="feedback7Reviewlist" class="reviewslist">
3902	   <@ $.each(items, function(index, item) { @>
3903			   <@ var template = _.template($("#feedback-7-item-template").html()); print(template({item: item})) @>
3904	   <@ }); @>
3905	   <@}@>
3906	</div>
3907	<div class="row clearfix">
3908	   <div class="column full" style="text-align: center;">
3909		  <a class="loadMoreReviewsBtn reviewLMbtn text-primary" data-itemTemplate="feedback-7-item-template" data-reviewData="feedback7Reviewlist" style="text-align: center; font-size: 16px; font-weight: 500;cursor: pointer;line-height: 1.5;display: none; background:#064400; color:white; padding:12px 28px; border-radius:24px;text-decoration:none;">
3910			View All Reviews
3911		  </a>
3912	   </div>
3913	</div>
3914	</script>
3914
3915	
3916	
3916<script type="text/template" id="feedback-7-item-template">
3917		<div class="column third reviewcontainer <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id)	{ @>selfreview<@ } @>">
3918		  <div class="is-card avgRatingContainer" style="border:1px solid #E5E5E5 !important; border-radius:16px !important;background:white; padding:20px; ">
3919			 <div style="text-align: center; display: flex; flex-direction: column; align-items: flex-start;" >
3920				<@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id)	{ @>
3921					<a  style="color:#064400 !important;" class="btn btn-link float-right deleteCurrentReviewBtn" data-id="<@ print(item['_id']) @>"><i class="material-icons">delete</i></a>
3922				<@ } @>
3923				<p class="reviewTxt" style="font-size: 14px; font-weight: 400; line-height: 1.5; margin-bottom: 25px; margin-top: 0px; min-height: 82px; max-height: 80px; overflow: hidden;">
3924				   <@ print(item.reviewtext.replace(/</g,'&lt;').replace(/>/g,'&gt;')) @>
3925					</p>
3926				<div class="reviewerName">
3927				   <p style="font-size: 12px; font-weight: 500; line-height: 1.3;  text-align: left; padding-top: 0px; margin:0px; opacity:0.5;">
3928					   <@ print(item.userName) @>
3929					</p></div>
3930				
3931				 <p style="margin: 0px;">
3932					<@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> 
3933						<@ if(item.rating >= ratingsSize) {@> 
3934							<i class="fa fa-solid fa-star-sharp text-primary" style="color:#064400 !important;"></i>
3935						<@ } else if(item.rating > ratingsSize-1 && item.rating < ratingsSize) { @> 
3936							<i class="fa fa-solid fa-star-sharp-half text-primary" style="color:#064400 !important;"></i> 
3937						<@ } @> 
3938					<@ }@>
3939				 </p>		
3940	
3941			   </div>
3942		  </div>	
3943	   </div>
3944	</script>
3944
3945	
3945<script type="text/template" id="feedback-7-createTemplate">
3946		<div data-cat="1" class="is-section is-box is-section-20" id="createCustomReview" style="display: none;" data-id="<@- parentId @>">
3947	  <div class="is-boxes">
3948		<div class="is-box-centered">
3949		  <div class="is-container container" style="max-width: 1200px;">
3950		
3951			<div class="review-box review-add-box">
3952				<div class="is-container container is-content-1200" >
3953				   <div class="row clearfix" >
3954					  <div class="column full" >
3955						 <h1 style="text-align: left; font-size: 32px; line-height: 1.1; font-weight: 600; letter-spacing: 0px; color: black; ">Add a review</h1>
3956					  </div>
3957				   </div>
3958				   <div class="textarea-cont">
3959					<div style="display:flex; gap:30px;">
3960						<div><h3 style="font-size:18px;font-weight:600;">Overall Rating</h3></div>
3961						<div class="review-star1 text-primary" 
3962						style="display: flex; flex-direction: row; align-items: center; padding-top: 0px; margin-top: 0px;margin-left:0px !important;margin:0px !important">
3963					   <span id="rating-stars" >
3964						   <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@>
3965							   <i class="fa fa-solid fa-star-sharp rating-star" 
3966								  data-value='<@- ratingsSize @>' 
3967								  style="width: 20px; height: 20px; text-align: center; flex-shrink: 0; margin: 0; padding: 0;"></i>
3968						   <@}@>
3969					   </span>
3970				   </div>
3971				   <style></style>
3972				   
3973				   
3974					</div>
3975					  <textarea class="add-review-textarea" id="reviewText" style="background:#E5E5E5;width: 100%; border: 1px solid #E5E5E5; padding-right: 28px; padding-bottom: 28px;padding-left:20px; min-height: 180px; font-size: 14px; font-weight: 500; line-height: 1.5; padding-top: 10px;border-radius:16px !important" placeholder="Add your review here"></textarea>
3976					  <@ if(typeof SPUSER !== 'undefined' && SPUSER.name.length > 0)	{ @>
3977							<p style="font-weight: 400; font-size: 10px; line-height: 1.3; color: rgba(255, 255, 255, 0.5); margin-top: 0px;"><@ print(SPUSER.name) @></p>
3978					<@ } @>
3979				   </div>
3980				   <div  style=" display: flex; justify-content: center;">
3981					  <button style="letter-spacing:0px !important ; background-color:#064400;padding:12px 28px !important;" id="reviewSubmitBtn" class="btn btn-primary <@ if(typeof SPUSER !== 'undefined'){ print('createCustomReviewBtn') }else { print('loginBtn') } @>"
3982						data-reviewData="feedback7Reviewlist" disabled >Submit</button>
3983				   </div>
3984				</div>
3985			</div>
3986			</div>
3987			</div>
3988		</div>
3989	</div>
3990	</script>
3990
3991
3992
3993
3994
3995	<!--Dusk Feedback-8-->
3996	
3996<script type="text/template" id="feedback-8-template">
3997		<div class="column full feedbackContainer feedback2 spectre <@- total @>" style="padding: 0;">
3998		<@if(msg){@>
3999			<h4 style="letter-spacing: 2px; text-align: center;"><@print(msg)@></h4>
4000		<@}else{@>
4001		<@ if(total > 0 && ratings && ratings.avgRating) {@>
4002		<div class="avgratingbox">
4003		<div class="column third">
4004		   <div class="is-card avgRatingContainer" style="border-radius:16px !important ; padding:20px ;border:1px solid #E5E5E5 !important;background:#F5F5F5;" >
4005			  <div class="avgRatingInnerContainer">
4006				 <h3 style="font-weight: 800; font-size: 12px; line-height: 1.3; margin-bottom: 0px;">Customer ratings</h3>
4007				 <div  style="display: flex; flex-direction: row; align-items: center; justify-content: center;">
4008					<i class="icon ion-android-star text-primary" style="font-size: 80px;    color: #282400 !important;"></i>
4009					<div style="margin-left: 25px;">
4010					   <span style="display: flex; justify-content: flex-start; align-items: baseline;">
4011						  <h3 style="margin-top: 0px; margin-bottom: 0px; font-size: 32px; font-weight: 800;     color: #282400 !important; line-height: 1.3;">
4012							 <@ if(ratings && ratings.avgRating) {@>
4013							 <@ print(parseFloat(ratings.avgRating.toFixed(1))) @>
4014							 <@}else{@>
4015							 0
4016							 <@}@>
4017						  </h3>
4018						  <p class="avgRatingReviews">/5</p>
4019					   </span>
4020					   <p class="avgRatingReviews">
4021						  <@ if(ratings){print(ratings.total) }else{0}@> reviews
4022					   </p>
4023					</div>
4024				 </div>
4025			  </div>
4026		   </div>
4027		</div>
4028		</div>
4029		<@ } @>
4030		<div id="feedback8Reviewlist" class="reviewslist">
4031		   <@ $.each(items, function(index, item) { @>
4032				   <@ var template = _.template($("#feedback-8-item-template").html()); print(template({item: item})) @>
4033		   <@ }); @>
4034		   <@}@>
4035		</div>
4036		<div class="row clearfix">
4037		   <div class="column full" style="text-align: center;">
4038			  <a class="loadMoreReviewsBtn reviewLMbtn text-primary" data-itemTemplate="feedback-8-item-template" data-reviewData="feedback8Reviewlist" style="text-align: center; font-size: 16px; font-weight: 500;cursor: pointer;line-height: 1.5;display: none; background:#282400; color:white; padding:12px 28px; border-radius:24px;text-decoration:none;">
4039				View All Reviews
4040			  </a>
4041		   </div>
4042		</div>
4043		</script>
4043
4044		
4045		
4045<script type="text/template" id="feedback-8-item-template">
4046			<div class="column third reviewcontainer <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id)	{ @>selfreview<@ } @>">
4047			  <div class="is-card avgRatingContainer" style="border:1px solid #E5E5E5 !important; border-radius:16px !important;background:#F5F5F5; padding:20px; ">
4048				 <div style="text-align: center; display: flex; flex-direction: column; align-items: flex-start;" >
4049					<@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id)	{ @>
4050						<a  style="color:#282400 !important;" class="btn btn-link float-right deleteCurrentReviewBtn" data-id="<@ print(item['_id']) @>"><i class="material-icons">delete</i></a>
4051					<@ } @>
4052					<p class="reviewTxt" style="font-size: 14px; font-weight: 400; line-height: 1.5; margin-bottom: 25px; margin-top: 0px; min-height: 82px; max-height: 80px; overflow: hidden;">
4053					   <@ print(item.reviewtext.replace(/</g,'&lt;').replace(/>/g,'&gt;')) @>
4054						</p>
4055					<div class="reviewerName">
4056					   <p style="font-size: 12px; font-weight: 500; line-height: 1.3;  text-align: left; padding-top: 0px; margin:0px; opacity:0.5;">
4057						   <@ print(item.userName) @>
4058						</p></div>
4059					
4060					 <p style="margin: 0px;">
4061						<@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> 
4062							<@ if(item.rating >= ratingsSize) {@> 
4063								<i class="fa fa-solid fa-star-sharp text-primary" style="color:#282400 !important;"></i>
4064							<@ } else if(item.rating > ratingsSize-1 && item.rating < ratingsSize) { @> 
4065								<i class="fa fa-solid fa-star-sharp-half text-primary" style="color:#282400 !important;"></i> 
4066							<@ } @> 
4067						<@ }@>
4068					 </p>		
4069		
4070				   </div>
4071			  </div>	
4072		   </div>
4073		</script>
4073
4074		
4074<script type="text/template" id="feedback-8-createTemplate">
4075			<div data-cat="1" class="is-section is-box is-section-20" id="createCustomReview" style="display: none;" data-id="<@- parentId @>">
4076		  <div class="is-boxes">
4077			<div class="is-box-centered">
4078			  <div class="is-container container" style="max-width: 1200px;">
4079			
4080				<div class="review-box review-add-box">
4081					<div class="is-container container is-content-1200" >
4082					   <div class="row clearfix" >
4083						  <div class="column full" >
4084							 <h1 style="text-align: left; font-size: 32px; line-height: 1.1; font-weight: 600; letter-spacing: 0px; color: black; ">Add a review</h1>
4085						  </div>
4086					   </div>
4087					   <div class="textarea-cont">
4088						<div style="display:flex; gap:30px;">
4089							<div><h3 style="font-size:18px;font-weight:600;">Overall rating</h3></div>
4090							<div class="review-star1 text-primary" 
4091							style="display: flex; flex-direction: row; align-items: center; padding-top: 0px; margin-top: 0px;margin-left:0px !important;margin:0px !important">
4092						   <span id="rating-stars" >
4093							   <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@>
4094								   <i class="fa fa-solid fa-star-sharp rating-star" 
4095									  data-value='<@- ratingsSize @>' 
4096									  style="width: 20px; height: 20px; text-align: center; flex-shrink: 0; margin: 0; padding: 0;"></i>
4097							   <@}@>
4098						   </span>
4099					   </div>
4100					   <style></style>
4101					   
4102					   
4103						</div>
4104						  <textarea class="add-review-textarea" id="reviewText" style="background:#E5E5E5;width: 100%; border: 1px solid #E5E5E5; padding-right: 28px; padding-bottom: 28px;padding-left:20px; min-height: 180px; font-size: 14px; font-weight: 500; line-height: 1.5; padding-top: 10px;border-radius:16px !important" placeholder="Add your review here"></textarea>
4105						  <@ if(typeof SPUSER !== 'undefined' && SPUSER.name.length > 0)	{ @>
4106								<p style="font-weight: 400; font-size: 10px; line-height: 1.3; color: rgba(255, 255, 255, 0.5); margin-top: 0px;"><@ print(SPUSER.name) @></p>
4107						<@ } @>
4108					   </div>
4109					   <div  style=" display: flex; justify-content: center;">
4110						  <button style="letter-spacing:0px !important ; background-color:#282400;padding:12px 28px !important;" id="reviewSubmitBtn" class="btn btn-primary <@ if(typeof SPUSER !== 'undefined'){ print('createCustomReviewBtn') }else { print('loginBtn') } @>"
4111							data-reviewData="feedback8Reviewlist" disabled >Submit</button>
4112					   </div>
4113					</div>
4114				</div>
4115				</div>
4116				</div>
4117			</div>
4118		</div>
4119		</script>
4119
4120
4121
4122
4123<div class="spectre">
4124<div class="modal" id="reviewModal">
4125			<a href="javascript:void(0);" class="modal-overlay close"
4126				aria-label="Close"></a>	
4127			<div class="modal-container">
4128				<div class="modal-header">
4129					<a href="javascript:void(0);"
4130						class="close btn btn-clear float-right" aria-label="Close"></a>
4131					<div class="modal-title h5">Review</div>
4132				</div>
4133				<div class="modal-body" style="max-height: 90vh;padding-top: 0;">
4134				</div>
4135			</div>
4136			
4137			  
4138			  
4139</div>
4140
4141  
4142</div>
4143
4144
4145
4146
4147
4148	
4149
4150
4151
4152
4153
4154
4155
4156 
4157
4158<script>
4159	var created_date = `Created Date`;
4160	var uname_msg = `Name`;
4161	var email_msg = `Email`;
4162	var has_web_token = `Has Web Token`;
4163	var has_mobile_token = `Has Mobile Token`;
4164	var actions_msg = `Actions`;
4165	var delete_user = `Delete User`;
4166	var create_target_audience = `Create Target Audience`;
4167	var msg_now = `NOW`;
4168	var msg_now_2 = `Now`;
4169	var msg_scheduled = `SCHEDULED`;
4170	var msg_recurring = `RECURRING`;
4171	var msg_weeks = `weeks`;
4172	var msg_months = `month(s)`;
4173	var msg_days = `days`;
4174	var notification_screen = `Notification Screen`;
4175	var coursepackagelandingpage = `Course/Package landing page`;
4176	var search_course_name = `Search by course/package name`;
4177	var webinar_landing_page = `Webinar landing page`;
4178	var search_by_webinar_name = `Search by webinar name`;
4179	var categorypage = `Category Page`;
4180	var custompage = `Custom Page`;
4181	var blogpage = `Blog Page`;
4182	var customlink = `Custom Link`;
4183	var homepage_msg = `Homepage`;
4184	var search_category = `Search category`;
4185	var search_page_title = `Search by Page title`;
4186	var search_blog_title = `Search by Blog title`;
4187	var enter_the_link = `Enter the link`;
4188	var membership_page = `Membership page`;
4189	var pick_a_date = `Pick a date`;
4190	var pick_first_push_date = `Pick a first push date`;
4191	var every_msg = `Every`;
4192	var starting_msg = `Starting`;
4193	var msg_published = `Published`;
4194	var msg_unpublished = `Unpublished`;
4195	var msg_customize = `Customize`;
4196	var msg_edit = `Edit`;
4197	var msg_featured_image = `Featured Image`;
4198	var msg_preview = `Preview`;
4199	var msg_delete = `Delete`;
4200	var msg_unpublish = `Unpublish`;
4201	var msg_publish = `Publish  `;
4202	var msg_question= `questions`;
4203	var try_new_coding_assignment= `Try new coding assignment`;
4204	var change_enrollment_date = `Change Enrollment Date`;
4205	var change_expiry = `Change Expiry`;
4206	var change_remanining_time = `Change Remaining Time`;
4207	var remove_from_course = `Remove From Course`;
4208	var reset_course_progress = `Reset Course Progress`;
4209	var complete_report = `Complete Report`;
4210	var msg_progress = `Progress`;
4211	var timetaken = `Time Taken`;
4212	var msg_user_details = `User Details`;
4213	var graphy_platform_fees_note = `Amount after deducting Graphy platform fees. This does not include your payment gateway charges.`;
4214	var final_price_note = `Final payable price by learners`;
4215	var save_alert_message = `Save progress before moving forward.`;
4216	var no_chapter_alert_message = `Please add at least one chapter in the course.`;
4217	var download_msg = `Download`;
4218	var revoke_msg = `Revoke`;
4219	var yes_msg = `Yes`;
4220	var no_msg = `No`;
4221	var details_hover = `Details`;
4222	var hide_notification = `Hide Notification`;
4223	var notify_learners_hover = `Notify Learners`;
4224	var search_course_package = `Search Courses to add in this package.`;
4225	var bulk_delete = `Bulk Delete`;
4226	var scheduled_msg = `Scheduled`;
4227	var inprogress_msg = `In Progress`;
4228	var completed_msg = `Completed`;
4229	var yes_all_caps = `YES`;
4230	var no_all_caps = `NO`;
4231	var discount_msg = `Discount`;
4232	var max_discount = `Max Discount`;
4233	var min_cart = `Min Cart`;
4234	var delete_bookmark = `Delete Bookmark`;
4235	var view_question = `View question`;
4236	var msg_free = `Free`;
4237	var membership_expiration_note = `Membership will be canceled on next billing date.`;
4238	var msg_active = `Active`;
4239	var msg_inactive = `Inactive`;
4240	var delete_hover = `Delete`;
4241	var view_hover = `View`;
4242	var coursewise = `Course Wise`;
4243	var learner_wise = `Learner wise`;
4244	var segment_wise = `Segment wise`;
4245	var unregistered_msg = `Unregistered`;
4246	var target_audience_deleted = `Target Audience Deleted`;
4247	var courses_msg = `course(s)`;
4248	var learners_msg = `learner(s)`;
4249	var unregistered_learners = `Unregistered Learner`;
4250	var all_learners = `All Learners`;
4251	var course_wise_learners = `Course wise Learners`;
4252	var segment_wise_learners = `Segment wise Learners`;
4253	var with_token = `with token`;
4254	var segments_msg = `segments`;
4255	var add_users_msg = `Add Users`;
4256	var approx_msg = `Approx`;
4257	var revoke_cancellation_request = `Revoke Cancellation request.`;
4258	var remove_scheduled_membership_cancellation = `Remove Scheduled Membership Cancellation`;
4259	var schedule_to_stop_subscription = `Schedule to stop Subscription`;
4260	var stop_subscription = `Stop subscription`;
4261	var available_for_review_all_caps = `AVAILABLE FOR REVIEW`;
4262	var reviewed_all_caps = `REVIEWED`;
4263	var rejected_all_caps = `REJECTED`;
4264	var preview_code = `Preview Code`;
4265	var approve_msg = `Approve`;
4266	var reject_msg = `Reject`;
4267	var history_msg = `History`;
4268	var message_hover= `Message`;
4269	var remove_msg= `Remove`;
4270	var enroll_msg= `Enroll`;
4271	var change_validity= `Change Validity`;
4272	var learners_selected= `learner(s) selected`;
4273	var select_all_msg= `Select all`;
4274	var do_you_want_to_delete_course= `Do you really want to delete this course?`;
4275	var do_you_want_to_revoke_this_certificate= `Do you really want to revoke this certificate?`;
4276	var do_you_want_to_revoke_entry= `Do you really want to revoke this entry?`;
4277	var do_you_want_to_edit_enrollment_date= `Do you really want to edit enrollment date of all learners?`;
4278	var do_you_want_to_edit_enrollment_date_for_selected= `Do you really want to edit enrollment date of selected learners?`;
4279	var do_you_want_to_edit_course_validity= `Do you really want to edit course validity of all learners?`;
4280	var do_you_want_to_edit_course_validity_for_selected= `Do you really want to edit course validity of selected learners?`;
4281	var do_you_want_to_remove_selected= `Do you really want to remove selected learners?`;
4282	var do_you_want_to_remove_all= `Do you really want to remove all learners?`;
4283	var do_you_want_to_create_zip= `Do you really want to create zip for this course?`;
4284	var do_you_want_to_deactivate= `Do you really want to deactivate?`;
4285	var successfully_done_alert= `Successfully Done.`;
4286	var please_select_atleast_1_learner= `Please select atleast 1 learner !`;
4287	var on_msg= `On`;
4288	var single_correct_option = `Single Correct Option`;
4289	var multiple_correct_options = `Multiple Correct Options`;
4290	var numerical_Fill_in_the_Blank = `Numerical/Fill in the Blank`;
4291	var match_the_Column = `Match the Column`;
4292	var subjective = `Subjective`;
4293	var your_target_audience_appear= `Your target audience user(s) will appear here`;
4294	var your_upcoming_campaign= `Your upcoming campaign will appear here`;
4295	var status_msg= `Status`;
4296	var stop_campaign= `Stop Campaign`;
4297	var copy_campaign= `Copy Campaign`;
4298	var platform_fee_tax = `platform fees including taxes`;
4299	var pg_fees_taxes = `payment gateway fees including taxes`;
4300	var msg_quiz = `Quiz`;
4301	var msg_livetest = `Live test`;
4302	var msg_heading = `Heading`;
4303	var msg_text = `Text`;
4304	var msg_form = `Form`;
4305	var msg_live_class = `Live class`;
4306	var msg_live_class_rec = `live class recording`;
4307	var msg_code = `Code`;
4308	var msg_assignment = `Assignment`;
4309	var msg_added = `added`;
4310	var msg_about = `About`;
4311	var msg_year = `year`;
4312	var msg_month = `Month`;
4313	var msg_day = `day`;
4314	//var msg_hour = `hh`;
4315	//var msg_minute = `mm`;
4316	//var msg_seconds = `seconds`;
4317	var msg_month_l = `month`;
4318	var msg_day_l = `day`;
4319	var msg_hour_l = `hour`;
4320	var msg_minute_l = `minute`;
4321	var msg_second_l = `second`;
4322	var mobile_number=`Mobile Number`;
4323	var status_android =`Status (ANDROID)`;
4324	var status_ios =`Status (IOS)`;
4325	var delivery_time=`Delivery Time`;
4326	var sure_unhide=`Are you sure you want to unhide this course ?`;
4327	var become_a_partner=`Become a Partner`;
4328	var failed_msg=`Failed`;
4329	var sent_msg=`Sent`;
4330	var pending_msg=`Pending`;
4331	var running_msg=`Running`;
4332	var add_pricing_plan = `Add pricing plan`;
4333	var msg_add = `Add`;
4334	var of_msg = `of`;
4335	var items_msg = `items`
4336	var ago_msg = `ago`
4337	var items_msg = `items`;
4338	
4339	var january_msg = `January`;
4340	var february_msg = `February`;
4341	var march_msg = `March`;
4342	var april_msg = `April`;
4343	var may_msg = `May`;
4344	var june_msg = `June`;
4345	var july_msg = `July`;
4346	var august_msg = `August`;
4347	var september_msg = `September`;
4348	var october_msg = `October`;
4349	var november_msg = `November`;
4350	var december_msg = `December`;
4351	var sunday_msg = `Sunday`;
4352	var monday_msg = `Monday`;
4353	var tuesday_msg = `Tuesday`;
4354	var wednesday_msg = `Wednesday`;
4355	var thursday_msg = `Thursday`;
4356	var friday_msg = `Friday`;
4357	var saturday_msg = `Saturday`;
4358	var at_msg = `at`;
4359	var generate_outline = `Generate outline using AI`;
4360	var it_take_min = `It may take a min.`;
4361	var msg_ok = `OK`;
4362	var edit_pricing_plan = `Edit pricing plan`;
4363
4364</script>
4364
4365
4366
4367
4368
4369
4370
4371
4372<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/jquery-2.0.3.min.js"></script>
4372
4373
4374<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/underscore-min.js?v=1.9.1"></script>
4374
4375
4376<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/jquery.form.js"></script>
vendor: 1 bytes, line 4376
4376
4377<script async src="https://d502jbuhuh9wk.cloudfront.net/resources/js/jquery.noty.packaged.min.js"></script>
vendor: 1 bytes, line 4377
4377
4378<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/jquery-ui.min.js"></script>
vendor: 1 bytes, line 4378
4378
4379<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/jquery.timeago.js"></script>
vendor: 1 bytes, line 4379
4379
4380<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/js-webshim/minified/extras/modernizr-custom.js"></script>
vendor: 1 bytes, line 4380
4380
4381<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/jquery.datetimepicker.js"></script>
4381
4382
4383
4384
4385
4386
4387
4388
4389
4390<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/aes.js"></script>
vendor: 1 bytes, line 4390
4390
4391<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/mode-ecb-min.js"></script>
vendor: 1 bytes, line 4391
4391
4392<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/pad-nopadding-min.js"></script>
4392
4393
4394<!-- 
4394<script src="https://unpkg.com/@popperjs/core@2"></script>
vendor: 1 bytes, line 4394
4394
4395<script src="https://unpkg.com/tippy.js@6"></script>
4395 -->
4396<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/2.3.3/umd/popper.js" integrity="sha512-jSMYzs1Iebw2Uew+Y9karoqkqTDEzbqkdttIkHJKh3auQ6aGV7p8b7A3Yo9k/LsMvUFqWt5AV66hfo1OwH4Jjg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
vendor: 1 bytes, line 4396
4396
4397<script src="https://cdnjs.cloudflare.com/ajax/libs/tippy.js/6.0.0/tippy-bundle.umd.js"></script>
4397
4398
4399<script type="text/javascript">
4400	var passwordPolicyRequired = false;
4401	var checkoutV2 = true;
4402	var primaryFieldPhoneEnabled = false;
4403	var orgLanguageCode = "";
4404	var SPEERESCDN = "https://d502jbuhuh9wk.cloudfront.net";
4405</script>
4405
4406
4407	
4407<script type="text/javascript">
4408		var newCheckoutFlowParams = "FREE";
4409	</script>
4409
4410
4411<script src="https://d502jbuhuh9wk.cloudfront.net/staticfiles/resources/scripts/sutils_919c30bb7230024efec7b939763642a2.js"></script>
vendor: 1 bytes, line 4411
4411
4412<script src="https://d502jbuhuh9wk.cloudfront.net/staticfiles/resources/scripts/utils/dateUtils_f53456b03f1287667a7b24fb63b367ce.js"></script>
vendor: 1 bytes, line 4412
4412
4413<script type="text/javascript">
4414	// Make org object globally available for dateUtils
4415	window.org = window.org || {};
4416	window.org.currencyCode = "false"=='true'?'USD':'INR';
4417	var websiteV3Org = false;
4418	var orgCreatedDate = {"$date":"2026-01-12T14:16:34.079Z"};
4419</script>
4419
4420
4421	
4421<script src="https://d502jbuhuh9wk.cloudfront.net/staticfiles/resources/scripts/talk_b564486691065235006e186474078666.js"></script>
4421
4422
4423
4424
4425
4426
4427<script type="text/javascript">
4428	var trialExpired = "false";
4429	var planCancelled = "false";
4430	var isFreePlan = false;
4431	
4432</script>
vendor: 1 bytes, line 4432
4432
4433<script type="text/javascript" id="dsf239df">
4434	var ctx = "/s",
4435		isFirstLogin = "", cjs = CryptoJS;
4436		
4437	var defaultCoreColor = "#5755d9", theme1CoreColor = "#572b7a", theme2CoreColor = "#3f51b5", theme3CoreColor = "#009051", 
4438		theme4CoreColor = "#596439", theme5CoreColor = "#F0591D", theme6CoreColor = "#28a745", theme7CoreColor = "#1bbc9b", 
4439		theme8CoreColor = "#f38f20", apkId = "6231373436231373432363038663465653864613523630386634656538646135", theme9CoreColor = "#c0af01", theme10CoreColor = "#e8d3a4",
4440		webColor = defaultCoreColor,
4441		CFCDN = "https://d502jbuhuh9wk.cloudfront.net", mobileNotification = false, webNotification = false, 
4442		iosPlayVideo = false,
4443		chromeDrmPlayback = false,
4444		gaType = "ga4";
4445		
4446	
4447	
4448	$("#dsf239df").remove();
4449</script>
4449
4450
4451
4452
4453
4454
4455
4456
4457	
4458		<input type="hidden" id="orgCurrencyCode" value="USD" />
4459	
4460	
4461
4462
4463
4464	
4464<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/detect-private-browsing.js"></script>
4464
4465	
4465<script type="text/javascript">
4466	detectPrivateMode(
4467        function(is_private) {
4468            if(typeof is_private !== 'undefined' && is_private) {
4469            		$("input[name=privateMode]").val("private");
4470            }
4471        }
4472    );
4473	</script>
4473
4474
4475
4476
4477	
4478	
4479		
4479<script type="text/javascript"
4480			src="https://d502jbuhuh9wk.cloudfront.net/resources/js/intlTelInput.min.js"></script>
4480
4481		
4481<script type="text/javascript">
4482		
4483			var ipInfo = localStorage.getItem('ipInfo');
4484	        if(!ipInfo) {
4485	        	$.get("https://ipinfo.io", function() {}, "jsonp").always(function(resp) {
4486	        		if(resp) {
4487	        			var ipInfoStr = JSON.stringify(resp);
4488	    				var ipInfoField = document.getElementById("ipInfo");
4489	    				var countryCode = (resp.country) ? resp.country : "in";
4490				        sessionStorage.setItem('countryCode', countryCode);
4491						if('statusText' in resp) {
4492	    					if((resp['statusText'] !== 'error') && ('ip' in resp)) {
4493	    						localStorage.setItem('ipInfo', ipInfoStr);
4494	    						if(ipInfoField) {
4495	    							ipInfoField.value = ipInfoStr;
4496	    		        		}
4497							}
4498						}
4499			        	else if('ip' in resp) {
4500			        		localStorage.setItem('ipInfo', ipInfoStr);
4501			        		if(ipInfoField) {
4502			        			ipInfoField.value = ipInfoStr;
4503			        		}
4504		        		}
4505					}
4506	        	})
4507	        }
4508		
4509		  $("#sphone").intlTelInput({
4510		      initialCountry: "auto",
4511		      geoIpLookup: function(callback) {
4512		    	 var scountryCode = sessionStorage.getItem('countryCode');
4513		    	 
4514		    	 if(scountryCode !== null) {
4515		    		 callback(scountryCode);
4516		    	 }else {
4517		    		 $.get("https://ipinfo.io", function() {}, "jsonp").always(function(resp) {
4518				          var countryCode = (resp && resp.country) ? resp.country : "in";
4519				          callback(countryCode);
4520				          sessionStorage.setItem('countryCode', countryCode);
4521				        });
4522		    	 }
4523		      },
4524		      preferredCountries: ["in", "us"],
4525		      separateDialCode: true,
4526		      utilsScript: "/resources/js/intlUtils.js"
4527		    });
4528		  	
4529		  </script>
4529
4530	
4531
4532
4533
4534<div class="spectre">
4535
4536	
4537	
4538	
4539
4540	
4540<script type="text/javascript">
4541		if(top != self) {
4542		    //iframe
4543		    $(".toast").remove();
4544		}
4545	</script>
4545
4546	
4547	
4548</div>
4549
4550	
4550<script>
4551(function () {
4552    function openRegisterForm() {
4553        const btn = document.querySelector(
4554            'button.webinar-action-button[data-id="6965305fc8a87e6284abbda5"]'
4555        );
4556
4557        if (btn) {
4558            btn.click();
4559        } else {
4560            // Retry until Graphy finishes rendering
4561            setTimeout(openRegisterForm, 300);
4562        }
4563    }
4564
4565    window.addEventListener("load", function () {
4566        setTimeout(openRegisterForm, 500);
4567    });
4568})();
4569</script>
4569
4570
4571<input type="hidden" id="orgCreditAlias"
4572	value="Meenakshi Jain Coins" />
4573
4574
4575
4576	
4577
4578
4579<script>
4580
4581
4582
4583
4584	var orgTaxLabel = "";
4585
4586
4587
4588	var sessionCountry = "";
4589
4590	$(document).ready(function() {		
4591		$("input[name='userMobileVerify']").change(function(data){
4592			var uniqueMobileSwitch = $('#uniqueMobileId');
4593			if(data.target.value==='true'){
4594				$('input[name=uniqueMobile]').prop('checked', true)
4595				$('#uniqueMobileLabelId').show();				
4596			}else{
4597				$('input[name=uniqueMobile]').prop('checked', false)
4598				$('#uniqueMobileLabelId').hide();
4599			}
4600		});
4601	});
4602	
4603	
4604		
4605		
4606			localStorage.removeItem('microserviceAuthToken');
4607		
4608   
4609   
4610   
4611	
4612	
4613			localStorage.removeItem('communityToken');
4614	
4615   
4616   
4617   
4618	
4619	
4620			localStorage.removeItem('chatRefreshToken');
4621	
4622
4623
4624
4625	
4626	
4627			localStorage.removeItem('refreshToken');
4628	
4629
4630	
4631</script>
4631
4632
4633
4634<!-- amplitude script start -->
4635
4636
4637
4638	
4638<script type="text/javascript">
4639	    window.localStorage.removeItem('loginAmplitudeEventSent');
4640	</script>
4640
4641
4642
4643<!-- amplitude script end -->
4644
4645 
4646
4647 <div id="template-container"></div>
4648
4649
4650	
4651	
4652		
4653	
4654
4655	
4656		
4657			<div class="spectre is-wrapper clearfix courseDescriptionCont"
4658				style="">
4659				<html>
4660 <head></head> 
4661 <body> 
4662  <div id="1768469016303d" data-cat="1" class="is-section is-section-100 is-shadow-1 is-bg-grey courselandingpage" data-id="696cecf361729d185b1c7649"> 
4663   <div data-coursid="696505334ff3a72bff9061ef" class="courselandingpage is-boxes"> 
4664    <div data-coursid="696505334ff3a72bff9061ef" class="courselandingpage is-box is-bg-light is-dark-text is-box-12"> 
4665     <div data-coursid="696505334ff3a72bff9061ef" class="courselandingpage is-boxes"> 
4666      <div data-coursid="696505334ff3a72bff9061ef" class="courselandingpage is-box-centered"> 
4667       <div class="is-container is-content-640 container"> 
4668        <div class="row clearfix" draggable="false"> 
4669         <div class="column full"> 
4670          <h1 class="size-14" style="font-family: Poppins, sans-serif;"><b class="size-32">CHECKOUT SUMMMARY</b></h1> 
4671         </div> 
4672        </div> 
4673        <div class="row clearfix" draggable="false"> 
4674         <div class="column full"> 
4675          <h1 class="size-14"><b class="size-18">Order Details:</b></h1> 
4676         </div> 
4677        </div> 
4678        <div class="row clearfix"> 
4679         <div class="column full"> 
4680          <h1 class="size-18"><b class="size-21">Microsoft Excel - Excel from Beginner to Advanced</b></h1> 
4681          <p class="size-16">All-in-One Excel Training: Transform Your Skills with Hands-On Projects and Real-World Applications!</p> 
4682          <p class="size-16">Students Enrolled: 5,389</p> 
4683          <p class="size-16">Last Updated: 05-January-2026</p> 
4684         </div> 
4685        </div> 
4686        <div class="row clearfix"> 
4687         <div class="column full"> 
4688          <h1 class="size-18"><b class="size-21">This course Includes</b></h1> 
4689         </div> 
4690        </div> 
4691        <div class="row clearfix"> 
4692         <div class="column half"> 
4693          <p class="size-16"><i class="icon ion-android-film"></i>&nbsp;4+ Hours On Demand Videos</p> 
4694          <p class="size-16"><i class="icon ion-android-archive"></i>&nbsp;8+ Downloadable Resources</p> 
4695          <p class="size-16"><i class="icon ion-android-bookmark"></i>&nbsp;Certificate of Completion</p> 
4696         </div> 
4697         <div class="column half"> 
4698          <p class="size-16"><i class="icon ion-android-hand"></i>&nbsp;Instructor Q&amp;A Support</p> 
4699          <p class="size-16"><i class="icon ion-archive"></i>&nbsp;AI Formulas Writer ADD-IN</p> 
4700          <p class="size-16"><i class="icon ion-android-people"></i>&nbsp;Join Excel Community</p> 
4701         </div> 
4702        </div> 
4703        <div class="row clearfix"> 
4704         <div> 
4705          <form class="pricing text-center" name="planForm"> 
4706           
4706<script>
4707function getFormattedCurrentDate() {
4708	try {
4709		var today = new Date();
4710		var options = { year: 'numeric', month: 'short', day: 'numeric' };
4711		return today.toLocaleDateString('en-US', options);
4712	} catch (e) {
4713		console.error('[PRICING] Error formatting current date:', e);
4714		return 'Purchase date';
4715	}
4716}
4717function getFormattedDateWithOffset(days) {
4718	try {
4719		var date = new Date();
4720		date.setDate(date.getDate() + days);
4721		var options = { year: 'numeric', month: 'short', day: 'numeric' };
4722		return date.toLocaleDateString('en-US', options);
4723	} catch (e) {
4724		console.error('[PRICING] Error formatting date with offset:', e);
4725		return 'Purchase date';
4726	}
4727}
4728
4729function updateButtonTextForPlan(planId) {
4730	var productVariantsData = window.productVariantsData || [];
4731	var selectedPlan = productVariantsData.find(function(p) { return p.id === planId; });
4732	
4733	if (!selectedPlan || !selectedPlan.validityVariants || selectedPlan.validityVariants.length === 0) {
4734		return;
4735	}
4736	
4737	var vv = selectedPlan.validityVariants[0];
4738	var currencySymbol = '$';
4739	var buttonText = '';
4740	
4741	if (vv.type === 'FREE') {
4742		buttonText = 'Buy now for FREE';
4743	} else if (vv.recurPeriod === 'custom') {
4744		buttonText = 'Buy now';
4745	} else {
4746		var price = vv.price || 0;
4747		buttonText = 'Buy now for ' + currencySymbol + price.toFixed(2);
4748	}
4749	
4750	// Update both main and sticky buttons
4751	var buttons = document.querySelectorAll('.plan-enroll-btn.product-enroll');
4752	buttons.forEach(function(btn) {
4753		btn.textContent = buttonText;
4754		btn.innerHTML = buttonText;
4755		btn.setAttribute('data-pid', planId);
4756		btn.setAttribute('data-plantype', vv.type);
4757	});
4758	
4759}
4760
4761document.addEventListener('DOMContentLoaded', function() {
4762	// Handle plan card selection
4763	var planCards = document.querySelectorAll('.product.card input[type="radio"]');
4764	planCards.forEach(function(radio) {
4765		radio.addEventListener('change', function() {
4766			if (this.checked) {
4767				var planId = this.value;
4768				updateButtonTextForPlan(planId);
4769			}
4770		});
4771	});
4772	
4773});
4774</script>
4774 
4775           <div style="display: block; margin-bottom: 38px;"> 
4776            <div class="plan-grid"> 
4777            </div> 
4778           </div> 
4779           <div class="center mt-20 cartBtns buyBtnWeb" style="display: flex; justify-content: center;"> 
4780            <button data-purchasetype="singlecheckout" class="btn btn-primary btn-price plan-enroll-btn product-enroll addToLibrary" data-id="696cecf361729d185b1c7649" data-pid="p1" data-title="Learn Excel from Basics to AI — FREE" data-coursecategory="Software &amp; Technology" name="commit" type="submit" value="Enroll" data-plantype="FREE" data-price="0.0" data-setupfee="">Buy now for FREE</button> 
4781           </div> 
4782           <div class="buyBtnSticky cartBtns"> 
4783            <div class=""> 
4784             <div class="container"> 
4785              <div class="buyBtnStickyPriceCont"> 
4786               <p class="price"> FREE </p> 
4787               <p class="mrp"> </p> 
4788              </div> 
4789              <button data-purchasetype="singlecheckout" class="btn btn-primary btn-price plan-enroll-btn product-enroll buyBtnStickyBtn addToLibrary" data-id="696cecf361729d185b1c7649" data-pid="p1" data-title="Learn Excel from Basics to AI — FREE" data-coursecategory="Software &amp; Technology" name="commit" type="submit" value="Enroll" data-plantype="FREE" data-price="0.0" data-setupfee="">Buy now for FREE</button> 
4790             </div> 
4791            </div> 
4792           </div> 
4793          </form> 
4794          
4794<script type="text/javascript">
4795	// Log the full productVariants data from API response
4796	var productVariantsData = [
4797		{
4798			id: 'p1',
4799			productType: 'Free',
4800			validityVariants: [
4801				{
4802					type: 'FREE',
4803					label: 'Lifetime',
4804					price: 0,
4805					mrp: 0,
4806					totalPayments: 0,
4807					recurPeriod: '',
4808					oneTimePrice: 0,
4809				instalmentItem: null
4810				}
4811			]
4812		}
4813	];
4814	
4815	// Global function to handle info icon clicks - called directly from onclick attribute
4816	window.gphPricingHandleInfoIconClick = function(event) {
4817		event.preventDefault();
4818		event.stopPropagation();
4819		
4820		var infoIcon = event.target;
4821		
4822		var wrapper = infoIcon.closest('.gph-pricing-instalment-info-wrapper');
4823		
4824		if (!wrapper) {
4825			console.error('[PRICING] ✗ Wrapper not found!');
4826			return false;
4827		}
4828		
4829		// Get the wrapper ID to find the associated popover
4830		var wrapperId = wrapper.getAttribute('data-wrapper-id');
4831		
4832		// Find popover by matching data-wrapper-id attribute
4833		var popover = null;
4834		if (wrapperId) {
4835			popover = document.querySelector('.gph-pricing-instalment-popover[data-wrapper-id="' + wrapperId + '"]');
4836		}
4837		
4838		// Fallback: try to find popover as child of wrapper
4839		if (!popover) {
4840			popover = wrapper.querySelector('.gph-pricing-instalment-popover');
4841		}
4842		
4843		if (!popover) {
4844			console.error('[PRICING] ✗ Popover not found!');
4845			return false;
4846		}
4847		
4848		var isOpen = popover.style.display === 'block';
4849		
4850		// Close all other popovers
4851		document.querySelectorAll('.gph-pricing-instalment-popover').forEach(function(p) {
4852			p.style.display = 'none';
4853		});
4854		
4855		// Toggle current popover
4856		if (!isOpen) {
4857			// Try to resolve data from productVariantsData using wrapper-id
4858			var wrapperId = wrapper.getAttribute('data-wrapper-id');
4859			var planId = wrapperId ? wrapperId.replace('wrapper-', '') : null;
4860			var pvData = Array.isArray(productVariantsData) ? productVariantsData.find(function(p){ return p.id === planId; }) : null;
4861			var currencySymbol = '$';
4862			
4863			if (pvData && pvData.validityVariants && pvData.validityVariants.length > 0) {
4864			var vv = pvData.validityVariants[0];
4865			// Determine total price to show
4866			var price = vv.type === 'INSTALMENT' 
4867				? (vv.oneTimePrice && vv.oneTimePrice > 0 ? vv.oneTimePrice : (vv.price || 0) * (vv.totalPayments || 0))
4868				: (vv.price || 0);
4869			// Update total
4870			var totalElement = popover.querySelector('.gph-pricing-product-total');
4871			if (totalElement) {
4872				totalElement.textContent = currencySymbol + Number(price).toFixed(2);
4873			}
4874			// Build instalments
4875			var instalmentList = popover.querySelector('.gph-pricing-instalment-list');
4876			if (instalmentList) {
4877				instalmentList.innerHTML = '';
4878				var instalments = [];
4879				if (vv.type === 'INSTALMENT') {
4880					// Priority 1: Use instalmentItem if available (custom instalment)
4881					if (vv.instalmentItem && Array.isArray(vv.instalmentItem) && vv.instalmentItem.length > 0) {
4882						var currentDate = getFormattedCurrentDate();
4883						instalments = vv.instalmentItem.map(function(item, index) {
4884							var ordinal = (index === 0 ? 'st' : index === 1 ? 'nd' : index === 2 ? 'rd' : 'th');
4885							// Calculate exact due date for each instalment
4886							var today = new Date();
4887							var dueDate = index === 0 ? today : (function() {
4888								var date = new Date(today);
4889								if (item.unit === 'days') date.setDate(date.getDate() + item.dueOffset);
4890								else if (item.unit === 'months') date.setMonth(date.getMonth() + item.dueOffset);
4891								else if (item.unit === 'years') date.setFullYear(date.getFullYear() + item.dueOffset);
4892								return date;
4893							})();
4894							// Format date as "Month Day, Year" (e.g., "Jan 30, 2025")
4895							var formattedDate = dueDate.toLocaleDateString('en-US', { year: 'numeric', month: 'short', day: 'numeric' });
4896							var timingDisplay = (index === 0 ? 'Today, ' : '') + formattedDate;
4897							return {
4898								label: (index + 1) + ordinal + ' instalment',
4899								amount: item.price,
4900								timing: timingDisplay
4901							};
4902						});
4903					} else {
4904						// Priority 2: Calculate based on totalPayments (standard instalment)
4905						var totalPayments = vv.totalPayments || 0;
4906						var totalPrice = vv.oneTimePrice && vv.oneTimePrice > 0 ? vv.oneTimePrice : (vv.price || 0) * totalPayments;
4907						var perAmount = Math.round(totalPrice / totalPayments);
4908						var currentDate = getFormattedCurrentDate();
4909						
4910						// Determine offset interval based on recurPeriod
4911						var offsetInterval = 30; // default to 30 days (monthly)
4912						var unitLabel = 'days';
4913						if (vv.recurPeriod === 'weekly') {
4914							offsetInterval = 7;
4915							unitLabel = 'days';
4916						} else if (vv.recurPeriod === 'monthly') {
4917							offsetInterval = 30;
4918							unitLabel = 'days';
4919						}
4920						
4921						for (var i = 0; i < totalPayments; i++) {
4922							var ordinal = (i === 0 ? 'st' : i === 1 ? 'nd' : i === 2 ? 'rd' : 'th');
4923							var offset = i === 0 ? 0 : (i * offsetInterval);
4924							// Build timing display: "Today, currentDate" for first, "currentDate + offset + unit" for others
4925							var timingDisplay = i === 0 ? 'Today, ' + currentDate : currentDate + ' + ' + offset + ' ' + unitLabel;
4926							instalments.push({ label: (i+1) + ordinal + ' instalment', amount: perAmount, timing: timingDisplay });
4927						}
4928					}
4929				}	
4930					// Render
4931					instalments.forEach(function(inst, index) {
4932						var li = document.createElement('li');
4933						li.style.cssText = 'display:flex;align-items:flex-start;justify-content:space-between;color:#374151;margin:0px;background:#ffffff;';
4934						if (index === instalments.length - 1) {
4935							li.style.marginBottom = '0px';
4936						}
4937						li.innerHTML = '<div style="width:100%;margin-bottom:6px;">' +
4938										'<div style="display:flex;justify-content:space-between;align-items:flex-start;background:#ffffff;">' +
4939											'<span style="font-weight:500;font-size:16px;background:#ffffff;">' + inst.label + '</span>' +
4940											'<span style="font-weight:600;font-size:14px;background:#ffffff;">' + currencySymbol + inst.amount.toFixed(2) + '</span>' +
4941										'</div>' +
4942										'<span style="display:block;color:#9ca3af;font-size:12px;font-color:#878C90;margin-top:-4px;background:#ffffff;">' + inst.timing + '</span>' +
4943										'</div>';
4944						instalmentList.appendChild(li);
4945					});
4946				}
4947			} else {
4948				// Fallback to existing priceStr based percentages if no pv data
4949				// Populate dynamic values
4950				var priceStr = wrapper.getAttribute('data-price');
4951				if (priceStr) {
4952					// Decode HTML entities
4953					var textarea = document.createElement('textarea');
4954					textarea.innerHTML = priceStr;
4955					priceStr = textarea.value;
4956					// Extract numeric value from price string (e.g., "₹320" -> 320)
4957					var priceMatch = priceStr.match(/[\d,]+\.?\d*/);
4958					var price = priceMatch ? parseFloat(priceMatch[0].replace(/,/g, '')) : 0;
4959					var currencySymbol = priceStr.replace(/[\d,.\s]/g, '');
4960					// Calculate installments (50%, 30%, 20%)
4961					var instalments = [
4962						{ percentage: 0.5, label: '1st instalment', timing: 'Today, ' + getFormattedCurrentDate() },
4963						{ percentage: 0.3, label: '2nd instalment', timing: getFormattedDateWithOffset(30) },
4964						{ percentage: 0.2, label: '3rd instalment', timing: getFormattedDateWithOffset(60) }
4965					];
4966					// Update total
4967					var totalElement = popover.querySelector('.gph-pricing-product-total');
4968					if (totalElement) {
4969						totalElement.textContent = currencySymbol + price.toFixed(2);
4970					}
4971					// Render
4972					var instalmentList = popover.querySelector('.gph-pricing-instalment-list');
4973					if (instalmentList) {
4974						instalmentList.innerHTML = '';
4975						instalments.forEach(function(inst, index) {
4976							var amount = Math.round(price * inst.percentage);
4977							var li = document.createElement('li');
4978							li.style.cssText = 'display:flex;align-items:flex-start;justify-content:space-between;color:#374151;margin:0px;background:#ffffff;';
4979							if (index === instalments.length - 1) {
4980								li.style.marginBottom = '0px';
4981							}
4982							li.innerHTML = '<div style="width:100%;">' +
4983											'<div style="display:flex;justify-content:space-between;align-items:flex-start;background:#ffffff;">' +
4984												'<span style="font-weight:500;font-size:16px;background:#ffffff;">' + inst.label + '</span>' +
4985												'<span style="font-weight:600;font-size:14px;background:#ffffff;">' + currencySymbol + amount + '</span>' +
4986											'</div>' +
4987											'<span style="display:block;color:#9ca3af;font-size:12px;font-color:#878C90;background:#ffffff;">' + inst.timing + '</span>' +
4988											'</div>';
4989							instalmentList.appendChild(li);
4990						});
4991					}
4992				}
4993			}
4994			
4995			// Position the fixed popover relative to the icon
4996			var iconRect = infoIcon.getBoundingClientRect();
4997			var wrapperRect = wrapper.getBoundingClientRect();
4998
4999			// Detect mobile screen
5000			var isMobile = window.innerWidth <= 768; // you can tweak breakpoint
5001
5002			// Choose offset based on device
5003			var leftOffset = isMobile ? 170 : 40;
5004			popover.style.top = (iconRect.bottom - wrapperRect.top + 6) + 'px';
5005			popover.style.left = (iconRect.right - wrapperRect.left - leftOffset) + 'px';
5006			popover.style.display = 'block';
5007		} else {
5008			popover.style.display = 'none';
5009		}
5010		
5011		return false;
5012	};
5013	
5014	// Handle close button clicks
5015	document.addEventListener('click', function(e) {
5016		var closeBtn = e.target.closest('.gph-pricing-instalment-popover-close');
5017		if (closeBtn) {
5018			e.preventDefault();
5019			e.stopPropagation();
5020			var popover = closeBtn.closest('.gph-pricing-instalment-popover');
5021			if (popover) {
5022				popover.style.display = 'none';
5023			}
5024			return false;
5025		}
5026		
5027		// Close popover if clicking outside
5028		if (!e.target.closest('.gph-pricing-instalment-info-wrapper')) {
5029			document.querySelectorAll('.gph-pricing-instalment-popover').forEach(function(p) {
5030				p.style.display = 'none';
5031			});
5032		}
5033	});
5034	document.addEventListener('wheel', function(e) {
5035		var scroller = e.target.closest('.gph-pricing-instalment-popover');
5036		if (scroller) {
5037			e.stopPropagation();
5038		}
5039	}, { passive: false });
5040</script>
5040 
5041          
5041<script>
5042function attachPopoverScrollLock(popover) {
5043  const scroller = popover.querySelector('.gph-popover-scroll');
5044  if (!scroller) return;
5045
5046  // Prevent scroll from bubbling to page
5047  scroller.addEventListener('wheel', function (e) {
5048    const delta = e.deltaY;
5049    const atTop = scroller.scrollTop <= 0;
5050    const atBottom = scroller.scrollHeight - scroller.scrollTop <= scroller.clientHeight + 1;
5051
5052    if ((delta < 0 && atTop) || (delta > 0 && atBottom)) {
5053      e.preventDefault(); // stop page scroll at edges
5054    }
5055
5056    e.stopPropagation(); // always stop bubbling
5057  }, { passive: false });
5058
5059  let startY = 0;
5060
5061  scroller.addEventListener('touchstart', function (e) {
5062    startY = e.touches[0].clientY;
5063  }, { passive: true });
5064
5065  scroller.addEventListener('touchmove', function (e) {
5066    const delta = startY - e.touches[0].clientY;
5067    const atTop = scroller.scrollTop <= 0;
5068    const atBottom = scroller.scrollHeight - scroller.scrollTop <= scroller.clientHeight + 1;
5069
5070    if ((delta < 0 && atTop) || (delta > 0 && atBottom)) {
5071      e.preventDefault();
5072    }
5073
5074    e.stopPropagation();
5075  }, { passive: false });
5076}
5077
5078// Attach when popover becomes visible
5079const observer = new MutationObserver(() => {
5080  document.querySelectorAll('.gph-pricing-instalment-popover').forEach(popover => {
5081    if (popover.style.display === 'block' && !popover.dataset.scrollLock) {
5082      attachPopoverScrollLock(popover);
5083      popover.dataset.scrollLock = 'true';
5084    }
5085  });
5086});
5087
5088observer.observe(document.body, { attributes: true, subtree: true, attributeFilter: ['style'] });
5089</script>
5089 
5090         </div> 
5091        </div> 
5092       </div> 
5093       <link href="//fonts.googleapis.com/css?family=Poppins:400,600" rel="stylesheet" property="stylesheet" type="text/css"> 
5094      </div> 
5095     </div> 
5096    </div> 
5097   </div> 
5098   <div class="is-box-img is-box is-dark-text is-box-1" style="background-color: rgba(0, 0, 0, 0.7);"> 
5099    <div class="is-overlay"> 
5100     <div class="is-overlay-content"></div> 
5101    </div> 
5102   </div> 
5103  </div> 
5104  <div id="1768479463956d" data-cat="115" class="is-section is-section-100 is-box is-dark-text"> 
5105   <div class="is-boxes"> 
5106    <div class="is-box-centered"> 
5107     <div class="is-container container" style="max-width: 880px;"> 
5108      <div class="row clearfix"> 
5109       <div class="column full center"> 
5110        <h1 class="size-48" style="letter-spacing: 2px; font-weight: bold;">FAQs</h1> 
5111       </div> 
5112      </div> 
5113      <div class="row clearfix"> 
5114       <div class="column full center"> 
5115        <div class="spacer height-40"></div> 
5116       </div> 
5117      </div> 
5118      <div class="row clearfix"> 
5119       <div class="column full"> 
5120        <h3 class="size-24"> 
5121         <ul> 
5122          <li>What exactly is this Excel training program?</li> 
5123         </ul></h3> 
5124        <blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"> 
5125         <p class="size-18">This is a <em data-start="608" data-end="649">Complete Microsoft Excel Expert Program</em> that takes you from basics to advanced Excel skills — including formulas, data visualization, automation (VBA), Power Query, and AI-assisted tools — through self-paced online lessons with real-world case studies</p> 
5126        </blockquote> 
5127       </div> 
5128      </div> 
5129      <div class="row clearfix"> 
5130       <div class="column full"> 
5131        <h3 class="size-24"> 
5132         <ul> 
5133          <li>Is this a one-time payment or a subscription?</li> 
5134         </ul></h3> 
5135        <blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"> 
5136         <p class="size-18">Yes, this is a <strong data-start="230" data-end="255">one-time payment only</strong>. You pay once and get <strong data-start="278" data-end="297">lifetime access</strong> to the complete Excel training, bonus courses, tools, updates, and community — <strong data-start="377" data-end="406">no monthly or yearly fees</strong>.</p> 
5137        </blockquote> 
5138       </div> 
5139      </div> 
5140      <div class="row clearfix"> 
5141       <div class="column full"> 
5142        <h3 class="size-24"> 
5143         <ul> 
5144          <li>Who is this course designed for?</li> 
5145         </ul></h3> 
5146        <blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"> 
5147         <p class="size-18">It’s suitable for <strong data-start="969" data-end="1021">beginners, intermediate users, and professionals</strong> who want to improve productivity, automate routine work, build dashboards, analyze data, and become confident working with Excel in the real world. There are <em data-start="1180" data-end="1198">no prerequisites</em>. </p> 
5148        </blockquote> 
5149       </div> 
5150      </div> 
5151      <div class="row clearfix"> 
5152       <div class="column full"> 
5153        <h3 class="size-24"> 
5154         <ul> 
5155          <li>How is the training delivered and accessed?</li> 
5156         </ul></h3> 
5157        <blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"> 
5158         <p class="size-18">The course is <strong data-start="1800" data-end="1830">100% online and self-paced</strong> — with recorded video lessons, downloadable practice files, and syllabus guides. You can access it from your dashboard anytime after enrollment. </p> 
5159        </blockquote> 
5160       </div> 
5161      </div> 
5162      <div class="row clearfix"> 
5163       <div class="column full"> 
5164        <h3 class="size-24"> 
5165         <ul> 
5166          <li>Do I get any certificates?</li> 
5167         </ul></h3> 
5168        <blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"> 
5169         <p class="size-18">Yes — upon successful completion, you receive a <strong data-start="2106" data-end="2121">certificate</strong> that you can share on LinkedIn or include in your resume to demonstrate your Excel proficiency. </p> 
5170        </blockquote> 
5171       </div> 
5172      </div> 
5173      <div class="row clearfix"> 
5174       <div class="column full"> 
5175        <h3 class="size-24"> 
5176         <ul> 
5177          <li>
5177Do I need to install Excel on my computer to take this?</li> 
5178         </ul></h3> 
5179        <blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"> 
5180         <p class="size-18">Yes — a local installation of Microsoft Excel is recommended to practice the lessons effectively. Newer versions (Excel 365) are ideal to access the latest functions, though many topics work on older versions too. </p> 
5181        </blockquote> 
5182       </div> 
5183      </div> 
5184      <div class="row clearfix"> 
5185       <div class="column full"> 
5186        <h3 class="size-24"> 
5187         <ul> 
5188          <li>What support is available if I get stuck?</li> 
5189         </ul></h3> 
5190        <blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"> 
5191         <p class="size-18">Students get access to <strong data-start="3623" data-end="3641">expert support</strong>, a members-only community for Q&amp;A, and periodic live sessions. You’re not left alone while learning tricky topics like macros or Power Query. </p> 
5192        </blockquote> 
5193       </div> 
5194      </div> 
5195      <div class="row clearfix"> 
5196       <div class="column full"> 
5197        <h3 class="size-24"> 
5198         <ul> 
5199          <li>How do I enroll and start learning?</li> 
5200         </ul></h3> 
5201        <blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"> 
5202         <p class="size-18">Click the <strong data-start="3888" data-end="3904">“Enroll Now”</strong> button on the page, complete checkout, and you’ll be granted instant access via your student dashboard. Learning begins the moment you log in. </p> 
5203        </blockquote> 
5204       </div> 
5205      </div> 
5206      <div class="row clearfix"> 
5207       <div class="column full"> 
5208        <h3 class="size-24"> 
5209         <ul> 
5210          <li>Can I preview any lessons before buying?</li> 
5211         </ul></h3> 
5212        <blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"> 
5213         <p class="size-18">Yes — the landing page provides <em data-start="4179" data-end="4213">sample videos and free resources</em> (shortcuts, productivity tricks) so you can test the teaching style before committing. </p> 
5214        </blockquote> 
5215       </div> 
5216      </div> 
5217     </div> 
5218    </div> 
5219   </div> 
5220  </div> 
5221  <!--OTHERS---> 
5222  <link href="//fonts.googleapis.com/css?family=Poppins:400,600" rel="stylesheet" property="stylesheet" type="text/css"> 
5223  <link href="//fonts.googleapis.com/css?family=Poppins:400,600" rel="stylesheet" property="stylesheet" type="text/css"> 
5224  <link href="//fonts.googleapis.com/css?family=Poppins:400,600" rel="stylesheet" property="stylesheet" type="text/css"> 
5225  <div id="1768750982332"> 
5226   <form class="pricing text-center" name="planForm"> 
5227    
5227<script>
5228function getFormattedCurrentDate() {
5229	try {
5230		var today = new Date();
5231		var options = { year: 'numeric', month: 'short', day: 'numeric' };
5232		return today.toLocaleDateString('en-US', options);
5233	} catch (e) {
5234		console.error('[PRICING] Error formatting current date:', e);
5235		return 'Purchase date';
5236	}
5237}
5238function getFormattedDateWithOffset(days) {
5239	try {
5240		var date = new Date();
5241		date.setDate(date.getDate() + days);
5242		var options = { year: 'numeric', month: 'short', day: 'numeric' };
5243		return date.toLocaleDateString('en-US', options);
5244	} catch (e) {
5245		console.error('[PRICING] Error formatting date with offset:', e);
5246		return 'Purchase date';
5247	}
5248}
5249
5250function updateButtonTextForPlan(planId) {
5251	var productVariantsData = window.productVariantsData || [];
5252	var selectedPlan = productVariantsData.find(function(p) { return p.id === planId; });
5253	
5254	if (!selectedPlan || !selectedPlan.validityVariants || selectedPlan.validityVariants.length === 0) {
5255		return;
5256	}
5257	
5258	var vv = selectedPlan.validityVariants[0];
5259	var currencySymbol = '$';
5260	var buttonText = '';
5261	
5262	if (vv.type === 'FREE') {
5263		buttonText = 'Buy now for FREE';
5264	} else if (vv.recurPeriod === 'custom') {
5265		buttonText = 'Buy now';
5266	} else {
5267		var price = vv.price || 0;
5268		buttonText = 'Buy now for ' + currencySymbol + price.toFixed(2);
5269	}
5270	
5271	// Update both main and sticky buttons
5272	var buttons = document.querySelectorAll('.plan-enroll-btn.product-enroll');
5273	buttons.forEach(function(btn) {
5274		btn.textContent = buttonText;
5275		btn.innerHTML = buttonText;
5276		btn.setAttribute('data-pid', planId);
5277		btn.setAttribute('data-plantype', vv.type);
5278	});
5279	
5280}
5281
5282document.addEventListener('DOMContentLoaded', function() {
5283	// Handle plan card selection
5284	var planCards = document.querySelectorAll('.product.card input[type="radio"]');
5285	planCards.forEach(function(radio) {
5286		radio.addEventListener('change', function() {
5287			if (this.checked) {
5288				var planId = this.value;
5289				updateButtonTextForPlan(planId);
5290			}
5291		});
5292	});
5293	
5294});
5295</script>
5295 
5296    <div style="display: block; margin-bottom: 38px;"> 
5297     <div class="plan-grid"> 
5298     </div> 
5299    </div> 
5300    <div class="center mt-20 cartBtns buyBtnWeb" style="display: flex; justify-content: center;"> 
5301     <button data-purchasetype="singlecheckout" class="btn btn-primary btn-price plan-enroll-btn product-enroll addToLibrary" data-id="696cecf361729d185b1c7649" data-pid="p1" data-title="Learn Excel from Basics to AI — FREE" data-coursecategory="Software &amp; Technology" name="commit" type="submit" value="Enroll" data-plantype="FREE" data-price="0.0" data-setupfee="">Buy now for FREE</button> 
5302    </div> 
5303    <div class="buyBtnSticky cartBtns"> 
5304     <div class=""> 
5305      <div class="container"> 
5306       <div class="buyBtnStickyPriceCont"> 
5307        <p class="price"> FREE </p> 
5308        <p class="mrp"> </p> 
5309       </div> 
5310       <button data-purchasetype="singlecheckout" class="btn btn-primary btn-price plan-enroll-btn product-enroll buyBtnStickyBtn addToLibrary" data-id="696cecf361729d185b1c7649" data-pid="p1" data-title="Learn Excel from Basics to AI — FREE" data-coursecategory="Software &amp; Technology" name="commit" type="submit" value="Enroll" data-plantype="FREE" data-price="0.0" data-setupfee="">Buy now for FREE</button> 
5311      </div> 
5312     </div> 
5313    </div> 
5314   </form> 
5315   
5315<script type="text/javascript">
5316	// Log the full productVariants data from API response
5317	var productVariantsData = [
5318		{
5319			id: 'p1',
5320			productType: 'Free',
5321			validityVariants: [
5322				{
5323					type: 'FREE',
5324					label: 'Lifetime',
5325					price: 0,
5326					mrp: 0,
5327					totalPayments: 0,
5328					recurPeriod: '',
5329					oneTimePrice: 0,
5330				instalmentItem: null
5331				}
5332			]
5333		}
5334	];
5335	
5336	// Global function to handle info icon clicks - called directly from onclick attribute
5337	window.gphPricingHandleInfoIconClick = function(event) {
5338		event.preventDefault();
5339		event.stopPropagation();
5340		
5341		var infoIcon = event.target;
5342		
5343		var wrapper = infoIcon.closest('.gph-pricing-instalment-info-wrapper');
5344		
5345		if (!wrapper) {
5346			console.error('[PRICING] ✗ Wrapper not found!');
5347			return false;
5348		}
5349		
5350		// Get the wrapper ID to find the associated popover
5351		var wrapperId = wrapper.getAttribute('data-wrapper-id');
5352		
5353		// Find popover by matching data-wrapper-id attribute
5354		var popover = null;
5355		if (wrapperId) {
5356			popover = document.querySelector('.gph-pricing-instalment-popover[data-wrapper-id="' + wrapperId + '"]');
5357		}
5358		
5359		// Fallback: try to find popover as child of wrapper
5360		if (!popover) {
5361			popover = wrapper.querySelector('.gph-pricing-instalment-popover');
5362		}
5363		
5364		if (!popover) {
5365			console.error('[PRICING] ✗ Popover not found!');
5366			return false;
5367		}
5368		
5369		var isOpen = popover.style.display === 'block';
5370		
5371		// Close all other popovers
5372		document.querySelectorAll('.gph-pricing-instalment-popover').forEach(function(p) {
5373			p.style.display = 'none';
5374		});
5375		
5376		// Toggle current popover
5377		if (!isOpen) {
5378			// Try to resolve data from productVariantsData using wrapper-id
5379			var wrapperId = wrapper.getAttribute('data-wrapper-id');
5380			var planId = wrapperId ? wrapperId.replace('wrapper-', '') : null;
5381			var pvData = Array.isArray(productVariantsData) ? productVariantsData.find(function(p){ return p.id === planId; }) : null;
5382			var currencySymbol = '$';
5383			
5384			if (pvData && pvData.validityVariants && pvData.validityVariants.length > 0) {
5385			var vv = pvData.validityVariants[0];
5386			// Determine total price to show
5387			var price = vv.type === 'INSTALMENT' 
5388				? (vv.oneTimePrice && vv.oneTimePrice > 0 ? vv.oneTimePrice : (vv.price || 0) * (vv.totalPayments || 0))
5389				: (vv.price || 0);
5390			// Update total
5391			var totalElement = popover.querySelector('.gph-pricing-product-total');
5392			if (totalElement) {
5393				totalElement.textContent = currencySymbol + Number(price).toFixed(2);
5394			}
5395			// Build instalments
5396			var instalmentList = popover.querySelector('.gph-pricing-instalment-list');
5397			if (instalmentList) {
5398				instalmentList.innerHTML = '';
5399				var instalments = [];
5400				if (vv.type === 'INSTALMENT') {
5401					// Priority 1: Use instalmentItem if available (custom instalment)
5402					if (vv.instalmentItem && Array.isArray(vv.instalmentItem) && vv.instalmentItem.length > 0) {
5403						var currentDate = getFormattedCurrentDate();
5404						instalments = vv.instalmentItem.map(function(item, index) {
5405							var ordinal = (index === 0 ? 'st' : index === 1 ? 'nd' : index === 2 ? 'rd' : 'th');
5406							// Calculate exact due date for each instalment
5407							var today = new Date();
5408							var dueDate = index === 0 ? today : (function() {
5409								var date = new Date(today);
5410								if (item.unit === 'days') date.setDate(date.getDate() + item.dueOffset);
5411								else if (item.unit === 'months') date.setMonth(date.getMonth() + item.dueOffset);
5412								else if (item.unit === 'years') date.setFullYear(date.getFullYear() + item.dueOffset);
5413								return date;
5414							})();
5415							// Format date as "Month Day, Year" (e.g., "Jan 30, 2025")
5416							var formattedDate = dueDate.toLocaleDateString('en-US', { year: 'numeric', month: 'short', day: 'numeric' });
5417							var timingDisplay = (index === 0 ? 'Today, ' : '') + formattedDate;
5418							return {
5419								label: (index + 1) + ordinal + ' instalment',
5420								amount: item.price,
5421								timing: timingDisplay
5422							};
5423						});
5424					} else {
5425						// Priority 2: Calculate based on totalPayments (standard instalment)
5426						var totalPayments = vv.totalPayments || 0;
5427						var totalPrice = vv.oneTimePrice && vv.oneTimePrice > 0 ? vv.oneTimePrice : (vv.price || 0) * totalPayments;
5428						var perAmount = Math.round(totalPrice / totalPayments);
5429						var currentDate = getFormattedCurrentDate();
5430						
5431						// Determine offset interval based on recurPeriod
5432						var offsetInterval = 30; // default to 30 days (monthly)
5433						var unitLabel = 'days';
5434						if (vv.recurPeriod === 'weekly') {
5435							offsetInterval = 7;
5436							unitLabel = 'days';
5437						} else if (vv.recurPeriod === 'monthly') {
5438							offsetInterval = 30;
5439							unitLabel = 'days';
5440						}
5441						
5442						for (var i = 0; i < totalPayments; i++) {
5443							var ordinal = (i === 0 ? 'st' : i === 1 ? 'nd' : i === 2 ? 'rd' : 'th');
5444							var offset = i === 0 ? 0 : (i * offsetInterval);
5445							// Build timing display: "Today, currentDate" for first, "currentDate + offset + unit" for others
5446							var timingDisplay = i === 0 ? 'Today, ' + currentDate : currentDate + ' + ' + offset + ' ' + unitLabel;
5447							instalments.push({ label: (i+1) + ordinal + ' instalment', amount: perAmount, timing: timingDisplay });
5448						}
5449					}
5450				}	
5451					// Render
5452					instalments.forEach(function(inst, index) {
5453						var li = document.createElement('li');
5454						li.style.cssText = 'display:flex;align-items:flex-start;justify-content:space-between;color:#374151;margin:0px;background:#ffffff;';
5455						if (index === instalments.length - 1) {
5456							li.style.marginBottom = '0px';
5457						}
5458						li.innerHTML = '<div style="width:100%;margin-bottom:6px;">' +
5459										'<div style="display:flex;justify-content:space-between;align-items:flex-start;background:#ffffff;">' +
5460											'<span style="font-weight:500;font-size:16px;background:#ffffff;">' + inst.label + '</span>' +
5461											'<span style="font-weight:600;font-size:14px;background:#ffffff;">' + currencySymbol + inst.amount.toFixed(2) + '</span>' +
5462										'</div>' +
5463										'<span style="display:block;color:#9ca3af;font-size:12px;font-color:#878C90;margin-top:-4px;background:#ffffff;">' + inst.timing + '</span>' +
5464										'</div>';
5465						instalmentList.appendChild(li);
5466					});
5467				}
5468			} else {
5469				// Fallback to existing priceStr based percentages if no pv data
5470				// Populate dynamic values
5471				var priceStr = wrapper.getAttribute('data-price');
5472				if (priceStr) {
5473					// Decode HTML entities
5474					var textarea = document.createElement('textarea');
5475					textarea.innerHTML = priceStr;
5476					priceStr = textarea.value;
5477					// Extract numeric value from price string (e.g., "₹320" -> 320)
5478					var priceMatch = priceStr.match(/[\d,]+\.?\d*/);
5479					var price = priceMatch ? parseFloat(priceMatch[0].replace(/,/g, '')) : 0;
5480					var currencySymbol = priceStr.replace(/[\d,.\s]/g, '');
5481					// Calculate installments (50%, 30%, 20%)
5482					var instalments = [
5483						{ percentage: 0.5, label: '1st instalment', timing: 'Today, ' + getFormattedCurrentDate() },
5484						{ percentage: 0.3, label: '2nd instalment', timing: getFormattedDateWithOffset(30) },
5485						{ percentage: 0.2, label: '3rd instalment', timing: getFormattedDateWithOffset(60) }
5486					];
5487					// Update total
5488					var totalElement = popover.querySelector('.gph-pricing-product-total');
5489					if (totalElement) {
5490						totalElement.textContent = currencySymbol + price.toFixed(2);
5491					}
5492					// Render
5493					var instalmentList = popover.querySelector('.gph-pricing-instalment-list');
5494					if (instalmentList) {
5495						instalmentList.innerHTML = '';
5496						instalments.forEach(function(inst, index) {
5497							var amount = Math.round(price * inst.percentage);
5498							var li = document.createElement('li');
5499							li.style.cssText = 'display:flex;align-items:flex-start;justify-content:space-between;color:#374151;margin:0px;background:#ffffff;';
5500							if (index === instalments.length - 1) {
5501								li.style.marginBottom = '0px';
5502							}
5503							li.innerHTML = '<div style="width:100%;">' +
5504											'<div style="display:flex;justify-content:space-between;align-items:flex-start;background:#ffffff;">' +
5505												'<span style="font-weight:500;font-size:16px;background:#ffffff;">' + inst.label + '</span>' +
5506												'<span style="font-weight:600;font-size:14px;background:#ffffff;">' + currencySymbol + amount + '</span>' +
5507											'</div>' +
5508											'<span style="display:block;color:#9ca3af;font-size:12px;font-color:#878C90;background:#ffffff;">' + inst.timing + '</span>' +
5509											'</div>';
5510							instalmentList.appendChild(li);
5511						});
5512					}
5513				}
5514			}
5515			
5516			// Position the fixed popover relative to the icon
5517			var iconRect = infoIcon.getBoundingClientRect();
5518			var wrapperRect = wrapper.getBoundingClientRect();
5519
5520			// Detect mobile screen
5521			var isMobile = window.innerWidth <= 768; // you can tweak breakpoint
5522
5523			// Choose offset based on device
5524			var leftOffset = isMobile ? 170 : 40;
5525			popover.style.top = (iconRect.bottom - wrapperRect.top + 6) + 'px';
5526			popover.style.left = (iconRect.right - wrapperRect.left - leftOffset) + 'px';
5527			popover.style.display = 'block';
5528		} else {
5529			popover.style.display = 'none';
5530		}
5531		
5532		return false;
5533	};
5534	
5535	// Handle close button clicks
5536	document.addEventListener('click', function(e) {
5537		var closeBtn = e.target.closest('.gph-pricing-instalment-popover-close');
5538		if (closeBtn) {
5539			e.preventDefault();
5540			e.stopPropagation();
5541			var popover = closeBtn.closest('.gph-pricing-instalment-popover');
5542			if (popover) {
5543				popover.style.display = 'none';
5544			}
5545			return false;
5546		}
5547		
5548		// Close popover if clicking outside
5549		if (!e.target.closest('.gph-pricing-instalment-info-wrapper')) {
5550			document.querySelectorAll('.gph-pricing-instalment-popover').forEach(function(p) {
5551				p.style.display = 'none';
5552			});
5553		}
5554	});
5555	document.addEventListener('wheel', function(e) {
5556		var scroller = e.target.closest('.gph-pricing-instalment-popover');
5557		if (scroller) {
5558			e.stopPropagation();
5559		}
5560	}, { passive: false });
5561</script>
5561 
5562   
5562<script>
5563function attachPopoverScrollLock(popover) {
5564  const scroller = popover.querySelector('.gph-popover-scroll');
5565  if (!scroller) return;
5566
5567  // Prevent scroll from bubbling to page
5568  scroller.addEventListener('wheel', function (e) {
5569    const delta = e.deltaY;
5570    const atTop = scroller.scrollTop <= 0;
5571    const atBottom = scroller.scrollHeight - scroller.scrollTop <= scroller.clientHeight + 1;
5572
5573    if ((delta < 0 && atTop) || (delta > 0 && atBottom)) {
5574      e.preventDefault(); // stop page scroll at edges
5575    }
5576
5577    e.stopPropagation(); // always stop bubbling
5578  }, { passive: false });
5579
5580  let startY = 0;
5581
5582  scroller.addEventListener('touchstart', function (e) {
5583    startY = e.touches[0].clientY;
5584  }, { passive: true });
5585
5586  scroller.addEventListener('touchmove', function (e) {
5587    const delta = startY - e.touches[0].clientY;
5588    const atTop = scroller.scrollTop <= 0;
5589    const atBottom = scroller.scrollHeight - scroller.scrollTop <= scroller.clientHeight + 1;
5590
5591    if ((delta < 0 && atTop) || (delta > 0 && atBottom)) {
5592      e.preventDefault();
5593    }
5594
5595    e.stopPropagation();
5596  }, { passive: false });
5597}
5598
5599// Attach when popover becomes visible
5600const observer = new MutationObserver(() => {
5601  document.querySelectorAll('.gph-pricing-instalment-popover').forEach(popover => {
5602    if (popover.style.display === 'block' && !popover.dataset.scrollLock) {
5603      attachPopoverScrollLock(popover);
5604      popover.dataset.scrollLock = 'true';
5605    }
5606  });
5607});
5608
5609observer.observe(document.body, { attributes: true, subtree: true, attributeFilter: ['style'] });
5610</script>
5610 
5611  </div> 
5612  <p style="font-size: 14px; font-weight: 600; color: rgb(49, 122, 231); line-height: 1.5; margin-top: 36px;"><span style="margin-right: 12px;" id="instructorBlock">Instructor: excelsirji</span></p> 
5613  <link href="//fonts.googleapis.com/css?family=Poppins:400,600" rel="stylesheet" property="stylesheet" type="text/css">  
5614 </body>
5615</html>
5616				
5617			</div>
5618		
5619		
5620	
5621	
5622		
5623			
5624			
5625				
5626
5627
5628
5629
5630
5631
5632
5633
5634
5635
5636<div class="yogya-footer" style="display: flex !important;align-items:center;justify-content:center;clear:both;width: 100%;flex-direction: column; row-gap:30px; background: #F7F7F7; color: #232228; padding: 80px 10px;">
5637	
5638		
5639		
5640			
5641				
5642				
5643					<a style="display: flex !important;align-items:center;justify-content:center;text-decoration: none !important;background: #000 !important;color: #fff !important;padding: 12px 20px !important;border-radius: 4px !important;font-size: 14px !important;font-weight: 600 !important;line-height: 20px !important;" rel="nofollow" href="https://graphy.com/products/create-and-sell-course-online?utm_campaign=meenakshijain&utm_source=gc&utm_device=website&gref=meenakshijain" target="_blank"><img alt="Launch your Graphy" style="height: 20px; width: 11px; margin-right: 12px;" src="/resources/images/grvector.svg">Launch your Graphy</a>
5644					<div class="text-center" style="font-size: 12px;font-weight: 400;line-height: 20px;letter-spacing: 0.015em;">100K+ creators trust <a href="https://graphy.com/products/create-and-sell-course-online?utm_campaign=meenakshijain&utm_source=gc&utm_device=website&gref=meenakshijain" target="_blank" rel="nofollow" style="color: #000 !important;text-decoration: underline !important;padding: 0 !important;font-size: inherit !important;">Graphy</a> to teach online</div>
5645				
5646			
5647		
5648	
5649	<div style="display: flex !important;align-items:center;justify-content:center;column-gap: 12px;">
5650		
5651		
5652		
5653		
5654		<a href="https://www.youtube.com/c/GraphyUniversity" class="yPage" target="_blank" style="text-decoration: none !important;color:#000 !important;font-size: inherit !important;height:24px;width:24px;border: 1px solid #E5E5E5;display: flex;align-items:center;justify-content:center;" ><i class="fa-brands fa-youtube" style="font-size: 11px"></i></a>
5655		<a href="" class="telegramPage" target="_blank" style="text-decoration: none !important;color:#000 !important;font-size: inherit !important;height:24px;width:24px;border: 1px solid #E5E5E5;display: flex;align-items:center;justify-content:center;" ><i class="fa-brands fa-telegram" style="font-size: 11px"></i></a>
5656	</div>
5657	<div style="display: flex !important;align-items:center;justify-content:center;font-size: 14px;font-weight: 500;line-height: 20px;letter-spacing: 0.015em;column-gap: 12px;flex-wrap: wrap;">
5658		<span>EXCELSIRJI <i class="fa-regular fa-copyright"></i> 2026</span> <i class="fa-solid fa-circle" style="font-size: 4px;"></i> 
5659		<a href="/privacypolicy" style="color: #232228 !important; padding: 0 !important;font-size: inherit !important;text-decoration: underline !important">Privacy policy</a>  <i class="fa-solid fa-circle" style="font-size: 4px;"></i> 
5660		<a href="/termsofuse" style="color: #232228 !important;padding: 0 !important;font-size: inherit !important;text-decoration: underline !important">Terms of use</a> <i class="fa-solid fa-circle" style="font-size: 4px;"></i> 
5661		<a href="/contactus" style="color: #232228 !important;padding: 0 !important;font-size: inherit !important;text-decoration: underline !important">Contact us</a> <i class="fa-solid fa-circle" style="font-size: 4px;"></i> 
5662		<a href="/refundpolicy" style="color: #232228 !important;padding: 0 !important;font-size: inherit !important;text-decoration: underline !important">Refund policy</a>
5663	</div>
5664</div>
5665
5666
5667
5668
5669
5670			
5671		
5672	
5673		
5673<script type="text/javascript">
5674			var newCheckoutFlowParams = "FREE";
5675		</script>
5675
5676		
5677		
5678		
5679	
5680	
5681		
5681<script type="text/javascript">
5682			var checkoutV2 = "true";
5683		</script>
5683
5684	
5685	
5686	
5686<script src="https://d502jbuhuh9wk.cloudfront.net/staticfiles/resources/scripts/sstore_5ffb558e86d7b5ef265e05fb0bfbef79.js"></script>
5686
5687	
5687<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/jquery.star.rating.min.js"></script>
5687
5688	
5688<script type="text/template" id="reviewTemplate">
5689	<div class="tile mt-2 review">
5690		<div class="tile-icon">
5691			<figure class="avatar" data-initial="<@ print(item.userName.length > 0?item.userName[0].toUpperCase():"S") @>">
5692				<img src="https://d502jbuhuh9wk.cloudfront.net/users/<@- item.userId @>/thumbnail.jpg" alt="" class="img-fit-cover" onerror="this.style.display='none'">
5693			</figure>
5694		</div>
5695		<div class="tile-content">
5696			<p class="tile-title text-bold mb-0 uppercase">
5697				<@- item.userName @> <@ if(item.isFeatured !== undefined && item.isFeatured) { @><span class="chip">Featured Review</span><@ } @>
5698				
5699				<@ if(item.isVerifiedPurchase !== undefined && item.isVerifiedPurchase) { @><span class="chip">Verified Purchase</span><@ } @>
5700			</p>
5701			<p style="font-size: small;" class="text-gray mt-2 mb-2">
5702				<span class="d-inline-block icon-text"> 
5703					<@ for(var i=1;i < 6;i++) { @>
5704						<@ if(i <= item.rating) { @>
5705							<i class="material-icons md-18 text-primary">star</i>
5706						<@ }else { @><i class="material-icons md-18">star_border</i><@ } @>
5707					<@ } @>
5708				</span> <span><time class="timeago" datetime="<@ print((new Date(item.createdDate.$date)).toISOString()) @>"><@ print(parseDate(item.createdDate.$date)) @></time></span>
5709			</p>
5710			<p class="tile-subtitle" style="font-size: small;"><@- item["reviewtext"] @></p>
5711		</div>
5712	</div>
5713	</script>
5713
5714
5715	
5715<script type="text/javascript">
5716	
5717		
5718	
5719		window.planType = "FREE";
5720		window.planPrice = "0";
5721		window.planName = getCoursePlanNameByTypeOrPrice(window.planType, window.planPrice);
5722		window.planCourseId = "";
5723		window.planPackageId = "";
5724		
5725		
5726		window.planCourseId = "696cecf361729d185b1c7649";
5727		
5728		window.isPackage = false;
5729		
5730		window.walletStatus="false";
5731		window.category="Software & Technology";
5732		
5733		window.multiplePricingPlansExist = window.isMultiplePlansAvailable('',{"_id":"696cecf361729d185b1c7649","spayee:resource":{"spayee:title":"Learn Excel from Basics to AI — FREE","spayee:publisher":"excelsirji","spayee:published":true,"spayee:mrp":0,"spayee:price":0,"spayee:validityType":"none","spayee:description":"<p>This <strong>5-day free Excel course<\/strong> is designed for beginners and working professionals who want to <strong>learn Excel the right way &mdash; step by step<\/strong>, without feeling overwhelmed.<\/p>\n\n<p>Whether you have <strong>never used Excel before<\/strong> or feel confused by formulas, this course will help you build a <strong>strong foundation<\/strong>, gain confidence, and gradually move toward <strong>advanced Excel and AI-powered tools<\/strong> used in modern workplaces.<\/p>\n\n<p>No prior Excel or technical knowledge is required.<\/p>\n","spayee:productVariants":[{"id":"p1","productType":"Free","buyButtonLabel":"Buy now for FREE","archived":false,"validityVariants":[{"type":"FREE","validityType":"none","mrp":0,"price":0,"id":"v1-0-0","label":"Lifetime"}]}],"spayee:filter1":["Software & Technology"],"spayee:availableForAndroid":true,"spayee:availableForIOS":false,"spayee:availableForMarket":"true","spayee:courseUrl":"Learn-Excel-from-Basics-to-AI--FREE","spayee:seoTitle":"Learn Excel from Basics to AI — FREE","spayee:courseType":"normal","spayee:allowDiscussions":true,"spayee:curriculumAssetInfo":true,"spayee:courseAvailability":"all","spayee:appDeepLink":"https://learn.excelsirji.com/l/bVQ4u9q","spayee:items":[{"title":"Introduction","id":"pnc7vxzouu","type":"label","time":0,"items":[{"title":"Introduction","id":"6974e392080e35749e30436f","type":"video","videoType":"upload","time":0,"duration":2.65}]},{"title":"Getting Started with Excel Basics","id":"ty316ngtjj","type":"label","time":0,"items":[{"title":"Getting Started with Excel Basics","id":"696ceda580a74769b4273b7c","type":"video","videoType":"upload","time":0,"duration":48.6},{"title":"Resources - Practice Files","id":"696cf79b79762a5eed1bb0cd","type":"file","time":0}]},{"title":"Basic Excel Formulas and Functions","id":"7qj9pam8ej","type":"label","time":0,"items":[{"title":"Basic Excel Formulas and Functions","id":"696cedc19d0fed4b5662c37c","type":"video","videoType":"upload","time":0,"duration":58},{"title":"Resources - Practice Files","id":"696cf7c77e81ae727657bada","type":"file","time":0}]},{"title":"Excel Advanced Functions and Data Analysis","id":"5mgiehawzk","type":"label","time":0,"items":[{"title":"Excel Advanced Functions and Data Analysis","id":"696cee223105a646e0f59256","type":"video","videoType":"upload","time":0,"duration":52.083332},{"title":"Resources - Practice Files","id":"696cf7de3105a646e0f59562","type":"file","time":0}]},{"title":"Excel and AI","id":"o45p9wpi7l","type":"label","time":0,"items":[{"title":"Excel and AI - Makes You More Productive","id":"696cee468154c579ef660dc1","type":"video","videoType":"upload","time":0,"duration":51.85},{"title":"Resources - Practice Files","id":"696cf81872418936d40de744","type":"file","time":0}]}],"spayee:coverVersion":1,"spayee:courseCanonicalUrl":"","spayee:customScripts":"","spayee:keywords":"free excel course,excel course for beginners,excel basics course,excel training online,excel online course,excel course free,learn excel online,excel classes online,excel certification course,excel course in india","spayee:seoCategory":"","spayee:seoDescription":"Learn Excel from basics to AI in this free 5-day Excel course. Perfect for beginners, students, and professionals. No prior experience needed.","spayee:css":"","spayee:html":"<div id=\"1768469016303d\" data-cat=\"1\" class=\"is-section is-section-100 is-shadow-1 is-bg-grey\">\n\t<div data-coursid=\"696505334ff3a72bff9061ef\" class=\"courselandingpage is-boxes\">\n\t\t<div data-coursid=\"696505334ff3a72bff9061ef\" class=\"courselandingpage is-box is-bg-light is-dark-text is-box-12\">\n\t\t\t<div data-coursid=\"696505334ff3a72bff9061ef\" class=\"courselandingpage is-boxes\">\n\t\t\t\t<div data-coursid=\"696505334ff3a72bff9061ef\" class=\"courselandingpage is-box-centered\">
5733\n\t\t\t\t\t<div class=\"is-container is-content-640 container\">\n\t\t\t\t\t\t<div class=\"row clearfix\" draggable=\"false\"><div class=\"column full\"><h1 class=\"size-14\" style=\"font-family: Poppins, sans-serif;\"><b class=\"size-32\">CHECKOUT SUMMMARY<\/b><\/h1><\/div><\/div><div class=\"row clearfix\" draggable=\"false\"><div class=\"column full\"><h1 class=\"size-14\"><b class=\"size-18\">Order Details:<\/b><\/h1><\/div><\/div><div class=\"row clearfix\">\n\t\t\t\t\t\t\t<div class=\"column full\">\n\t\t\t\t\t\t\t\t<h1 class=\"size-18\"><b class=\"size-21\">Microsoft Excel - Excel from Beginner to Advanced<\/b><\/h1><p class=\"size-16\">All-in-One Excel Training: Transform Your Skills with Hands-On Projects and Real-World Applications!<\/p><p class=\"size-16\">Students Enrolled: 5,389<\/p><p class=\"size-16\">Last Updated: 05-January-2026<\/p>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div><div class=\"row clearfix\">\n\t\t\t\t\t\t\t<div class=\"column full\">\n\t\t\t\t\t\t\t\t<h1 class=\"size-18\"><b class=\"size-21\">This course Includes<\/b><\/h1>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div><div class=\"row clearfix\"><div class=\"column half\"><p class=\"size-16\"><i class=\"icon ion-android-film\"><\/i>&nbsp;4+ Hours On Demand Videos<\/p><p class=\"size-16\"><i class=\"icon ion-android-archive\"><\/i>&nbsp;8+ Downloadable Resources<\/p><p class=\"size-16\"><i class=\"icon ion-android-bookmark\"><\/i>&nbsp;Certificate of Completion<\/p><\/div><div class=\"column half\"><p class=\"size-16\"><i class=\"icon ion-android-hand\"><\/i>&nbsp;Instructor Q&amp;A Support<\/p><p class=\"size-16\"><i class=\"icon ion-archive\"><\/i>&nbsp;AI Formulas Writer ADD-IN<\/p><p class=\"size-16\"><i class=\"icon ion-android-people\"><\/i>&nbsp;Join Excel Community<\/p><\/div><\/div><div class=\"row clearfix\"><div>{{PRICING}}<\/div><\/div><\/div>\n\t\t\t\t\t<link href=\"//fonts.googleapis.com/css?family=Poppins:400,600\" rel=\"stylesheet\" property=\"stylesheet\" type=\"text/css\"><\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t<div class=\"is-box-img is-box is-dark-text is-box-1\" style=\"background-color: rgba(0, 0, 0, 0.7);\">\n\t\t\t<div class=\"is-overlay\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"is-overlay-content\"><\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\t<\/div>\n\n<div id=\"1768479463956d\" data-cat=\"115\" class=\"is-section is-section-100 is-box is-dark-text\">\n\t<div class=\"is-boxes\">\n\t\t<div class=\"is-box-centered\">\n\t\t\t<div class=\"is-container container\" style=\"max-width: 880px;\">\n\t\t\t\t<div class=\"row clearfix\">\n\t\t\t\t\t<div class=\"column full center\">\n\t\t\t\t\t\t<h1 class=\"size-48\" style=\"letter-spacing: 2px; font-weight: bold;\">FAQs<\/h1>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"row clearfix\">\n\t\t\t\t\t<div class=\"column full center\">\n\t\t\t\t\t\t<div class=\"spacer height-40\"><\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"row clearfix\">\n\t\t\t\t\t<div class=\"column full\">\n\t\t\t\t\t\t<h3 class=\"size-24\"><ul><li>What exactly is this Excel training program?<\/li><\/ul><\/h3>\n\t\t\t\t\t\t<blockquote style=\"margin: 0 0 0 40px; border: none; padding: 0px;\"><p class=\"size-18\">This is a <em data-start=\"608\" data-end=\"649\">Complete Microsoft Excel Expert Program<\/em> that takes you from basics to advanced Excel skills — including formulas, data visualization, automation (VBA), Power Query, and AI-assisted tools — through self-paced online lessons with real-world case studies<\/p><\/blockquote>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div><div class=\"row clearfix\">\n\t\t\t\t\t<div class=\"column full\">\n\t\t\t\t\t\t<h3 class=\"size-24\"><ul><li>Is this a one-time payment or a subscription?<\/li><\/ul><\/h3>\n\t\t\t\t\t\t<blockquote style=\"margin: 0 0 0 40px; border: none; padding: 0px;\"><p class=\"size-18\">Yes, this is a <strong data-start=\"230\" data-end=\"255\">one-time payment only<\/strong>. You pay once and get <strong data-start=\"278\" data-end=\"297\">lifetime access<\/strong> to the complete Excel training, bonus courses, tools, updates, and community — <strong data-start=\"377\" data-end=\"406\">no monthly or yearly fees<\/strong>.<\/p><\/blockquote>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div><div class=\"row clearfix\">\n\t\t\t\t\t<div class=\"column full\">\n\t\t\t\t\t\t<h3 class=\"size-24\"><ul><li>Who is this course designed for?<\/li><\/ul><\/h3>\n\t\t\t\t\t\t<blockquote style=\"margin: 0 0 0 40px; border: none; padding: 0px;\"><p class=\"size-18\">It’s suitable for <strong data-start=\"969\" data-end=\"1021\">beginners, intermediate users, and professionals<\/strong> who want to improve productivity, automate routine work, build dashboards, analyze data, and become confident working with Excel in the real world. There are <em data-start=\"1180\" data-end=\"1198\">no prerequisites<\/em>. <\/p><\/blockquote>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div><div class=\"row clearfix\">\n\t\t\t\t\t<div class=\"column full\">\n\t\t\t\t\t\t<h3 class=\"size-24\"><ul><li>How is the training delivered and accessed?<\/li><\/ul><\/h3>\n\t\t\t\t\t\t<blockquote style=\"margin: 0 0 0 40px; border: none; padding: 0px;\"><p class=\"size-18\">The course is <strong data-start=\"1800\" data-end=\"1830\">100% online and self-paced<\/strong> — with recorded video lessons, downloadable practice files, and syllabus guides. You can access it from your dashboard anytime after enrollment. <\/p><\/blockquote>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div><div class=\"row clearfix\">\n\t\t\t\t\t<div class=\"column full\">\n\t\t\t\t\t\t<h3 class=\"size-24\"><ul><li>Do I get any certificates?<\/li><\/ul><\/h3>\n\t\t\t\t\t\t<blockquote style=\"margin: 0 0 0 40px; border: none; padding: 0px;\"><p class=\"size-18\">Yes — upon successful completion, you receive a <strong data-start=\"2106\" data-end=\"2121\">certificate<\/strong> that you can share on LinkedIn or include in your resume to demonstrate your Excel proficiency. <\/p><\/blockquote>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div><div class=\"row clearfix\">\n\t\t\t\t\t<div class=\"column full\">\n\t\t\t\t\t\t<h3 class=\"size-24\"><ul><li>
5733Do I need to install Excel on my computer to take this?<\/li><\/ul><\/h3>\n\t\t\t\t\t\t<blockquote style=\"margin: 0 0 0 40px; border: none; padding: 0px;\"><p class=\"size-18\">Yes — a local installation of Microsoft Excel is recommended to practice the lessons effectively. Newer versions (Excel 365) are ideal to access the latest functions, though many topics work on older versions too. <\/p><\/blockquote>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div><div class=\"row clearfix\">\n\t\t\t\t\t<div class=\"column full\">\n\t\t\t\t\t\t<h3 class=\"size-24\"><ul><li>What support is available if I get stuck?<\/li><\/ul><\/h3>\n\t\t\t\t\t\t<blockquote style=\"margin: 0 0 0 40px; border: none; padding: 0px;\"><p class=\"size-18\">Students get access to <strong data-start=\"3623\" data-end=\"3641\">expert support<\/strong>, a members-only community for Q&amp;A, and periodic live sessions. You’re not left alone while learning tricky topics like macros or Power Query. <\/p><\/blockquote>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div><div class=\"row clearfix\">\n\t\t\t\t\t<div class=\"column full\">\n\t\t\t\t\t\t<h3 class=\"size-24\"><ul><li>How do I enroll and start learning?<\/li><\/ul><\/h3>\n\t\t\t\t\t\t<blockquote style=\"margin: 0 0 0 40px; border: none; padding: 0px;\"><p class=\"size-18\">Click the <strong data-start=\"3888\" data-end=\"3904\">“Enroll Now”<\/strong> button on the page, complete checkout, and you’ll be granted instant access via your student dashboard. Learning begins the moment you log in. <\/p><\/blockquote>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div><div class=\"row clearfix\">\n\t\t\t\t\t<div class=\"column full\">\n\t\t\t\t\t\t<h3 class=\"size-24\"><ul><li>Can I preview any lessons before buying?<\/li><\/ul><\/h3>\n\t\t\t\t\t\t<blockquote style=\"margin: 0 0 0 40px; border: none; padding: 0px;\"><p class=\"size-18\">Yes — the landing page provides <em data-start=\"4179\" data-end=\"4213\">sample videos and free resources<\/em> (shortcuts, productivity tricks) so you can test the teaching style before committing. <\/p><\/blockquote>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n<!---OTHERS--->\n<link href=\"//fonts.googleapis.com/css?family=Poppins:400,600\" rel=\"stylesheet\" property=\"stylesheet\" type=\"text/css\"><link href=\"//fonts.googleapis.com/css?family=Poppins:400,600\" rel=\"stylesheet\" property=\"stylesheet\" type=\"text/css\"><link href=\"//fonts.googleapis.com/css?family=Poppins:400,600\" rel=\"stylesheet\" property=\"stylesheet\" type=\"text/css\"><div id=\"1768750982332\">\n         {{PRICING}}\n        <\/div><p style=\"font-size: 14px; font-weight: 600; color: rgb(49, 122, 231); line-height: 1.5; margin-top: 36px;\"><span style=\"margin-right: 12px;\" id=\"instructorBlock\">Instructor: {{INSTRUCTOR}}<\/span><span style=\"margin-left: 12px;\" id=\"languageBlock\">Language: {{LANGUAGE}}<\/span><\/p><link href=\"//fonts.googleapis.com/css?family=Poppins:400,600\" rel=\"stylesheet\" property=\"stylesheet\" type=\"text/css\">","spayee:htmlText":"CHECKOUT SUMMMARY Order Details: Microsoft Excel - Excel from Beginner to Advanced All-in-One Excel Training: Transform Your Skills with Hands-On Projects and Real-World Applications! Students Enrolled: 5,389 Last Updated: 05-January-2026 This course Includes 4+ Hours On Demand Videos 8+ Downloadable Resources Certificate of Completion Instructor Q&A Support AI Formulas Writer ADD-IN Join Excel Community {{PRICING}} FAQs What exactly is this Excel training program? This is a Complete Microsoft Excel Expert Program that takes you from basics to advanced Excel skills — including formulas, data visualization, automation (VBA), Power Query, and AI-assisted tools — through self-paced online lessons with real-world case studies Is this a one-time payment or a subscription? Yes, this is a one-time payment only. You pay once and get lifetime access to the complete Excel training, bonus courses, tools, updates, and community — no monthly or yearly fees. Who is this course designed for? It’s suitable for beginners, intermediate users, and professionals who want to improve productivity, automate routine work, build dashboards, analyze data, and become confident working with Excel in the real world. There are no prerequisites. How is the training delivered and accessed? The course is 100% online and self-paced — with recorded video lessons, downloadable practice files, and syllabus guides. You can access it from your dashboard anytime after enrollment. Do I get any certificates? Yes — upon successful completion, you receive a certificate that you can share on LinkedIn or include in your resume to demonstrate your Excel proficiency. Do I need to install E
5733xcel on my computer to take this? Yes — a local installation of Microsoft Excel is recommended to practice the lessons effectively. Newer versions (Excel 365) are ideal to access the latest functions, though many topics work on older versions too. What support is available if I get stuck? Students get access to expert support, a members-only community for Q&A, and periodic live sessions. You’re not left alone while learning tricky topics like macros or Power Query. How do I enroll and start learning? Click the “Enroll Now” button on the page, complete checkout, and you’ll be granted instant access via your student dashboard. Learning begins the moment you log in. Can I preview any lessons before buying? Yes — the landing page provides sample videos and free resources (shortcuts, productivity tricks) so you can test the teaching style before committing. {{PRICING}} Instructor: Language:"},"from":{"createdBy":["696502429e49c234f6d30d1f"],"org-courses":["696502429e49c234f6d30d1e"],"circle-courses":["696d0119bf45a5567ad80637"]},"faq":[{"question":"How can I enrol in a course?","answer":"Enrolling in a course is simple! Just browse through our website, select the course you're interested in, and click on the \"Enrol Now\" button. Follow the prompts to complete the enrolment process, and you'll gain immediate access to the course materials."},{"question":"Can I access the course materials on any device?","answer":"Yes, our platform is designed to be accessible on various devices, including computers, laptops, tablets, and smartphones. You can access the course materials anytime, anywhere, as long as you have an internet connection."},{"question":"How can I access the course materials?","answer":"Once you enrol in a course, you will gain access to a dedicated online learning platform. All course materials, including video lessons, lecture notes, and supplementary resources, can be accessed conveniently through the platform at any time."},{"question":"Can I interact with the instructor during the course?","answer":"Absolutely! we are committed to providing an engaging and interactive learning experience. You will have opportunities to interact with them through our community. Take full advantage to enhance your understanding and gain insights directly from the expert."}],"firebaseVersion":8,"aiGeneratedSections":[],"resetUsersCount":false});
5734		
5735		store.getRelatedContent();
5736		store.bindEvents();
5737		
5738		var contentTitle = decodeHtmlEntities('Learn Excel from Basics to AI — FREE'), content_category = '';
5739		
5740		var fbprice = 0;
5741		var gaprice = parseFloat(fbprice);
5742	
5743		 if(typeof ga !== "undefined") {
5744			ga('require', 'ec');
5745			ga('set', 'currencyCode', $("#orgCurrencyCode").val());
5746			ga('ec:addImpression', {
5747				  'id': '696cecf361729d185b1c7649',
5748				  'name': contentTitle,
5749				  'category': content_category,
5750				  'list': 'Related Products',
5751				  'price': fbprice
5752				});
5753			ga('send', 'pageview');
5754		}
5755		 
5756		if(typeof gtag !== "undefined") {
5757			
5758			var item = {
5759					 price: fbprice,
5760				    currency: $("#orgCurrencyCode").val(),
5761				    quantity: 1
5762    			  };
5763    		
5764    		if(gaType === "ga4") {
5765    			item.item_id = "696cecf361729d185b1c7649";
5766    			item.item_name = contentTitle;
5767    			item.item_category = "Software &amp; Technology";
5768    		}else {
5769    			item.id = "696cecf361729d185b1c7649";
5770    			item.name = contentTitle;
5771    			item.category = "Software &amp; Technology";
5772    		}
5773			
5774			 gtag('event', 'view_item', {
5775				  currency: $("#orgCurrencyCode").val(),
5776				  items: [item],
5777				  value: fbprice
5778				});  
5779
5780		}
5781		
5782		if (typeof dataLayer !== "undefined") {
5783			var item = {
5784					 price: fbprice,
5785				    currency: $("#orgCurrencyCode").val(),
5786				    quantity: 1
5787   			};
5788			
5789			dataLayer.push({
5790				  event: "view_item",
5791				  ecommerce: {
5792					currency: $("#orgCurrencyCode").val(),
5793					value: fbprice,
5794				    items: [item]
5795				  }
5796			});
5797		} 
5798		
5799		var setPHash = true, setVHash = true;
5800		
5801		$("#productVariants").on("change", function(e) {
5802			var validityCont = $(".validityTypes").find(".validityVariants").hide().siblings("."+$(this).val()).show();
5803			
5804			if(validityCont.find("select").length > 0) {
5805				validityCont.find("select")[0].selectedIndex = 0;
5806			}
5807			
5808			$(".productPricing").find(".vvpricing").hide();
5809			var price = $(".productPricing").find("."+$(this).val()+":eq(0)").show().data("price");
5810			var buttonLabel = $(".productPricing").find("."+$(this).val()+":eq(0)").data("buybuttonlabel");
5811			window.recurSubscriptionSelected = validityCont.data("type") == "RECURRING";
5812			showHideCartBtns(price, buttonLabel)
5813			$(".buyBtn, .addToLibrary, a[href^='#purchasebutton']").data("pid", $(this).val()).removeData("vid");
5814			if(setPHash) {
5815				setHashParam("product", $(this).val());
5816			}else {
5817				setPHash = true;
5818			}
5819		});
5820		
5821		$(".validityVariants select").on("change", function(e) {
5822			var price = $(".productPricing").find(".vvpricing").hide().siblings("."+$(this).val().replace(/[.]/g, "-")+"."+$(this).data("pid")+":eq(0)").show().data("price");
5823			var buttonLabel = $(".productPricing").find("."+$(this).val()+":eq(0)").data("buybuttonlabel");
5824			showHideCartBtns(price, buttonLabel);
5825			
5826			$(".buyBtn, .addToLibrary, a[href^='#purchasebutton']").data("vid", $(this).val());
5827			
5828			if(setVHash) {
5829				setHashParam("variant", $(this).val());
5830			}else {
5831				setVHash = true;
5832			}
5833			
5834		});
5835		
5836		function showHideCartBtns(price, newButtonLabel) {
5837			var buyButtonLabel;
5838			
5839				if(price === 0){
5840					buyButtonLabel = "Buy now for FREE";
5841					
5842					if(newButtonLabel){
5843						buyButtonLabel = newButtonLabel;
5844					}
5845					
5846				}else{
5847					buyButtonLabel = "Buy now for "+"$"+price;
5848					var final_price  = "$"+price;
5849					
5850					if(newButtonLabel){
5851						buyButtonLabel = newButtonLabel;
5852					}
5853					buyButtonLabel = buyButtonLabel.replace('{{final_price}}',final_price);
5854				}
5855			
5856			if(price === 0) {
5857				$(".previewBtn, #previewBtn").hide();
5858				$(".buyBtn").addClass("addToLibrary").removeClass("buyBtn").each(function() {
5859					var btn = $(this), btnTxt = $.trim(btn.text()).toLowerCase();
5860					if(["buy now", "add to cart"].indexOf(btnTxt) > -1) {
5861						if(!buyButtonLabel){
5862							btn.text("Free").removeClass("btn-primary").addClass("btn-success");
5863						}else{
5864							btn.text(buyButtonLabel).removeClass("btn-primary").addClass("btn-success");
5865						}
5866					}
5867					if(buyButtonLabel){
5868						btn.text(buyButtonLabel);
5869					}
5870				});
5871				
5872				$(".addToLibrary").each(function() {
5873					var btn = $(this);
5874					if(buyButtonLabel){
5875						btn.text(buyButtonLabel);
5876					}
5877				});
5878				
5879				$("a[href=#purchasebutton]").attr("href", "#freebutton");
5880			}else {
5881				$(".previewBtn, #previewBtn").show();
5882				$(".addToLibrary").addClass("buyBtn").removeClass("addToLibrary").each(function() {
5883					var btn = $(this), btnTxt = $.trim(btn.text()).toLowerCase();
5884					if(["free"].indexOf(btnTxt) > -1) {
5885						if(btn.data("purchasetype") === "singlecheckout") {
5886							if(!buyButtonLabel){
5887								btn.text("Buy Now");
5888							}else{
5889								btn.text(buyButtonLabel);
5890							}
5891							
5892						}else {
5893							if(!buyButtonLabel){
5894								btn.text("Buy Now");
5895							}else{
5896								btn.text(buyButtonLabel);
5897							}
5898						}
5899						btn.removeClass("btn-success").addClass("btn-primary");
5900					}
5901				});
5902				if(window.recurSubscriptionSelected){
5903					$(".buyBtn").each(function() {
5904						var btn = $(this), btnTxt = $.trim(btn.text()).toLowerCase();
5905						if(!buyButtonLabel){
5906							btn.text("Buy Now");
5907						}else{
5908							btn.text(buyButtonLabel);
5909						}
5910					});
5911				} else {
5912					$(".buyBtn").each(function() {
5913						var btn = $(this), btnTxt = $.trim(btn.text()).toLowerCase();
5914						if(!buyButtonLabel){
5915							btn.text("Add to Cart");
5916						}else{
5917							btn.text(buyButtonLabel);
5918						}
5919					});
5920				}
5921				
5922				$("a[href=#freebutton]").attr("href", "#purchasebutton");
5923			}
5924		}
5925		
5926		function setHashParam(key, value) {
5927		    var fakeUrl = new URL('https://test.com');
5928		    fakeUrl.search = new URL(location.href).hash.substring(1);
5929		    fakeUrl.searchParams.set(key, value);
5930		    
5931		    if(key === "product") {
5932		    		fakeUrl.searchParams.delete("variant");
5933		    }
5934		    
5935		    location.hash = fakeUrl.searchParams;
5936		}
5937		
5938		function getHashParam(key) {
5939		    var fakeUrl = new URL('https://test.com');
5940		    fakeUrl.search = new URL(location.href).hash.substring(1);
5941		    return fakeUrl.searchParams.get(key);
5942		}
5943		
5944		window.recurSubscriptionSelected = false;
5945		
5946		var product = getHashParam("product"), variant = getHashParam("variant");
5947		
5948		if(product !== null && product !== "") {
5949			setPHash = false;
5950			$("#productVariants").val(product).trigger("change");
5951			
5952			if(variant !== null && variant !== "") {
5953				setVHash = false;
5954				$(".validityTypes").find(".validityVariants").hide().siblings("."+product).show().find("select").val(variant).trigger("change");
5955			}
5956			
5957		}else if(variant !== null && variant !== "") {
5958			setVHash = false;
5959			$(".validityVariants:eq(0) select").val(variant).trigger("change");
5960		}
5961		
5962		
5963		$(".tab a[href^=#]").on(
5964				"click",
5965				function(e) {
5966					e.preventDefault();
5967
5968					$(this).closest("li").addClass("active")
5969							.siblings(".active").removeClass("active");
5970
5971					var hash = $(this).attr("href").split("#")[1];
5972					location.hash = hash;
5973
5974					$("#tabs").find(".tab-content").hide().filter(function() {
5975						return $(this).data("id") === hash;
5976					}).show();
5977
5978					return false;
5979				});
5980
5981		$(".courseItemIcon").each(function() {
5982			if($(this).data('type') == 'code'){
5983				$(this).append('<img src="/resources/images/' + getCourseAssetIconV1($(this).data("type")) + '" />');
5984			} else {
5985				$(this).text(getCourseAssetIcon($(this).data("type")));
5986			}
5987		});
5988		
5989		
5990		
5991		$('.rating').addRating({
5992			max: 5,
5993			selectedRatings: 0
5994		});
5995		
5996		var reviews = (function() {
5997			
5998			var isContentLoading = false, cont = null, skip = 0, template = _.template($("#reviewTemplate").html());
5999			
6000			function init() {
6001				cont = $("#reviewsCont");
6002				
6003				if(cont.length > 0) {
6004					loadNewData();
6005					
6006					$(".loadMoreReviewsBtn").on("click", function(e) {
6007						$(this).addClass("loading");
6008						loadNewData();
6009					});
6010				}
6011			}
6012			
6013			function loadNewData() {
6014				if(isContentLoading)	{
6015					return false;
6016				}
6017				
6018				getNewData();
6019			}
6020			
6021			function getNewData()	{
6022				isContentLoading = true;
6023				
6024				var packet = {
6025						url: ctx + "/store/courses/696cecf361729d185b1c7649/description/reviews/get",
6026						data: {limit: 5, skip: skip},
6027						success: function(data, params)	{
6028							
6029						var html = "", items = data.data;
6030						
6031						if(data.userReview !== undefined) {
6032							html = html + template( {item: data.userReview});
6033							$("#createReview").hide();
6034						}else if(skip === 0) {
6035							$("#createReview").show();
6036						}
6037							
6038					    	for(var i = 0;i < items.length; i++){
6039					    		html = html + template( {item:items[i]});
6040						}
6041					    	
6042					    	skip = skip + items.length;
6043					    	
6044					    	cont.children(".loading").before(html);
6045					    	
6046					    	if(data.total === 0 || data.total === skip) {
6047					    		$(".loadMoreReviewsBtn").hide();
6048						}
6049					    	
6050					    	if(cont.find(".review").length === 0) {	
6051							$("#createReview").find("textarea").attr("placeholder", "No Reviews yet. Be the first one to review this course.");
6052					    	}
6053					    	
6054					    	cont.find("time.timeago").timeago();
6055					    	
6056					    	cont.children(".loading").removeClass("loading");
6057							
6058					    	isContentLoading = false;
6059					}
6060				};
6061				
6062				getData(packet, {});
6063			}
6064			
6065			return {
6066				init: init
6067			};
6068			
6069		})();
6070		
6071			reviews.init();
6072			
6073			$(".createReviewBtn").on("click", function(e) {
6074				e.preventDefault();
6075				
6076				if(typeof SPUSER === "undefined") {
6077					$(".loginBtn:eq(0)").trigger("click");
6078					return;
6079				}
6080				
6081				var rating = parseInt($("#rating").val()), rtext = $("#createReview").find("textarea").val(), packet;
6082				
6083				if(rating < 1 || rating > 5) {
6084					showAlert("red", "Please choose a rating !!!");
6085					return false;
6086				}
6087				
6088				packet = {
6089						url: ctx + "/courses/696cecf361729d185b1c7649/review/add",
6090						data: {rating: rating, text: rtext},
6091						success: function(data, params) {
6092							var template = _.template($("#reviewTemplate").html());
6093							
6094							$("#reviewsCont").prepend(template({item: {_id: data.id, rating: rating, reviewtext: rtext, userName: '', userId: "", createdDate: {"$date": (new Date()).getTime()}}}));
6095							$("#reviewsCont").find(".review:eq(0)").find("time.timeago").timeago();
6096							$("#reviewsCont").find(".statusMsg").remove();
6097							$("#createReview").hide();
6098						}
6099				};
6100				
6101				postData(packet, {btn: $(this)});
6102				
6103				return false;
6104			});
6105			
6106			$(document).on("click", ".deleteMyReviewBtn", function(e) {
6107				e.preventDefault();
6108				
6109				if(!confirm("Are you sure?")) {
6110					return false;
6111				}
6112				
6113				var packet = {
6114						url: ctx + "/courses/696cecf361729d185b1c7649/review/"+$(this).data('id')+"/delete",
6115						data: {},
6116						success: function(data, params) {
6117							var template = _.template($("#reviewTemplate").html());
6118							params.btn.closest(".review").remove();
6119							
6120							if($("#reviewsCont").find(".review").length === 0) {
6121								$("#reviewsCont").prepend("<div class='text-center p-2 h5 statusMsg'>No reviews</div>");
6122							}
6123							
6124							$("#createReview").show();
6125						}
6126				};
6127				
6128				postData(packet, {btn: $(this)});
6129				
6130				return false;
6131			});
6132			
6133		
6134		
6135		$("#addToWishlistBtn").on("click", function(e) {
6136			if($(this).hasClass("loginBtn")) {
6137				return;
6138			}
6139			var packet = {
6140					url: ctx+"/wishlist/696cecf361729d185b1c7649/add",
6141					data: {},
6142					success: function(data, params) {
6143						params.btn.hide().siblings("button").show();
6144						showAlert("green", data.message);
6145						
6146						//fb pixel event .. AddToWishlist
6147			    	    		if(typeof fbq !== "undefined") {
6148			    	    			fbq('track', 'AddToWishlist', {content_name: contentTitle, content_type: "Product", content_category: '',
6149			    	    							content_ids: ["696cecf361729d185b1c7649"], currency: $("#orgCurrencyCode").val(), value: fbprice});
6150			    	    		}
6151					}
6152			}
6153			
6154			postData(packet, {btn: $(this)});
6155			
6156		});
6157		
6158		$("#removeFromWishlistBtn").on("click", function(e) {
6159			if($(this).hasClass("loginBtn")) {
6160				return;
6161			}
6162			var packet = {
6163					url: ctx+"/wishlist/696cecf361729d185b1c7649/remove",
6164					data: {},
6165					success: function(data, params) {
6166						params.btn.hide().siblings("button").show();
6167						showAlert("green", data.message);
6168					}
6169			};
6170			
6171			postData(packet, {btn: $(this)});
6172			
6173		});
6174		
6175		$(".product-list").find("input[type=radio]").on("click", function(e) {
6176			var radio = $(this);
6177			if(radio.is(":checked")) {
6178				radio.closest(".product").addClass("selected border").siblings().removeClass("selected border");
6179				gaprice= parseFloat(radio.closest(".product").find('.product-price').data('price'));
6180			}
6181		});
6182		 
6183		$(".product-list").find("input[type=radio]:checked").trigger("click");
6184
6185
6186		if (location.hash.indexOf("addtocart") > -1) {
6187			if($("#enrollBox .product-list .product").length > 1){
6188				location.hash = "enrollBox"
6189			} else if($(".buyBtn").length > 0){
6190				$(".buyBtn:visible").trigger("click");
6191				location.hash = "";
6192			}
6193		}
6194		
6195		if (location.hash.indexOf("reviews") > -1) {
6196			if($(".is-section[data-cat=205]").length > 0){
6197				window.scrollTo(0, $(".is-section[data-cat=205]:eq(0)").offset().top);
6198			} 
6199		} 
6200		
6201		$(window).bind( "hashchange", function(e) {
6202			if (location.hash.indexOf("reviews") > -1) {
6203				if($(".is-section[data-cat=205]").length > 0){
6204					window.scrollTo(0, $(".is-section[data-cat=205]:eq(0)").offset().top);
6205				} 
6206			} 
6207		});
6208	
6209		
6210		
6211		//fb pixel event .. ViewContent
6212		if(typeof fbq !== "undefined") {
6213			fbq('track', 'ViewContent', {content_name: contentTitle, content_type: "product", content_category: content_category,
6214							content_ids: ["696cecf361729d185b1c7649"], content_type: "Product", currency: $("#orgCurrencyCode").val(), value: fbprice});
6215		}
6216	</script>
6216
6217	
6218		
6218<script src="https://d502jbuhuh9wk.cloudfront.net/resources/pagebuilder2/box/box.js"
6219			type="text/javascript"></script>
6219
6220	
6221	
6221<script type="text/javascript">
6222		window.signupParams = {source: "course", platform: "web", sourceId: "696cecf361729d185b1c7649"};
6223		
6224	</script>
6224
6225	
6226	
6226<script src="https://d502jbuhuh9wk.cloudfront.net/static/files/lazyload.min.js"></script>
6226
6227	
6227<script type="text/javascript">
6228		var lazyLoadInstance = new LazyLoad({
6229		  unobserve_entered: true,
6230		  callback_enter: function(element) {
6231			  resizeCdnImage(element);
6232		  }
6233		});
6234	</script>
6234
6235</body>
6236</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.