!function(){"use strict";var e={64197:function(e){var t,n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,s={};((e,t)=>{for(var i in t)n(e,i,{get:t[i],enumerable:!0})})(s,{Alpine:()=>Ue,init:()=>init,refreshTree:()=>refreshTree}),e.exports=(t=s,((e,t,s,a)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let l of r(t))o.call(e,l)||l===s||n(e,l,{get:()=>t[l],enumerable:!(a=i(t,l))||a.enumerable});return e})(n({},"__esModule",{value:!0}),t));var a,l,c,u,d=!1,p=!1,f=[],h=-1;function scheduler(e){!function queueJob(e){f.includes(e)||f.push(e);!function queueFlush(){p||d||(d=!0,queueMicrotask(flushJobs))}()}(e)}function dequeueJob(e){let t=f.indexOf(e);-1!==t&&t>h&&f.splice(t,1)}function flushJobs(){d=!1,p=!0;for(let e=0;e{let r=e();JSON.stringify(r),i?n=r:queueMicrotask(()=>{t(r,n),n=r}),i=!1});return()=>c(r)}var g=[],_=[],v=[];function onElRemoved(e,t){"function"==typeof t?(e._x_cleanups||(e._x_cleanups=[]),e._x_cleanups.push(t)):(t=e,_.push(t))}function onAttributesAdded(e){g.push(e)}function onAttributeRemoved(e,t,n){e._x_attributeCleanups||(e._x_attributeCleanups={}),e._x_attributeCleanups[t]||(e._x_attributeCleanups[t]=[]),e._x_attributeCleanups[t].push(n)}function cleanupAttributes(e,t){e._x_attributeCleanups&&Object.entries(e._x_attributeCleanups).forEach(([n,i])=>{(void 0===t||t.includes(n))&&(i.forEach(e=>e()),delete e._x_attributeCleanups[n])})}var y=new MutationObserver(onMutate),x=!1;function startObservingMutations(){y.observe(document,{subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0}),x=!0}function stopObservingMutations(){!function flushObserver(){let e=y.takeRecords();b.push(()=>e.length>0&&onMutate(e));let t=b.length;queueMicrotask(()=>{if(b.length===t)for(;b.length>0;)b.shift()()})}(),y.disconnect(),x=!1}var b=[];function mutateDom(e){if(!x)return e();stopObservingMutations();let t=e();return startObservingMutations(),t}var w=!1,E=[];function onMutate(e){if(w)return void(E=E.concat(e));let t=[],n=new Set,i=new Map,r=new Map;for(let o=0;o{1===e.nodeType&&e._x_marker&&n.add(e)}),e[o].addedNodes.forEach(e=>{1===e.nodeType&&(n.has(e)?n.delete(e):e._x_marker||t.push(e))})),"attributes"===e[o].type)){let t=e[o].target,n=e[o].attributeName,s=e[o].oldValue,add2=()=>{i.has(t)||i.set(t,[]),i.get(t).push({name:n,value:t.getAttribute(n)})},remove=()=>{r.has(t)||r.set(t,[]),r.get(t).push(n)};t.hasAttribute(n)&&null===s?add2():t.hasAttribute(n)?(remove(),add2()):remove()}r.forEach((e,t)=>{cleanupAttributes(t,e)}),i.forEach((e,t)=>{g.forEach(n=>n(t,e))});for(let e of n)t.some(t=>t.contains(e))||_.forEach(t=>t(e));for(let e of t)e.isConnected&&v.forEach(t=>t(e));t=null,n=null,i=null,r=null}function scope(e){return mergeProxies(closestDataStack(e))}function addScopeToNode(e,t,n){return e._x_dataStack=[t,...closestDataStack(n||e)],()=>{e._x_dataStack=e._x_dataStack.filter(e=>e!==t)}}function closestDataStack(e){return e._x_dataStack?e._x_dataStack:"function"==typeof ShadowRoot&&e instanceof ShadowRoot?closestDataStack(e.host):e.parentNode?closestDataStack(e.parentNode):[]}function mergeProxies(e){return new Proxy({objects:e},k)}var k={ownKeys({objects:e}){return Array.from(new Set(e.flatMap(e=>Object.keys(e))))},has({objects:e},t){return t!=Symbol.unscopables&&e.some(e=>Object.prototype.hasOwnProperty.call(e,t)||Reflect.has(e,t))},get({objects:e},t,n){return"toJSON"==t?collapseProxies:Reflect.get(e.find(e=>Reflect.has(e,t))||{},t,n)},set({objects:e},t,n,i){const r=e.find(e=>Object.prototype.hasOwnProperty.call(e,t))||e[e.length-1],o=Object.getOwnPropertyDescriptor(r,t);return o?.set&&o?.get?o.set.call(i,n)||!0:Reflect.set(r,t,n)}};function collapseProxies(){return Reflect.ownKeys(this).reduce((e,t)=>(e[t]=Reflect.get(this,t),e),{})}function initInterceptors(e){let recurse=(t,n="")=>{Object.entries(Object.getOwnPropertyDescriptors(t)).forEach(([i,{value:r,enumerable:o}])=>{if(!1===o||void 0===r)return;if("object"==typeof r&&null!==r&&r.__v_skip)return;let s=""===n?i:`${n}.${i}`;var a;"object"==typeof r&&null!==r&&r._x_interceptor?t[i]=r.initialize(e,s,i):"object"!=typeof(a=r)||Array.isArray(a)||null===a||r===t||r instanceof Element||recurse(r,s)})};return recurse(e)}function interceptor(e,t=()=>{}){let n={initialValue:void 0,_x_interceptor:!0,initialize(t,n,i){return e(this.initialValue,()=>function get(e,t){return t.split(".").reduce((e,t)=>e[t],e)}(t,n),e=>set(t,n,e),n,i)}};return t(n),e=>{if("object"==typeof e&&null!==e&&e._x_interceptor){let t=n.initialize.bind(n);n.initialize=(i,r,o)=>{let s=e.initialize(i,r,o);return n.initialValue=s,t(i,r,o)}}else n.initialValue=e;return n}}function set(e,t,n){if("string"==typeof t&&(t=t.split(".")),1!==t.length){if(0===t.length)throw error;return e[t[0]]||(e[t[0]]={}),set(e[t[0]],t.slice(1),n)}e[t[0]]=n}var A={};function magic(e,t){A[e]=t}function injectMagics(e,t){let n=function getUtilities(e){let[t,n]=getElementBoundUtilities(e),i={interceptor:interceptor,...t};return onElRemoved(e,n),i}(t);return Object.entries(A).forEach(([i,r])=>{Object.defineProperty(e,`$${i}`,{get(){return r(t,n)},enumerable:!1})}),e}function tryCatch(e,t,n,...i){try{return n(...i)}catch(n){handleError(n,e,t)}}function handleError(e,t,n=void 0){e=Object.assign(e??{message:"No error message given."},{el:t,expression:n}),console.warn(`Alpine Expression Error: ${e.message}\n\n${n?'Expression: "'+n+'"\n\n':""}`,t),setTimeout(()=>{throw e},0)}var O=!0;function dontAutoEvaluateFunctions(e){let t=O;O=!1;let n=e();return O=t,n}function evaluate(e,t,n={}){let i;return evaluateLater(e,t)(e=>i=e,n),i}function evaluateLater(...e){return T(...e)}var T=function normalEvaluator(e,t){let n={};injectMagics(n,e);let i=[n,...closestDataStack(e)],r="function"==typeof t?generateEvaluatorFromFunction(i,t):function generateEvaluatorFromString(e,t,n){let i=function generateFunctionFromString(e,t){if(R[e])return R[e];let n=Object.getPrototypeOf(async function(){}).constructor,i=/^[\n\s]*if.*\(.*\)/.test(e.trim())||/^(let|const)\s/.test(e.trim())?`(async()=>{ ${e} })()`:e;const safeAsyncFunction=()=>{try{let t=new n(["__self","scope"],`with (scope) { __self.result = ${i} }; __self.finished = true; return __self.result;`);return Object.defineProperty(t,"name",{value:`[Alpine] ${e}`}),t}catch(n){return handleError(n,t,e),Promise.resolve()}};let r=safeAsyncFunction();return R[e]=r,r}(t,n);return(r=()=>{},{scope:o={},params:s=[],context:a}={})=>{i.result=void 0,i.finished=!1;let l=mergeProxies([o,...e]);if("function"==typeof i){let e=i.call(a,i,l).catch(e=>handleError(e,n,t));i.finished?(runIfTypeOfFunction(r,i.result,l,s,n),i.result=void 0):e.then(e=>{runIfTypeOfFunction(r,e,l,s,n)}).catch(e=>handleError(e,n,t)).finally(()=>i.result=void 0)}}}(i,t,e);return tryCatch.bind(null,e,t,r)};function generateEvaluatorFromFunction(e,t){return(n=()=>{},{scope:i={},params:r=[],context:o}={})=>{runIfTypeOfFunction(n,t.apply(mergeProxies([i,...e]),r))}}var R={};function runIfTypeOfFunction(e,t,n,i,r){if(O&&"function"==typeof t){let o=t.apply(n,i);o instanceof Promise?o.then(t=>runIfTypeOfFunction(e,t,n,i)).catch(e=>handleError(e,r,t)):e(o)}else"object"==typeof t&&t instanceof Promise?t.then(t=>e(t)):e(t)}var S="x-";function prefix(e=""){return S+e}var C={};function directive(e,t){return C[e]=t,{before(t){if(!C[t])return void console.warn(String.raw`Cannot find directive \`${t}\`. \`${e}\` will use the default order of execution`);const n=$.indexOf(t);$.splice(n>=0?n:$.indexOf("DEFAULT"),0,e)}}}function directives(e,t,n){if(t=Array.from(t),e._x_virtualDirectives){let n=Object.entries(e._x_virtualDirectives).map(([e,t])=>({name:e,value:t})),i=attributesOnly(n);n=n.map(e=>i.find(t=>t.name===e.name)?{name:`x-bind:${e.name}`,value:`"${e.value}"`}:e),t=t.concat(n)}let i={},r=t.map(toTransformedAttributes((e,t)=>i[e]=t)).filter(outNonAlpineAttributes).map(function toParsedDirectives(e,t){return({name:n,value:i})=>{let r=n.match(alpineAttributeRegex()),o=n.match(/:([a-zA-Z0-9\-_:]+)/),s=n.match(/\.[^.\]]+(?=[^\]]*$)/g)||[],a=t||e[n]||n;return{type:r?r[1]:null,value:o?o[1]:null,modifiers:s.map(e=>e.replace(".","")),expression:i,original:a}}}(i,n)).sort(byPriority);return r.map(t=>function getDirectiveHandler(e,t){let noop=()=>{},n=C[t.type]||noop,[i,r]=getElementBoundUtilities(e);onAttributeRemoved(e,t.original,r);let fullHandler=()=>{e._x_ignore||e._x_ignoreSelf||(n.inline&&n.inline(e,t,i),n=n.bind(n,e,t,i),N?P.get(I).push(n):n())};return fullHandler.runCleanups=r,fullHandler}(e,t))}function attributesOnly(e){return Array.from(e).map(toTransformedAttributes()).filter(e=>!outNonAlpineAttributes(e))}var N=!1,P=new Map,I=Symbol();function getElementBoundUtilities(e){let t=[],[n,i]=function elementBoundEffect(e){let cleanup2=()=>{};return[t=>{let n=l(t);return e._x_effects||(e._x_effects=new Set,e._x_runEffects=()=>{e._x_effects.forEach(e=>e())}),e._x_effects.add(n),cleanup2=()=>{void 0!==n&&(e._x_effects.delete(n),c(n))},n},()=>{cleanup2()}]}(e);t.push(i);return[{Alpine:Y,effect:n,cleanup:e=>t.push(e),evaluateLater:evaluateLater.bind(evaluateLater,e),evaluate:evaluate.bind(evaluate,e)},()=>t.forEach(e=>e())]}var startingWith=(e,t)=>({name:n,value:i})=>(n.startsWith(e)&&(n=n.replace(e,t)),{name:n,value:i});function toTransformedAttributes(e=()=>{}){return({name:t,value:n})=>{let{name:i,value:r}=j.reduce((e,t)=>t(e),{name:t,value:n});return i!==t&&e(i,t),{name:i,value:r}}}var j=[];function mapAttributes(e){j.push(e)}function outNonAlpineAttributes({name:e}){return alpineAttributeRegex().test(e)}var alpineAttributeRegex=()=>new RegExp(`^${S}([^:^.]+)\\b`);var M="DEFAULT",$=["ignore","ref","data","id","anchor","bind","init","for","model","modelable","transition","show","if",M,"teleport"];function byPriority(e,t){let n=-1===$.indexOf(e.type)?M:e.type,i=-1===$.indexOf(t.type)?M:t.type;return $.indexOf(n)-$.indexOf(i)}function dispatch(e,t,n={}){e.dispatchEvent(new CustomEvent(t,{detail:n,bubbles:!0,composed:!0,cancelable:!0}))}function walk(e,t){if("function"==typeof ShadowRoot&&e instanceof ShadowRoot)return void Array.from(e.children).forEach(e=>walk(e,t));let n=!1;if(t(e,()=>n=!0),n)return;let i=e.firstElementChild;for(;i;)walk(i,t),i=i.nextElementSibling}function warn(e,...t){console.warn(`Alpine Warning: ${e}`,...t)}var D=!1;var U=[],L=[];function rootSelectors(){return U.map(e=>e())}function allSelectors(){return U.concat(L).map(e=>e())}function addRootSelector(e){U.push(e)}function addInitSelector(e){L.push(e)}function closestRoot(e,t=!1){return findClosest(e,e=>{if((t?allSelectors():rootSelectors()).some(t=>e.matches(t)))return!0})}function findClosest(e,t){if(e){if(t(e))return e;if(e._x_teleportBack&&(e=e._x_teleportBack),e.parentElement)return findClosest(e.parentElement,t)}}var F=[];var B=1;function initTree(e,t=walk,n=()=>{}){findClosest(e,e=>e._x_ignore)||function deferHandlingDirectives(e){N=!0;let t=Symbol();I=t,P.set(t,[]);let flushHandlers=()=>{for(;P.get(t).length;)P.get(t).shift()();P.delete(t)};e(flushHandlers),N=!1,flushHandlers()}(()=>{t(e,(e,t)=>{e._x_marker||(n(e,t),F.forEach(n=>n(e,t)),directives(e,e.attributes).forEach(e=>e()),e._x_ignore||(e._x_marker=B++),e._x_ignore&&t())})})}function destroyTree(e,t=walk){t(e,e=>{!function cleanupElement(e){for(e._x_effects?.forEach(dequeueJob);e._x_cleanups?.length;)e._x_cleanups.pop()()}(e),cleanupAttributes(e),delete e._x_marker})}var G=[],z=!1;function nextTick(e=()=>{}){return queueMicrotask(()=>{z||setTimeout(()=>{releaseNextTicks()})}),new Promise(t=>{G.push(()=>{e(),t()})})}function releaseNextTicks(){for(z=!1;G.length;)G.shift()()}function setClasses(e,t){return Array.isArray(t)?setClassesFromString(e,t.join(" ")):"object"==typeof t&&null!==t?function setClassesFromObject(e,t){let split=e=>e.split(" ").filter(Boolean),n=Object.entries(t).flatMap(([e,t])=>!!t&&split(e)).filter(Boolean),i=Object.entries(t).flatMap(([e,t])=>!t&&split(e)).filter(Boolean),r=[],o=[];return i.forEach(t=>{e.classList.contains(t)&&(e.classList.remove(t),o.push(t))}),n.forEach(t=>{e.classList.contains(t)||(e.classList.add(t),r.push(t))}),()=>{o.forEach(t=>e.classList.add(t)),r.forEach(t=>e.classList.remove(t))}}(e,t):"function"==typeof t?setClasses(e,t()):setClassesFromString(e,t)}function setClassesFromString(e,t){return t=!0===t?t="":t||"",n=t.split(" ").filter(t=>!e.classList.contains(t)).filter(Boolean),e.classList.add(...n),()=>{e.classList.remove(...n)};var n}function setStyles(e,t){return"object"==typeof t&&null!==t?function setStylesFromObject(e,t){let n={};return Object.entries(t).forEach(([t,i])=>{n[t]=e.style[t],t.startsWith("--")||(t=function kebabCase(e){return e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}(t)),e.style.setProperty(t,i)}),setTimeout(()=>{0===e.style.length&&e.removeAttribute("style")}),()=>{setStyles(e,n)}}(e,t):function setStylesFromString(e,t){let n=e.getAttribute("style",t);return e.setAttribute("style",t),()=>{e.setAttribute("style",n||"")}}(e,t)}function once(e,t=()=>{}){let n=!1;return function(){n?t.apply(this,arguments):(n=!0,e.apply(this,arguments))}}function registerTransitionObject(e,t,n={}){e._x_transition||(e._x_transition={enter:{during:n,start:n,end:n},leave:{during:n,start:n,end:n},in(n=()=>{},i=()=>{}){transition(e,t,{during:this.enter.during,start:this.enter.start,end:this.enter.end},n,i)},out(n=()=>{},i=()=>{}){transition(e,t,{during:this.leave.during,start:this.leave.start,end:this.leave.end},n,i)}})}function closestHide(e){let t=e.parentNode;if(t)return t._x_hidePromise?t:closestHide(t)}function transition(e,t,{during:n,start:i,end:r}={},o=()=>{},s=()=>{}){if(e._x_transitioning&&e._x_transitioning.cancel(),0===Object.keys(n).length&&0===Object.keys(i).length&&0===Object.keys(r).length)return o(),void s();let a,l,c;!function performTransition(e,t){let n,i,r,o=once(()=>{mutateDom(()=>{n=!0,i||t.before(),r||(t.end(),releaseNextTicks()),t.after(),e.isConnected&&t.cleanup(),delete e._x_transitioning})});e._x_transitioning={beforeCancels:[],beforeCancel(e){this.beforeCancels.push(e)},cancel:once(function(){for(;this.beforeCancels.length;)this.beforeCancels.shift()();o()}),finish:o},mutateDom(()=>{t.start(),t.during()}),function holdNextTicks(){z=!0}(),requestAnimationFrame(()=>{if(n)return;let o=1e3*Number(getComputedStyle(e).transitionDuration.replace(/,.*/,"").replace("s","")),s=1e3*Number(getComputedStyle(e).transitionDelay.replace(/,.*/,"").replace("s",""));0===o&&(o=1e3*Number(getComputedStyle(e).animationDuration.replace("s",""))),mutateDom(()=>{t.before()}),i=!0,requestAnimationFrame(()=>{n||(mutateDom(()=>{t.end()}),releaseNextTicks(),setTimeout(e._x_transitioning.finish,o+s),r=!0)})})}(e,{start(){a=t(e,i)},during(){l=t(e,n)},before:o,end(){a(),c=t(e,r)},after:s,cleanup(){l(),c()}})}function modifierValue(e,t,n){if(-1===e.indexOf(t))return n;const i=e[e.indexOf(t)+1];if(!i)return n;if("scale"===t&&isNaN(i))return n;if("duration"===t||"delay"===t){let e=i.match(/([0-9]+)ms/);if(e)return e[1]}return"origin"===t&&["top","right","left","center","bottom"].includes(e[e.indexOf(t)+2])?[i,e[e.indexOf(t)+2]].join(" "):i}directive("transition",(e,{value:t,modifiers:n,expression:i},{evaluate:r})=>{"function"==typeof i&&(i=r(i)),!1!==i&&(i&&"boolean"!=typeof i?function registerTransitionsFromClassString(e,t,n){registerTransitionObject(e,setClasses,"");let i={enter:t=>{e._x_transition.enter.during=t},"enter-start":t=>{e._x_transition.enter.start=t},"enter-end":t=>{e._x_transition.enter.end=t},leave:t=>{e._x_transition.leave.during=t},"leave-start":t=>{e._x_transition.leave.start=t},"leave-end":t=>{e._x_transition.leave.end=t}};i[n](t)}(e,i,t):function registerTransitionsFromHelper(e,t,n){registerTransitionObject(e,setStyles);let i=!t.includes("in")&&!t.includes("out")&&!n,r=i||t.includes("in")||["enter"].includes(n),o=i||t.includes("out")||["leave"].includes(n);t.includes("in")&&!i&&(t=t.filter((e,n)=>nn>t.indexOf("out")));let s=!t.includes("opacity")&&!t.includes("scale"),a=s||t.includes("opacity"),l=s||t.includes("scale"),c=a?0:1,u=l?modifierValue(t,"scale",95)/100:1,d=modifierValue(t,"delay",0)/1e3,p=modifierValue(t,"origin","center"),f="opacity, transform",h=modifierValue(t,"duration",150)/1e3,m=modifierValue(t,"duration",75)/1e3,g="cubic-bezier(0.4, 0.0, 0.2, 1)";r&&(e._x_transition.enter.during={transformOrigin:p,transitionDelay:`${d}s`,transitionProperty:f,transitionDuration:`${h}s`,transitionTimingFunction:g},e._x_transition.enter.start={opacity:c,transform:`scale(${u})`},e._x_transition.enter.end={opacity:1,transform:"scale(1)"});o&&(e._x_transition.leave.during={transformOrigin:p,transitionDelay:`${d}s`,transitionProperty:f,transitionDuration:`${m}s`,transitionTimingFunction:g},e._x_transition.leave.start={opacity:1,transform:"scale(1)"},e._x_transition.leave.end={opacity:c,transform:`scale(${u})`})}(e,n,t))}),window.Element.prototype._x_toggleAndCascadeWithTransitions=function(e,t,n,i){const r="visible"===document.visibilityState?requestAnimationFrame:setTimeout;let clickAwayCompatibleShow=()=>r(n);t?e._x_transition&&(e._x_transition.enter||e._x_transition.leave)?e._x_transition.enter&&(Object.entries(e._x_transition.enter.during).length||Object.entries(e._x_transition.enter.start).length||Object.entries(e._x_transition.enter.end).length)?e._x_transition.in(n):clickAwayCompatibleShow():e._x_transition?e._x_transition.in(n):clickAwayCompatibleShow():(e._x_hidePromise=e._x_transition?new Promise((t,n)=>{e._x_transition.out(()=>{},()=>t(i)),e._x_transitioning&&e._x_transitioning.beforeCancel(()=>n({isFromCancelledTransition:!0}))}):Promise.resolve(i),queueMicrotask(()=>{let t=closestHide(e);t?(t._x_hideChildren||(t._x_hideChildren=[]),t._x_hideChildren.push(e)):r(()=>{let hideAfterChildren=e=>{let t=Promise.all([e._x_hidePromise,...(e._x_hideChildren||[]).map(hideAfterChildren)]).then(([e])=>e?.());return delete e._x_hidePromise,delete e._x_hideChildren,t};hideAfterChildren(e).catch(e=>{if(!e.isFromCancelledTransition)throw e})})}))};var V=!1;function skipDuringClone(e,t=()=>{}){return(...n)=>V?t(...n):e(...n)}var q=[];function interceptClone(e){q.push(e)}var K=!1;function dontRegisterReactiveSideEffects(e){let t=l;overrideEffect((e,n)=>{let i=t(e);return c(i),()=>{}}),e(),overrideEffect(t)}function bind(e,t,n,i=[]){switch(e._x_bindings||(e._x_bindings=a({})),e._x_bindings[t]=n,t=i.includes("camel")?function camelCase(e){return e.toLowerCase().replace(/-(\w)/g,(e,t)=>t.toUpperCase())}(t):t){case"value":!function bindInputValue(e,t){if(isRadio(e))void 0===e.attributes.value&&(e.value=t),window.fromModel&&(e.checked="boolean"==typeof t?safeParseBoolean(e.value)===t:checkedAttrLooseCompare(e.value,t));else if(isCheckbox(e))Number.isInteger(t)?e.value=t:Array.isArray(t)||"boolean"==typeof t||[null,void 0].includes(t)?Array.isArray(t)?e.checked=t.some(t=>checkedAttrLooseCompare(t,e.value)):e.checked=!!t:e.value=String(t);else if("SELECT"===e.tagName)!function updateSelect(e,t){const n=[].concat(t).map(e=>e+"");Array.from(e.options).forEach(e=>{e.selected=n.includes(e.value)})}(e,t);else{if(e.value===t)return;e.value=void 0===t?"":t}}(e,n);break;case"style":!function bindStyles(e,t){e._x_undoAddedStyles&&e._x_undoAddedStyles();e._x_undoAddedStyles=setStyles(e,t)}(e,n);break;case"class":!function bindClasses(e,t){e._x_undoAddedClasses&&e._x_undoAddedClasses();e._x_undoAddedClasses=setClasses(e,t)}(e,n);break;case"selected":case"checked":!function bindAttributeAndProperty(e,t,n){bindAttribute(e,t,n),function setPropertyIfChanged(e,t,n){e[t]!==n&&(e[t]=n)}(e,t,n)}(e,t,n);break;default:bindAttribute(e,t,n)}}function bindAttribute(e,t,n){[null,void 0,!1].includes(n)&&function attributeShouldntBePreservedIfFalsy(e){return!["aria-pressed","aria-checked","aria-expanded","aria-selected"].includes(e)}(t)?e.removeAttribute(t):(isBooleanAttr(t)&&(n=t),function setIfChanged(e,t,n){e.getAttribute(t)!=n&&e.setAttribute(t,n)}(e,t,n))}function checkedAttrLooseCompare(e,t){return e==t}function safeParseBoolean(e){return!![1,"1","true","on","yes",!0].includes(e)||![0,"0","false","off","no",!1].includes(e)&&(e?Boolean(e):null)}var W=new Set(["allowfullscreen","async","autofocus","autoplay","checked","controls","default","defer","disabled","formnovalidate","inert","ismap","itemscope","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","selected","shadowrootclonable","shadowrootdelegatesfocus","shadowrootserializable"]);function isBooleanAttr(e){return W.has(e)}function getAttributeBinding(e,t,n){let i=e.getAttribute(t);return null===i?"function"==typeof n?n():n:""===i||(isBooleanAttr(t)?!![t,"true"].includes(i):i)}function isCheckbox(e){return"checkbox"===e.type||"ui-checkbox"===e.localName||"ui-switch"===e.localName}function isRadio(e){return"radio"===e.type||"ui-radio"===e.localName}function debounce(e,t){let n;return function(){const i=this,r=arguments;clearTimeout(n),n=setTimeout(function(){n=null,e.apply(i,r)},t)}}function throttle(e,t){let n;return function(){let i=this,r=arguments;n||(e.apply(i,r),n=!0,setTimeout(()=>n=!1,t))}}function entangle({get:e,set:t},{get:n,set:i}){let r,o,s=!0,a=l(()=>{let a=e(),l=n();if(s)i(cloneIfObject(a)),s=!1;else{let e=JSON.stringify(a),n=JSON.stringify(l);e!==r?i(cloneIfObject(a)):e!==n&&t(cloneIfObject(l))}r=JSON.stringify(e()),o=JSON.stringify(n())});return()=>{c(a)}}function cloneIfObject(e){return"object"==typeof e?JSON.parse(JSON.stringify(e)):e}var J={},H=!1;var Z={};function applyBindingsObject(e,t,n){let i=[];for(;i.length;)i.pop()();let r=Object.entries(t).map(([e,t])=>({name:e,value:t})),o=attributesOnly(r);return r=r.map(e=>o.find(t=>t.name===e.name)?{name:`x-bind:${e.name}`,value:`"${e.value}"`}:e),directives(e,r,n).map(e=>{i.push(e.runCleanups),e()}),()=>{for(;i.length;)i.pop()()}}var X={};var Y={get reactive(){return a},get release(){return c},get effect(){return l},get raw(){return u},version:"3.15.0",flushAndStopDeferringMutations:function flushAndStopDeferringMutations(){w=!1,onMutate(E),E=[]},dontAutoEvaluateFunctions:dontAutoEvaluateFunctions,disableEffectScheduling:function disableEffectScheduling(e){m=!1,e(),m=!0},startObservingMutations:startObservingMutations,stopObservingMutations:stopObservingMutations,setReactivityEngine:function setReactivityEngine(e){a=e.reactive,c=e.release,l=t=>e.effect(t,{scheduler:e=>{m?scheduler(e):e()}}),u=e.raw},onAttributeRemoved:onAttributeRemoved,onAttributesAdded:onAttributesAdded,closestDataStack:closestDataStack,skipDuringClone:skipDuringClone,onlyDuringClone:function onlyDuringClone(e){return(...t)=>V&&e(...t)},addRootSelector:addRootSelector,addInitSelector:addInitSelector,interceptClone:interceptClone,addScopeToNode:addScopeToNode,deferMutations:function deferMutations(){w=!0},mapAttributes:mapAttributes,evaluateLater:evaluateLater,interceptInit:function interceptInit(e){F.push(e)},setEvaluator:function setEvaluator(e){T=e},mergeProxies:mergeProxies,extractProp:function extractProp(e,t,n,i=!0){if(e._x_bindings&&void 0!==e._x_bindings[t])return e._x_bindings[t];if(e._x_inlineBindings&&void 0!==e._x_inlineBindings[t]){let n=e._x_inlineBindings[t];return n.extract=i,dontAutoEvaluateFunctions(()=>evaluate(e,n.expression))}return getAttributeBinding(e,t,n)},findClosest:findClosest,onElRemoved:onElRemoved,closestRoot:closestRoot,destroyTree:destroyTree,interceptor:interceptor,transition:transition,setStyles:setStyles,mutateDom:mutateDom,directive:directive,entangle:entangle,throttle:throttle,debounce:debounce,evaluate:evaluate,initTree:initTree,nextTick:nextTick,prefixed:prefix,prefix:function setPrefix(e){S=e},plugin:function plugin(e){(Array.isArray(e)?e:[e]).forEach(e=>e(Y))},magic:magic,store:function store(e,t){if(H||(J=a(J),H=!0),void 0===t)return J[e];J[e]=t,initInterceptors(J[e]),"object"==typeof t&&null!==t&&t.hasOwnProperty("init")&&"function"==typeof t.init&&J[e].init()},start:function start(){D&&warn("Alpine has already been initialized on this page. Calling Alpine.start() more than once can cause problems."),D=!0,document.body||warn("Unable to initialize. Trying to load Alpine before `` is available. Did you forget to add `defer` in Alpine's `

Linux Challenge Lab Bundle – 6 Months Access

Gain hands-on experience with 60+ Linux labs covering system administration, scripting, network troubleshooting, permissions, backups, and package management. Practise real-world tasks like hardening SSH, automating cron jobs, configuring rsyslog, NFS, ACLs, and working with Bash, sed, awk, and more. Perfect for sysadmins, DevOps engineers, and certification candidates. Labs run in a secure sandbox, no installation required.

Price: 

£149.00

What's Included

Study Plans & Checklists

Organised, certification-specific guides to help you stay focused and accountable. Includes Security+, A+, Network+, Azure, and more.

Certification Maps

Visual pathways showing what to learn, when to learn it, and how labs align to your career goals.

Toolkits & Templates

CV templates, LinkedIn optimisation checklists, interview prep decks, and more.

Features For Learners

Get Real Skills, Get Real Opportunities.

  •  60+ hands-on Linux administration and scripting labs
  •  Configure SSH, ACLs, firewalls, and security hardening
  •  Install, configure, and manage Linux services and packages
  •  Automate tasks using Bash, cron, and shell scripting
  •  Troubleshoot DNS, routing, FTP, and IP configurations
  •  Real-world lab tasks – guided from beginner to expert
  •  Practise for Linux+, RHCSA, and other admin exams
  •  No VM setup required – secure browser-based sandbox