1<!DOCTYPE html> 2<html lang="en" dir="ltr" prefix="content: http://purl.org/rss/1.0/modules/content/ dc: http://purl.org/dc/terms/ foaf: http://xmlns.com/foaf/0.1/ og: http://ogp.me/ns# rdfs: http://www.w3.org/2000/01/rdf-schema# schema: http://schema.org/ sioc: http://rdfs.org/sioc/ns# sioct: http://rdfs.org/sioc/types# skos: http://www.w3.org/2004/02/skos/core# xsd: http://www.w3.org/2001/XMLSchema# "> 3 <head> 4 <meta charset="utf-8" />
4<script type="text/javascript">(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:"577786577",accountID:"690534",trustKey:"690534",xpid:"Ug8HVFVXGwYHU1ZaAgIEVg==",licenseKey:"55613def96",applicationID:"577785330",browserID:"577786577"};;/*! For license information please see nr-loader-spa-1.322.0.min.js.LICENSE.txt */ 5(()=>{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};
5e.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;
5const 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);
5if(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$:()=>
5o,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])}
5(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}
5;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)=>
5{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
5ine_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()=>
5{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)=>
5null==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
5dTimingMethod(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
5imeToRegister: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})})}
5return 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"
5!==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);
5if(!(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)}
5);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)})});
5class 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
5h(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>
5 6<link rel="canonical" href="https://www.tes.com/" /> 7<link rel="shortlink" href="https://www.tes.com/" /> 8<meta name="description" content="Tes is dedicated to supporting the worldâs teachers. Our mission is to enable great teaching by helping educators to find the tools and technology they need to excel and by supporting them throughout their career and professional development." /> 9<meta name="Generator" content="Drupal 9 (https://www.drupal.org)" /> 10<meta name="MobileOptimized" content="width" /> 11<meta name="HandheldFriendly" content="true" /> 12<meta name="viewport" content="width=device-width, initial-scale=1.0" /> 13<link rel="apple-touch-icon" sizes="180x180" href="/themes/custom/tes_marketing/tes-180x180.png" /> 14<link rel="icon" sizes="192x192" href="/themes/custom/tes_marketing/tes-192x192.png" /> 15<link rel="alternate" hreflang="x-default" href="https://www.tes.com/together-we-build-trusted-education-solutions" /> 16<link rel="icon" href="/themes/custom/tes_marketing/favicon.ico" type="image/vnd.microsoft.icon" /> 17<link rel="alternate" hreflang="en" href="https://www.tes.com/" /> 18<link rel="alternate" hreflang="en-gb" href="https://www.tes.com/en-gb" /> 19<link rel="alternate" hreflang="en-au" href="https://www.tes.com/en-au" />
20<script src="https://assets.tes.com/marketing/s3fs-public/google_tag/google_tag_/google_tag.script.js?tlu3x7" defer></script>
20 21 22 <title>Tes - Education Jobs, Teaching Resources, School Software & Magazine</title> 23 <link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/ajax-progress.module.css?tluyh3" /> 24<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/align.module.css?tluyh3" /> 25<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/autocomplete-loading.module.css?tluyh3" /> 26<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/fieldgroup.module.css?tluyh3" /> 27<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/container-inline.module.css?tluyh3" /> 28<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/clearfix.module.css?tluyh3" /> 29<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/details.module.css?tluyh3" /> 30<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/hidden.module.css?tluyh3" /> 31<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/item-list.module.css?tluyh3" /> 32<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/js.module.css?tluyh3" /> 33<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/nowrap.module.css?tluyh3" /> 34<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/position-container.module.css?tluyh3" /> 35<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/progress.module.css?tluyh3" /> 36<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/reset-appearance.module.css?tluyh3" /> 37<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/resize.module.css?tluyh3" /> 38<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/sticky-header.module.css?tluyh3" /> 39<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/system-status-counter.css?tluyh3" /> 40<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/system-status-report-counters.css?tluyh3" /> 41<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/system-status-report-general-info.css?tluyh3" /> 42<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/tabledrag.module.css?tluyh3" /> 43<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/tablesort.module.css?tluyh3" /> 44<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/tree-child.module.css?tluyh3" /> 45<link rel="stylesheet" media="all" href="/core/themes/stable/css/media/oembed.formatter.css?tluyh3" /> 46<link rel="stylesheet" media="all" href="/modules/contrib/paragraphs/css/paragraphs.unpublished.css?tluyh3" /> 47<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/molecules/footer-menu/css/footer-menu.css?tluyh3" /> 48<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/organisms/footer/css/footer.css?tluyh3" /> 49<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/molecules/back-to-top/css/back-to-top.css?tluyh3" /> 50<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/atoms/row/css/row.css?tluyh3" /> 51<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/atoms/wysiwyg-content/css/wysiwyg-content.css?tluyh3" /> 52<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/atoms/rich-content-row/css/rich-content-row.css?tluyh3" /> 53<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/organisms/widget-summary-feature/css/widget-summary-feature.css?tluyh3" /> 54<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/molecules/content-card-update/css/content-card-update.css?tluyh3" /> 55<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/atoms/grid/css/grid.css?tluyh3" /> 56<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/organisms/widget-cards/css/widget-cards.css?tluyh3" /> 57<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/atoms/video/css/video.css?tluyh3" /> 58<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/atoms/carousel/css/carou
58sel.css?tluyh3" /> 59<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/organisms/hero/css/hero.css?tluyh3" /> 60<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/templates/basic-page/css/basic-page.css?tluyh3" /> 61<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/molecules/region-selector/css/region-selector.css?tluyh3" /> 62<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/molecules/main-menu-mobile/css/main-menu-mobile.css?tluyh3" /> 63<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/molecules/main-menu-desktop/css/main-menu-desktop.css?tluyh3" /> 64<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/molecules/menu/css/menu.css?tluyh3" /> 65<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/organisms/header/css/header.css?tluyh3" /> 66<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/css/tes.base.css?tluyh3" /> 67<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/css/tes.drupal.css?tluyh3" /> 68 69
69<script src="https://wchat.freshchat.com/js/widget.js" async></script>
69 70 71
71<script> 72 // Switch <iframe> "src" to "data-src" 73 // https://my.onetrust.com/s/article/UUID-518074a1-a6da-81c3-be52-bae7685d9c94?language=en_US#UUID-518074a1-a6da-81c3-be52-bae7685d9c94_UUID-e247679f-85f0-dad0-449c-b73bcdd45a97 74 (function () { 75 const srcRegex = /^https:\/\/(.*)?(youtube|vimeo)/i; 76 77 function switchSrc(mutationsList) { 78 for (const mutation of mutationsList) { 79 if (mutation.type !== "childList") continue; 80 81 for (const node of mutation.addedNodes) { 82 if (node.tagName !== "IFRAME" || !srcRegex.test(node.src)) 83 continue; 84 85 node.dataset.src = node.src; 86 node.src = ""; 87 // Category ID: "Targeting cookies" 88 // https://my.onetrust.com/s/article/UUID-8102e851-d860-d465-d8d6-b1d636d68eb9?language=en_US#UUID-8102e851-d860-d465-d8d6-b1d636d68eb9_section-idm443162174729116 89 node.classList.add("optanon-category-C0004"); 90 91 var iframeDoc = 92 node.contentDocument || node.contentWindow.document; 93 94 iframeDoc.open(); 95 iframeDoc.write( 96 `<html><head><style>html{font-family:Arial,sans-serif;}body{margin:0;padding:0;height:100%;width:100%;display:flex;justify-content:center;align-items:center;text-align:center;flex-direction:column;font-size:16px;}</style></head> 97 <body> 98 <p style="margin:0;font-size:1rem;">To view this video, you need to accept marketing cookies. Please update your cookie preferences for this site or you can clear your cache and cookies, and then refresh this page to accept cookies.</p> 99 </body> 100 </html>` 101 ); 102 iframeDoc.close(); 103 } 104 } 105 } 106 107 const observer = new MutationObserver(switchSrc); 108 observer.observe(document.documentElement, { 109 childList: true, 110 subtree: true, 111 }); 112 })(); 113 </script>
113 114 <!-- Google Tag Manager --> 115
115<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 116 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 117 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.setAttributeNode(d.createAttribute("data-ot-ignore"));j.src= 118 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 119 })(window,document,'script','dataLayer', 'GTM-56WRTLG'); 120 </script>
120 121 <!-- End Google Tag Manager --> 122 <!-- 123 Show message with manage cookies button if iframe media blocked. 124 Once cookies are accepted through the manage cookies button, the media will load automatically. 125 --> 126
126<script src="/themes/custom/tes_marketing/js/onetrust-helper.js" data-ot-ignore defer></script>
126 127 </head> 128 <body> 129 <!-- Google Tag Manager (noscript) -->
vendor: 72 bytes, lines 129-130
129 130 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
130GTM-56WRTLG
vendor: 98 bytes, lines 130-133
130" 131 height="0" width="0" style="display:none;visibility:hidden"></iframe> 132 </noscript> 133
133<!-- End Google Tag Manager (noscript) --> 134 <link rel="preconnect" href="https://fonts.googleapis.com"> 135 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 136 <link href="https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,400;0,700;0,900;1,400;1,700;1,900&display=swap" rel="stylesheet"> 137 138 <a href="#main-content" class="visually-hidden focusable"> 139 Skip to main content 140 </a>
vendor: 72 bytes, lines 140-141
140 141 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
141GTM-K892ZB4
vendor: 89 bytes, lines 141-142
141" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 142
142<div class="dialog-off-canvas-main-canvas" data-off-canvas-main-canvas> 143 <div class="layout-container" data-page-theme=""> 144 145 146 147 148<div class="o-header" data-state="" data-is-minimal="false"> 149 <header> 150 <div class="b-container"> 151 <div class="o-header__columns"> 152 <div class="o-header__column"> 153 <a href="/" class="o-header__home-link" data-testid="home-tes"> 154 <span class="o-header__logo" >TES</span></a> 155 </div> 156 157 <div class="o-header__column"> 158 <div class="o-header__secondary-navigation-region"> 159 <nav> 160 161 162 163 <div class="m-menu"> 164 <ul class="m-menu__list"> 165 166 <li class="m-menu__list-item " > 167 <div class="m-menu__list-item-inner" > 168 <a class="m-menu__link" href="https://www.tes.com/for-schools/blog" data-testid="blog"> 169 Blog 170 </a> 171 </div> 172 173 </li> 174 175 <li class="m-menu__list-item " > 176 <div class="m-menu__list-item-inner" > 177 <a class="m-menu__link" href="https://www.tes.com/schools-awards/international" data-testid="tes-awards"> 178 Tes Awards for International Schools 179 </a> 180 </div> 181 182 </li> 183 184 <li class="m-menu__list-item " > 185 <div class="m-menu__list-item-inner" > 186 <a class="m-menu__link" href="https://www.tes.com/contact" data-testid="contact-us"> 187 Contact Us 188 </a> 189 </div> 190 191 </li> 192 193 <li class="m-menu__list-item " > 194 <div class="m-menu__list-item-inner" > 195 <a class="m-menu__link" href="https://www.tes.com/login" data-testid="log-in"> 196 Log in 197 </a> 198 </div> 199 200 </li> 201 </ul> 202 </div> 203 204 205 </nav> 206 207 <div id="block-teslanguageswitcherdesktop"> 208 209 210 211<div class="m-region-selector"> 212 <div class="m-region-selector__pseudo-selector" data-state="closed" data-testid="language-selector"></div> 213 <div class="m-region-selector__form"> 214 <form class="tes-language-selector-form" data-drupal-selector="tes-language-selector-form" action="/" method="post" id="tes-language-selector-form" accept-charset="UTF-8"> 215 216 217<div class="b-form-item js-form-item form-item js-form-type-select form-item-locale js-form-item-locale" data-type="select" data-state=""> 218 219 <label for="edit-locale">Select a language</label> 220 221 222 <div class="b-form-item__input-wrap"> 223 224 <select data-drupal-selector="edit-locale" id="edit-locale" name="locale" class="form-select"><option value="en" selected="selected">International schools</option><option value="en-gb">UK edition</option><option value="en-au">Australia edition</option></select> 225 226 </div> 227 228 </div> 229<input data-drupal-selector="edit-submit" type="submit" id="edit-submit" name="op" value="Submit" class="button js-form-submit form-submit" /> 230<input autocomplete="off" data-drupal-selector="form-tylg5jaynn9q73x4-moobp3qqamib-ux-p9hjd54l5g" type="hidden" name="form_build_id" value="form-tYlG5jAynn9Q73x4-mOobP3QQAMib-UX_p9HJd54L5g" /> 231<input data-drupal-selector="edit-tes-language-selector-form" type="hidden" name="form_id" value="tes_language_selector_form" /> 232 233</form> 234 235 </div> 236</div> 237 238 239 240 </div> 241 242 </div> 243 244 <div class="o-header__main-menu"> 245 <nav> 246 247 248 249 250 251 <div class="m-main-menu-desktop" > 252 <ul class="m-main-menu-desktop__list"> 253 254 <li class="m-main-menu-desktop__list-item " data-state="closed" data-has-children="true"> 255 <div class="m-main-menu-desktop__list-item-inner"> 256 <button class="m-main-menu-desktop__toggle"><span>Open</span><i></i></button> 257 258 259 260 <a class=" m-main-menu-desktop__link" href="https://www.tes.com/for-schools" data-testid="school-sof"> 261
262 <span> 263 School software 264 265 </span> 266 </a> 267 </div> 268 269 <div class="m-main-menu-desktop__children"> 270 271 272 <div class="m-main-menu-desktop-sub-menu" data-has-grand-children="true"> 273 <ul class="m-main-menu-desktop-sub-menu__list"> 274 275 <li class="m-main-menu-desktop-sub-menu__list-item " data-state="closed" data-has-children="true"> 276 <div class="m-main-menu-desktop-sub-menu__list-item-inner"> 277 278 279 280 <span class=" m-main-menu-desktop-sub-menu__link" href="" data-testid="student-su"> 281 282 <span> 283 Student Success & Safeguarding 284 285 </span> 286 </span> 287 </div> 288 289 <div class="m-main-menu-desktop-sub-menu__children"> 290 291 292 <div class="m-main-menu-desktop-sub-menu-child" > 293 <ul class="m-main-menu-desktop-sub-menu-child__list"> 294 295 <li class="m-main-menu-desktop-sub-menu-child__list-item " > 296 <div class="m-main-menu-desktop-sub-menu-child__list-item-inner"> 297 298 299 300 <a class=" m-main-menu-desktop-sub-menu-child__link" href="/for-schools/class-charts" data-testid="tes-class-"> 301 302 <span> 303 Tes Class Charts 304 305 <span class="m-main-menu-desktop-sub-menu-child__link-sub-title">Classroom management software</span> 306 </span> 307 </a> 308 </div> 309 310 </li> 311 312 <li class="m-main-menu-desktop-sub-menu-child__list-item " > 313 <div class="m-main-menu-desktop-sub-menu-child__list-item-inner"> 314 315 316 317 <a class=" m-main-menu-desktop-sub-menu-child__link" href="/for-schools/learning-pathways" data-testid="tes-learni"> 318 319 <span> 320 Tes Learning Pathways 321 322 <span class="m-main-menu-desktop-sub-menu-child__link-sub-title">Learning plans software</span> 323 </span> 324 </a> 325 </div> 326 327 </li> 328 329 <li class="m-main-menu-desktop-sub-menu-child__list-item " > 330 <div class="m-main-menu-desktop-sub-menu-child__list-item-inner"> 331 332 333 334 <a class=" m-main-menu-desktop-sub-menu-child__link" href="/for-schools/safeguarding-training" data-testid="tes-safegu"> 335 336 <span> 337 Tes Safeguarding Training 338 339 <span class="m-main-menu-desktop-sub-menu-child__link-sub-title">Online safeguarding training software</span> 340 </span> 341 </a> 342 </div> 343 344 </li> 345 346 <li class="m-main-menu-desktop-sub-menu-child__list-item " > 347 <div class="m-main-menu-desktop-sub-menu-child__list-item-inner"> 348 349 350 351 <a class=" m-main-menu-desktop-sub-menu-child__link" href="/for-schools/myconcern" data-testid="tes-myconc"> 352 353 <span> 354 Tes MyConcern 355 356 <span class="m-main-menu-desktop-sub-menu-child__link-sub-title">Safeguarding software for schools</span> 357 </span> 358 </a> 359 </div> 360 361 </li> 362 363 <li class="m-main-menu-desktop-sub-menu-child__list-item " > 364 <div class="m-main-menu-desktop-sub-menu-child__list-item-inner"> 365 366 367 368 <a class=" m-main-menu-desktop-sub-menu-child__link" href="https://www.tes.com/for-schools/clarity" data-testid="tes-clarit"> 369 370 <span> 371 Tes Clarity 372
373 <span class="m-main-menu-desktop-sub-menu-child__link-sub-title">Safeguarding reporting tool for school groups</span> 374 </span> 375 </a> 376 </div> 377 378 </li> 379 </ul> 380 </div> 381 382 </div> 383 </li> 384 385 <li class="m-main-menu-desktop-sub-menu__list-item " data-state="closed" data-has-children="true"> 386 <div class="m-main-menu-desktop-sub-menu__list-item-inner"> 387 388 389 390 <span class=" m-main-menu-desktop-sub-menu__link" href="" data-testid="school-ope"> 391 392 <span> 393 School Operations & Activities 394 395 </span> 396 </span> 397 </div> 398 399 <div class="m-main-menu-desktop-sub-menu__children"> 400 401 402 <div class="m-main-menu-desktop-sub-menu-child" > 403 <ul class="m-main-menu-desktop-sub-menu-child__list"> 404 405 <li class="m-main-menu-desktop-sub-menu-child__list-item " > 406 <div class="m-main-menu-desktop-sub-menu-child__list-item-inner"> 407 408 409 410 <a class=" m-main-menu-desktop-sub-menu-child__link" href="/for-schools/timetable" data-testid="tes-timeta"> 411 412 <span> 413 Tes Timetable 414 415 <span class="m-main-menu-desktop-sub-menu-child__link-sub-title">School timetable software</span> 416 </span> 417 </a> 418 </div> 419 420 </li> 421 422 <li class="m-main-menu-desktop-sub-menu-child__list-item " > 423 <div class="m-main-menu-desktop-sub-menu-child__list-item-inner"> 424 425 426 427 <a class=" m-main-menu-desktop-sub-menu-child__link" href="/for-schools/parents-meetings" data-testid="tes-parent"> 428 429 <span> 430 Tes Parents' Meetings 431 432 <span class="m-main-menu-desktop-sub-menu-child__link-sub-title">Parentsâ meeting scheduling software for staff</span> 433 </span> 434 </a> 435 </div> 436 437 </li> 438 439 <li class="m-main-menu-desktop-sub-menu-child__list-item " > 440 <div class="m-main-menu-desktop-sub-menu-child__list-item-inner"> 441 442 443 444 <a class=" m-main-menu-desktop-sub-menu-child__link" href="/for-schools/room-booking" data-testid="tes-room-b"> 445 446 <span> 447 Tes Room Booking 448 449 <span class="m-main-menu-desktop-sub-menu-child__link-sub-title">Manage your rooms and resources online</span> 450 </span> 451 </a> 452 </div> 453 454 </li> 455 456 <li class="m-main-menu-desktop-sub-menu-child__list-item " > 457 <div class="m-main-menu-desktop-sub-menu-child__list-item-inner"> 458 459 460 461 <a class=" m-main-menu-desktop-sub-menu-child__link" href="/for-schools/clubs-and-events" data-testid="tes-clubs-"> 462 463 <span> 464 Tes Clubs and Events 465 466 <span class="m-main-menu-desktop-sub-menu-child__link-sub-title">Extracurricular management software for schools</span> 467 </span> 468 </a> 469 </div> 470 471 </li> 472 473 <li class="m-main-menu-desktop-sub-menu-child__list-item " > 474 <div class="m-main-menu-desktop-sub-menu-child__list-item-inner"> 475 476 477 478 <a class=" m-main-menu-desktop-sub-menu-child__link" href="https://www.tes.com/for-schools/engage" data-testid="tes-engage"> 479 480 <span> 481 Tes Engage 482 483 <span class="m-main-menu-desktop-sub-menu-child__link-sub-title">School management information system</span> 484 </span> 485 </a> 486 </div> 487 488 </li> 489 </ul> 490 </div> 491 492 </div> 493 </li> 494 495 <li class="m-main-menu-desktop-sub-menu__list-item " data-state="closed" data-has-children="true"> 496 <div class="m-main-menu-desktop-sub-menu__list-item-inner"> 497 498 499
500 <span class=" m-main-menu-desktop-sub-menu__link" href="" data-testid="staff-mana"> 501 502 <span> 503 Staff Management 504 505 </span> 506 </span> 507 </div> 508 509 <div class="m-main-menu-desktop-sub-menu__children"> 510 511 512 <div class="m-main-menu-desktop-sub-menu-child" > 513 <ul class="m-main-menu-desktop-sub-menu-child__list"> 514 515 <li class="m-main-menu-desktop-sub-menu-child__list-item " > 516 <div class="m-main-menu-desktop-sub-menu-child__list-item-inner"> 517 518 519 520 <a class=" m-main-menu-desktop-sub-menu-child__link" href="/for-schools/staff-management" data-testid="tes-staff-"> 521 522 <span> 523 Tes Staff Management 524 525 <span class="m-main-menu-desktop-sub-menu-child__link-sub-title">Recruitment, wellbeing, and training software for schools</span> 526 </span> 527 </a> 528 </div> 529 530 </li> 531 532 <li class="m-main-menu-desktop-sub-menu-child__list-item " > 533 <div class="m-main-menu-desktop-sub-menu-child__list-item-inner"> 534 535 536 537 <a class=" m-main-menu-desktop-sub-menu-child__link" href="https://www.tes.com/for-schools/assetwhere" data-testid="tes-assetw"> 538 539 <span> 540 Tes AssetWhere 541 542 <span class="m-main-menu-desktop-sub-menu-child__link-sub-title">Property and asset management for schools</span> 543 </span> 544 </a> 545 </div> 546 547 </li> 548 </ul> 549 </div> 550 551 </div> 552 </li> 553 </ul> 554 </div> 555 556 </div> 557 </li> 558 559 <li class="m-main-menu-desktop__list-item " > 560 <div class="m-main-menu-desktop__list-item-inner"> 561 562 563 564 <a class=" m-main-menu-desktop__link" href="https://www.tes.com/jobs" data-testid="education-"> 565 566 <span> 567 Education jobs 568 569 </span> 570 </a> 571 </div> 572 573 </li> 574 575 <li class="m-main-menu-desktop__list-item " > 576 <div class="m-main-menu-desktop__list-item-inner"> 577 578 579 580 <a class=" m-main-menu-desktop__link" href="https://www.tes.com/magazine" data-testid="tes-magazi"> 581 582 <span> 583 Tes Magazine 584 585 </span> 586 </a> 587 </div> 588 589 </li> 590 591 <li class="m-main-menu-desktop__list-item " > 592 <div class="m-main-menu-desktop__list-item-inner"> 593 594 595 596 <a class=" m-main-menu-desktop__link" href="https://www.tes.com/teaching-resources" data-testid="teaching-r"> 597 598 <span> 599 Teaching resources 600 601 </span> 602 </a> 603 </div> 604 605 </li> 606 607 <li class="m-main-menu-desktop__list-item " > 608 <div class="m-main-menu-desktop__list-item-inner"> 609 610 611 612 <a class=" m-main-menu-desktop__link" href="https://www.tes.com/institute" data-testid="tes-instit"> 613 614 <span> 615 Tes Institute 616 617 </span> 618 </a> 619 </div> 620 621 </li> 622 623 <li class="m-main-menu-desktop__list-item " > 624 <div class="m-main-menu-desktop__list-item-inner"> 625 626 627 628 <a class=" m-main-menu-desktop__link" href="https://www.tes.com/authn/select?rtn=https%3A//www.tes.com/schools/employers/school-chooser" data-testid="school-por"> 629
630 <span> 631 School Portal 632 633 </span> 634 </a> 635 </div> 636 637 </li> 638 </ul> 639 </div> 640 641 642 </nav> 643 </div> 644 645 <button class="o-header__hamburger"><span>Open Menu</span><i></i></button> 646 </div> 647 648 </div><!-- /.o-header__columns --> 649 </div><!-- /.b-container --> 650 </header> 651 652 <section role="dialog" class="o-header-modal" data-state="closed"> 653 <div class="o-header-modal__header"> 654 <span class="o-header-modal__logo">TES</span> 655 <button class="o-header-modal__close">Close<i></i></button> 656 </div> 657 <nav> 658 659 660 661 <div class="m-main-menu-mobile"> 662 <ul class="m-main-menu-mobile__list"> 663 664 <li class="m-main-menu-mobile__list-item " data-state="closed" > 665 <div class="m-main-menu-mobile__list-item-inner" data-has-children="true"> 666 <a class="m-main-menu-mobile__link" href="https://www.tes.com/for-schools"> 667 School software 668 </a> 669 670 <button class="m-main-menu-mobile__toggle"><span>Open</span><i></i></button> 671 </div> 672 673 <div class="m-main-menu-mobile__children"> 674 <div class="m-main-menu-mobile-sub-menu"> 675 <ul class="m-main-menu-mobile-sub-menu__list"> 676 677 <li class="m-main-menu-mobile-sub-menu__list-item " data-state="closed" > 678 <div class="m-main-menu-mobile-sub-menu__list-item-inner" data-has-children="true"> 679 <a class="m-main-menu-mobile__link" href=""> 680 Student Success & Safeguarding 681 </a> 682 683 <button class="m-main-menu-mobile-sub-menu__toggle"><span>Open</span><i></i></button> 684 </div> 685 686 <div class="m-main-menu-mobile-sub-menu__children"> 687 <div class="m-main-menu-mobile-sub-menu-child"> 688 <ul class="m-main-menu-mobile-sub-menu-child__list"> 689 690 <li class="m-main-menu-mobile-sub-menu-child__list-item " > 691 <div class="m-main-menu-mobile-sub-menu-child__list-item-inner" > 692 <a class="m-main-menu-mobile__link" href="/for-schools/class-charts"> 693 Tes Class Charts 694 </a> 695 696 </div> 697 698 </li> 699 700 <li class="m-main-menu-mobile-sub-menu-child__list-item " > 701 <div class="m-main-menu-mobile-sub-menu-child__list-item-inner" > 702 <a class="m-main-menu-mobile__link" href="/for-schools/learning-pathways"> 703 Tes Learning Pathways 704 </a> 705 706 </div> 707 708 </li> 709 710 <li class="m-main-menu-mobile-sub-menu-child__list-item " > 711 <div class="m-main-menu-mobile-sub-menu-child__list-item-inner" > 712 <a class="m-main-menu-mobile__link" href="/for-schools/safeguarding-training"> 713 Tes Safeguarding Training 714 </a> 715 716 </div> 717 718 </li> 719 720 <li class="m-main-menu-mobile-sub-menu-child__list-item " > 721 <div class="m-main-menu-mobile-sub-menu-child__list-item-inner" > 722 <a class="m-main-menu-mobile__link" href="/for-schools/myconcern"> 723 Tes MyConcern 724 </a> 725 726 </div> 727 728 </li> 729 730 <li class="m-main-menu-mobile-sub-menu-child__list-item " > 731 <div class="m-main-menu-mobile-sub-menu-child__list-item-inner" > 732 <a class="m-main-menu-mobile__link" href="https://www.tes.com/for-schools/clarity"> 733 Tes Clarity 734 </a> 735 736 </div> 737 738 </li> 739 </ul> 740 </div> 741 742 </div> 743 </li> 744 745 <li class="m-main-menu-mobile-sub-menu__list-item " data-state="closed" > 746 <div class="m-main-menu-mobile-sub-menu__list-item-inner" data-has-children="true"> 747 <a class="m-main-menu-mobile__link" href=""> 748 School Operations & Activities 749 </a> 750 751 <button class="m-main-menu-mobile-sub-menu__toggle"><span>Open</span><i></i></button> 752 </div> 753 754 <div class="m-main-menu-mobile-sub-menu__children"> 755 <div class="m-main-menu-mobile-sub-menu-child"> 756 <ul class="m-main-menu-mobile-sub-menu-child__list"> 757 758 <li class="m-main-menu-mobile-sub-menu-child__list-item " > 759 <div class="m-main-menu-mobile-sub-menu-child__list-item-inner" > 760 <a class="m-main-menu-mobile__link" href="/for-schools/timetable"> 761 Tes Timetable 762 </a> 763 764 </div> 765 766 </li> 767 768 <li class="m-main-menu-mobile-sub-menu-child__list-item " > 769 <div class="m-main-menu-mobile-sub-menu-child__list-item-inner" > 770 <a class="m-main-menu-mobile__link" href="/for-schools/parents-meetings"> 771 Tes Parents' Meetings 772 </a> 773 774 </div> 775 776 </li> 777 778 <li class="m-main-menu-mobile-sub-menu-child__list-item " > 779 <div class="m-main-menu-mobile-sub-menu-child__list-item-inner" > 780 <a class="m-main-menu-mobile__link" href="/for-schools/room-booking"> 781 Tes Room Booking 782 </a> 783 784 </div> 785 786 </li> 787 788 <li class="m-main-menu-mobile-sub-menu-child__list-item " > 789 <div class="m-main-menu-mobile-sub-menu-child__list-item-inner" > 790 <a class="m-main-menu-mobile__link" href="/for-schools/clubs-and-events"> 791 Tes Clubs and Events 792 </a> 793 794 </div> 795 796 </li> 797 798 <li class="m-main-menu-mobile-sub-menu-child__list-item " > 799 <div class="m-main-menu-mobile-sub-menu-child__list-item-inner" > 800 <a class="m-main-menu-mobile__link" href="https://www.tes.com/for-schools/engage"> 801 Tes Engage 802 </a> 803 804 </div> 805 806 </li> 807 </ul> 808 </div> 809 810 </div> 811 </li> 812 813 <li class="m-main-menu-mobile-sub-menu__list-item " data-state="closed" > 814 <div class="m-main-menu-mobile-sub-menu__list-item-inner" data-has-children="true"> 815 <a class="m-main-menu-mobile__link" href=""> 816 Staff Management 817 </a> 818 819 <button class="m-main-menu-mobile-sub-menu__toggle"><span>Open</span><i></i></button> 820 </div> 821 822 <div class="m-main-menu-mobile-sub-menu__children"> 823 <div class="m-main-menu-mobile-sub-menu-child"> 824 <ul class="m-main-menu-mobile-sub-menu-child__list"> 825 826 <li class="m-main-menu-mobile-sub-menu-child__list-item " > 827 <div class="m-main-menu-mobile-sub-menu-child__list-item-inner" > 828 <a class="m-main-menu-mobile__link" href="/for-schools/staff-management"> 829 Tes Staff Management 830 </a> 831 832 </div> 833 834 </li> 835 836 <li class="m-main-menu-mobile-sub-menu-child__list-item " > 837 <div class="m-main-menu-mobile-sub-menu-child__list-item-inner" > 838 <a class="m-main-menu-mobile__link" href="https://www.tes.com/for-schools/assetwhere"> 839 Tes AssetWhere 840 </a> 841 842 </div> 843 844 </li> 845 </ul> 846 </div> 847 848 </div> 849 </li> 850 </ul> 851 </div> 852 853 </div> 854 </li> 855 856 <li class="m-main-menu-mobile__list-item " > 857 <div class="m-main-menu-mobile__list-item-inner" > 858 <a class="m-main-menu-mobile__link" href="https://www.tes.com/jobs"> 859 Education jobs 860 </a> 861 862 </div> 863 864 </li> 865 866 <li class="m-main-menu-mobile__list-item " > 867 <div class="m-main-menu-mobile__list-item-inner" > 868 <a class="m-main-menu-mobile__link" href="https://www.tes.com/magazine"> 869 Tes Magazine 870 </a> 871 872 </div> 873 874 </li> 875 876 <li class="m-main-menu-mobile__list-item " > 877 <div class="m-main-menu-mobile__list-item-inner" > 878 <a class="m-main-menu-mobile__link" href="https://www.tes.com/teaching-resources"> 879 Teaching resources 880 </a> 881 882 </div> 883 884 </li> 885 886 <li class="m-main-menu-mobile__list-item " > 887 <div class="m-main-menu-mobile__list-item-inner" > 888 <a class="m-main-menu-mobile__link" href="https://www.tes.com/institute"> 889 Tes Institute 890 </a> 891 892 </div> 893 894 </li> 895 896 <li class="m-main-menu-mobile__list-item " > 897 <div class="m-main-menu-mobile__list-item-inner" > 898 <a class="m-main-menu-mobile__link" href="https://www.tes.com/authn/select?rtn=https%3A//www.tes.com/schools/employers/school-chooser"> 899 School Portal 900 </a> 901 902 </div> 903 904 </li> 905 906 <li class="m-main-menu-mobile__list-item " > 907 <div class="m-main-menu-mobile__list-item-inner" > 908 <a class="m-main-menu-mobile__link" href="https://www.tes.com/for-schools/blog"> 909 Blog 910 </a> 911 912 </div> 913 914 </li> 915 916 <li class="m-main-menu-mobile__list-item " > 917 <div class="m-main-menu-mobile__list-item-inner" > 918 <a class="m-main-menu-mobile__link" href="https://www.tes.com/schools-awards/international"> 919 Tes Awards for International Schools 920 </a> 921 922 </div> 923 924 </li> 925 926 <li class="m-main-menu-mobile__list-item " > 927 <div class="m-main-menu-mobile__list-item-inner" > 928 <a class="m-main-menu-mobile__link" href="https://www.tes.com/contact"> 929 Contact Us 930 </a> 931 932 </div> 933 934 </li> 935 936 <li class="m-main-menu-mobile__list-item " > 937 <div class="m-main-menu-mobile__list-item-inner" > 938 <a class="m-main-menu-mobile__link" href="https://www.tes.com/login"> 939 Log in 940 </a> 941 942 </div> 943 944 </li> 945 </ul> 946 </div> 947 948 949 950 <div id="block-teslanguageswitcherdesktop"> 951 952 953 954<div class="m-region-selector"> 955 <div class="m-region-selector__pseudo-selector" data-state="closed" data-testid="language-selector"></div> 956 <div class="m-region-selector__form"> 957 <form class="tes-language-selector-form" data-drupal-selector="tes-language-selector-form" action="/" method="post" id="tes-language-selector-form" accept-charset="UTF-8"> 958 959 960<div class="b-form-item js-form-item form-item js-form-type-select form-item-locale js-form-item-locale" data-type="select" data-state=""> 961 962 <label for="edit-locale">Select a language</label> 963 964 965 <div class="b-form-item__input-wrap"> 966 967 <select data-drupal-selector="edit-locale" id="edit-locale" name="locale" class="form-select"><option value="en" selected="selected">International schools</option><option value="en-gb">UK edition</option><option value="en-au">Australia edition</option></select> 968 969 </div> 970 971 </div> 972<input data-drupal-selector="edit-submit" type="submit" id="edit-submit" name="op" value="Submit" class="button js-form-submit form-submit" /> 973<input autocomplete="off" data-drupal-selector="form-tylg5jaynn9q73x4-moobp3qqamib-ux-p9hjd54l5g" type="hidden" name="form_build_id" value="form-tYlG5jAynn9Q73x4-mOobP3QQAMib-UX_p9HJd54L5g" /> 974<input data-drupal-selector="edit-tes-language-selector-form" type="hidden" name="form_id" value="tes_language_selector_form" /> 975 976</form> 977 978 </div> 979</div> 980 981 982 983 </div> 984 985 </nav> 986 </section> 987 </div> 988 989 990 991 992 993 994 995 996 <main role="main"> 997 <a id="main-content" tabindex="-1"></a> 998 <div class="layout-content"> 999 <div> 1000 <div data-drupal-messages-fallback class="hidden"></div> 1001 1002<article class="t-basic-page"> 1003 <header class="t-basic-page__hero"> 1004 1005 1006 <div> 1007 1008 1009 1010 1011<div class="o-hero" data-show-image-mobile="true" data-vertical-align="top" data-component-theme="azure"> 1012 <div class="b-container"> 1013 1014 <div class="o-hero__breadcrumbs"> 1015 1016 1017 </div> 1018 1019 <div class="o-hero__columns"> 1020 1021 <div class="o-hero__column"> 1022 1023 1024 <div class="o-hero__title"> 1025 <h1>Together, we build trusted education solutions</h1> 1026 </div> 1027 1028 <div class="o-hero__description"> 1029 1030<div class="a-wysiwyg-content"> 1031 <div class="b-container-content__extended"> 1032 <p>Weâre the partner to a global community of schools, leaders, and teachers, providing innovative education software products, services, content, and resources, so they can focus on enhancing students' lives through education.</p> 1033<p><a class="b-button-primary" href="https://www.tes.com/for-schools">Our products</a></p> 1034 1035 </div> 1036</div><!-- /.a-wysiwyg-content --> 1037</div> 1038 1039 </div> 1040 1041 <div class="o-hero__column"> 1042 <div class="o-hero__image"> 1043 <div><article> 1044 1045 1046 <div> 1047 <div class="visually-hidden">Image</div> 1048 <div> <img src="https://assets.tes.com/marketing/s3fs-public/2024-08/DS96995%20Tes%20homepage%20hero%20image%2
10480teacher%20group%201412%20x%20794.svg" alt="Tes Home page hero 2024" loading="lazy" typeof="foaf:Image" /> 1049 1050</div> 1051 </div> 1052 1053 </article> 1054</div> 1055 </div> 1056 </div> 1057 </div> 1058 </div><!-- /.b-container-extended --> 1059</div><!-- /.o-hero --> 1060 1061</div> 1062 1063 </header> 1064 1065 <div> 1066 <div> 1067 1068 1069 1070<div class="a-row a-row__"> 1071 <section id=introducing-tes360 class="o-widget-summary-feature" data-image="yes" data-image-align="left"> 1072 <div class="b-container"> 1073 <div class="o-widget-summary-feature__columns"> 1074 <div class="o-widget-summary-feature__column"> 1075 <div class="o-widget-summary-feature__heading o-widget-summary-feature__row"> 1076 <h2 data-testid="introducin">Introducing Tes360</h2> 1077 </div> 1078 1079 <div class="o-widget-summary-feature__content"> 1080 1081 <div> 1082<div class="a-rich-content-row"> 1083 1084 1085<div class="a-wysiwyg-content"> 1086 <div class="b-container-content__extended"> 1087 <p>As education becomes more complex, the challenge isnât a lack of data or technology. Itâs that data isnât connected. Tes360 connects information without friction, saving time, speeding up decision making, and driving action across schools and trusts.</p> 1088<p><a class="b-button-primary" href="https://www.tes.com/tes360">Learn more</a></p> 1089 1090 </div> 1091</div><!-- /.a-wysiwyg-content --> 1092 1093 1094</div> 1095</div> 1096 1097 </div> 1098 </div><!-- /.o-widget-summary-feature__column --> 1099 1100 <div class="o-widget-summary-feature__column"> 1101 <div class="o-widget-summary-feature__image"> 1102 <div><article> 1103 1104 1105 <div> 1106 <div class="visually-hidden">Image</div> 1107 <div> <img src="https://assets.tes.com/marketing/s3fs-public/2026-04/Tes360-hero-with-strapline-summary-feature.svg" alt="Tes360, connected platform. Deeper insights, Greater impact." loading="lazy" typeof="foaf:Image" /> 1108 1109</div> 1110 </div> 1111 1112 </article> 1113</div> 1114 </div> 1115 </div><!-- /.o-widget-summary-feature__column --> 1116 </div><!-- .o-widget-summary-feature__inner --> 1117 </div> 1118 </section> 1119 1120</div></div> 1121 <div> 1122 1123 1124 1125 1126<section id="for-schools" class="o-widget-grid" data-theme="" data-cards-even-height="true"> 1127 <div class="b-container"> 1128 <div class="o-widget-grid__heading o-widget-grid__row"> 1129 <h2 data-testid="pupils-and-lm"> For schools 1130</h2> 1131 </div> 1132 1133 1134 1135<div class="a-carousel" data-layout="" data-no-item="5"> 1136 <div class="b-container"> 1137 <div class="a-carousel__navigation"> 1138 <nav> 1139 <ul> 1140 <li><button class="a-carousel__navigation-button" data-direction="left" aria-hidden="true"><span>Scroll left</span></button></li> 1141 <li><button class="a-carousel__navigation-button" data-direction="right" aria-hidden="true"><span>Right left</span></button></li> 1142 </ul> 1143 </nav> 1144 </div> 1145 1146 <div class="a-carousel__outer"> 1147 <ul class="a-carousel__inner"> 1148 <li class="a-carousel__item"> 1149 1150 1151 1152 1153<article class="m-content-card-update" data-has_link="true" data-has-media="true" data-type="svg" data-hide-image-mobile="" data-theme=""> 1154 <div class="m-content-card-update__image"> 1155 1156 <div><article> 1157 1158 1159 <div> 1160 <div class="visually-hidden">Image</div> 1161 <div> <img src="https://assets.tes.com/marketing/s3fs-public/2024-11/Safeguarding%20interface%20image%20DS95486%20v3.svg" alt="Teachers holding their safeguarding certificates" loading="lazy" typeof="foaf:Image" /> 1162 1163</div> 1164 </div> 1165 1166 </article> 1167</div> 1168 1169 </div> 1170 1171 <div class="m-content-card-update__content"> 1172 <div class="m-content-card-update__details"> 1173 1174 1175 <div class="m-content-card-update__details-description"> 1176 1177 1178<div class="a-wysiwyg-content"> 1179 <div class="b-container-content__extended"> 1180 1181 1182<div class="a-wysiwyg-content"> 1183 <div class="b-container-content__extended"> 1184 <h5>Safeguarding</h5> 1185<p>Expert courses and secure software for all safeguarding needs. </p> 1186 1187 </div> 1188</div><!-- /.a-wysiwyg-content --> 1189 1190 </div> 1191</div><!-- /.a-wysiwyg-content --> 1192 1193 </div> 1194 </div> 1195 1196 <div class="m-content-card-update__link" > 1197 <a href="#safeguarding" data-testid = "">Read more</a>
1198 <span aria-hidden="">Read more</span> 1199 </div> 1200 1201 </div> 1202</article> 1203</li> 1204 <li class="a-carousel__item"> 1205 1206 1207 1208 1209<article class="m-content-card-update" data-has_link="true" data-has-media="true" data-type="svg" data-hide-image-mobile="" data-theme=""> 1210 <div class="m-content-card-update__image"> 1211 1212 <div><article> 1213 1214 1215 <div> 1216 <div class="visually-hidden">Image</div> 1217 <div> <img src="https://assets.tes.com/marketing/s3fs-public/2024-11/SEND%20Learning%20Pathways%20577x390%20DS95486%20v2.svg" alt="Teacher looking at a SEND students profile" loading="lazy" typeof="foaf:Image" /> 1218 1219</div> 1220 </div> 1221 1222 </article> 1223</div> 1224 1225 </div> 1226 1227 <div class="m-content-card-update__content"> 1228 <div class="m-content-card-update__details"> 1229 1230 1231 <div class="m-content-card-update__details-description"> 1232 1233 1234<div class="a-wysiwyg-content"> 1235 <div class="b-container-content__extended"> 1236 1237 1238<div class="a-wysiwyg-content"> 1239 <div class="b-container-content__extended"> 1240 <h5>Student success</h5> 1241<p>Individual learning plans to help every student reach their potential.</p> 1242 1243 </div> 1244</div><!-- /.a-wysiwyg-content --> 1245 1246 </div> 1247</div><!-- /.a-wysiwyg-content --> 1248 1249 </div> 1250 </div> 1251 1252 <div class="m-content-card-update__link" > 1253 <a href="/for-schools/learning-pathways" data-testid = "">Read more</a> 1254 <span aria-hidden="">Read more</span> 1255 </div> 1256 1257 </div> 1258</article> 1259</li> 1260 <li class="a-carousel__item"> 1261 1262 1263 1264 1265<article class="m-content-card-update" data-has_link="true" data-has-media="true" data-type="svg" data-hide-image-mobile="" data-theme=""> 1266 <div class="m-content-card-update__image"> 1267 1268 <div><article> 1269 1270 1271 <div> 1272 <div class="visually-hidden">Image</div> 1273 <div> <img src="https://assets.tes.com/marketing/s3fs-public/2024-08/Behaviour%20Management%20hero577x390%20DS95486%20v2%20%281%29.svg" alt="Behaviour management" loading="lazy" typeof="foaf:Image" /> 1274 1275</div> 1276 </div> 1277 1278 </article> 1279</div> 1280 1281 </div> 1282 1283 <div class="m-content-card-update__content"> 1284 <div class="m-content-card-update__details"> 1285 1286 1287 <div class="m-content-card-update__details-description"> 1288 1289 1290<div class="a-wysiwyg-content"> 1291 <div class="b-container-content__extended"> 1292 1293 1294<div class="a-wysiwyg-content"> 1295 <div class="b-container-content__extended"> 1296 <h5>Behaviour</h5> 1297<p>93% of teachers using Class Charts save time managing behaviour.</p> 1298 1299 </div> 1300</div><!-- /.a-wysiwyg-content --> 1301 1302 </div> 1303</div><!-- /.a-wysiwyg-content --> 1304 1305 </div> 1306 </div> 1307 1308 <div class="m-content-card-update__link" > 1309 <a href="/for-schools/class-charts" data-testid = "">Read more</a> 1310 <span aria-hidden="">Read more</span> 1311 </div> 1312 1313 </div> 1314</article> 1315</li> 1316 <li class="a-carousel__item"> 1317 1318 1319 1320 1321<article class="m-content-card-update" data-has_link="true" data-has-media="true" data-type="svg" data-hide-image-mobile="" data-theme=""> 1322 <div class="m-content-card-update__image"> 1323 1324 <div><article> 1325 1326 1327 <div> 1328 <div class="visually-hidden">Image</div> 1329 <div> <img src="https://assets.tes.com/marketing/s3fs-public/2024-08/Pay%20as%20you%20go%20recruitment%20advertising%20577x390%20DS95486%20%281%29%20%281%29.svg" alt="Education recruitment" loading="lazy" typeof="foaf:Image" /> 1330 1331</div> 1332 </div> 1333 1334 </article> 1335</div> 1336 1337 </div> 1338 1339 <div class="m-content-card-update__content"> 1340 <div class="m-content-card-update__details"> 1341 1342 1343 <div class="m-content-card-update__details-description"> 1344 1345 1346<div class="a-wysiwyg-content"> 1347 <div class="b-container-content__extended"> 1348 1349 1350<div class="a-wysiwyg-content"> 1351 <div class="b-container-content__extended"> 1352 <h5>Recruitment</h5> 1353<p>Attract top talent with our range of tools to reach your ideal candidates.</p> 1354 1355 </div> 1356</div><!-- /.a-wysiwyg-content --> 1357 1358 </div> 1359</div><!-- /.a-wysiwyg-content --> 1360 1361 </div> 1362 </div> 1363 1364 <div class="m-content-card-update__link" > 1365 <a href="/for-schools/staff-management/education-recruitment" data-testid = "">Read more</a>
1366 <span aria-hidden="">Read more</span> 1367 </div> 1368 1369 </div> 1370</article> 1371</li> 1372 <li class="a-carousel__item"> 1373 1374 1375 1376 1377<article class="m-content-card-update" data-has_link="true" data-has-media="true" data-type="svg" data-hide-image-mobile="" data-theme=""> 1378 <div class="m-content-card-update__image"> 1379 1380 <div><article> 1381 1382 1383 <div> 1384 <div class="visually-hidden">Image</div> 1385 <div> <img src="https://assets.tes.com/marketing/s3fs-public/2024-11/Parents%27%20Meeting%20577x390%20DS95468%20%281%29.svg" alt="Parents and teachers meeting via Tes Parents' Meetings, a parents' evening booking system" loading="lazy" typeof="foaf:Image" /> 1386 1387</div> 1388 </div> 1389 1390 </article> 1391</div> 1392 1393 </div> 1394 1395 <div class="m-content-card-update__content"> 1396 <div class="m-content-card-update__details"> 1397 1398 1399 <div class="m-content-card-update__details-description"> 1400 1401 1402<div class="a-wysiwyg-content"> 1403 <div class="b-container-content__extended"> 1404 1405 1406<div class="a-wysiwyg-content"> 1407 <div class="b-container-content__extended"> 1408 <h5>Parents' Meetings</h5> 1409 1410<p>Ensure timely meetings, boost engagement and reduce admin.</p> 1411 1412 </div> 1413</div><!-- /.a-wysiwyg-content --> 1414 1415 </div> 1416</div><!-- /.a-wysiwyg-content --> 1417 1418 </div> 1419 </div> 1420 1421 <div class="m-content-card-update__link" > 1422 <a href="/for-schools/parents-meetings" data-testid = "">Read more</a> 1423 <span aria-hidden="">Read more</span> 1424 </div> 1425 1426 </div> 1427</article> 1428</li> 1429 </ul><!-- /.a-carousel__inner --> 1430 </div><!-- /.a-carousel__outer --> 1431 1432 </div><!-- /.b-container --> 1433</div> 1434 1435 </div> 1436</section> 1437</div> 1438 <div> 1439 1440 1441 1442 1443<section id="for-teachers" class="o-widget-grid" data-theme="" data-cards-even-height="true"> 1444 <div class="b-container"> 1445 <div class="o-widget-grid__heading o-widget-grid__row"> 1446 <h2 data-testid="pupils-and-lm"> For teachers 1447</h2> 1448 </div> 1449 1450 1451 1452 1453<div class="a-grid" data-layout="4" data-wrap="yes" data-alignment=""> 1454 <div class="b-container"> 1455 <ul class="a-grid__inner"> 1456 <li class="a-grid__item"> 1457 1458 1459 1460 1461<article class="m-content-card-update" data-has_link="false" data-has-media="true" data-type="svg" data-hide-image-mobile="" data-theme=""> 1462 <div class="m-content-card-update__image"> 1463 1464 <div><article> 1465 1466 1467 <div> 1468 <div class="visually-hidden">Image</div> 1469 <div> <img src="https://assets.tes.com/marketing/s3fs-public/2024-08/Education%20jobs%20577x390%20DS95486%20%281%29.svg" alt="Education jobs " loading="lazy" typeof="foaf:Image" /> 1470 1471</div> 1472 </div> 1473 1474 </article> 1475</div> 1476 1477 </div> 1478 1479 <div class="m-content-card-update__content"> 1480 <div class="m-content-card-update__details"> 1481 1482 1483 <div class="m-content-card-update__details-description"> 1484 1485 1486<div class="a-wysiwyg-content"> 1487 <div class="b-container-content__extended"> 1488 1489 1490<div class="a-wysiwyg-content"> 1491 <div class="b-container-content__extended"> 1492 <h5>Education jobs</h5> 1493<p>Find your next job among the largest selection of academic education and teaching vacancies.</p> 1494<p><a class="b-button-secondary" href="https://www.tes.com/jobs">View jobs</a></p> 1495 1496 </div> 1497</div><!-- /.a-wysiwyg-content --> 1498 1499 </div> 1500</div><!-- /.a-wysiwyg-content --> 1501 1502 </div> 1503 </div> 1504 1505 </div> 1506</article> 1507</li> 1508 <li class="a-grid__item"> 1509 1510 1511 1512 1513<article class="m-content-card-update" data-has_link="false" data-has-media="true" data-type="svg" data-hide-image-mobile="" data-theme=""> 1514 <div class="m-content-card-update__image"> 1515 1516 <div><article> 1517 1518 1519 <div> 1520 <div class="visually-hidden">Image</div> 1521 <div> <img src="https://assets.tes.com/marketing/s3fs-public/2024-08/Tes%20Institute%20577x390%20DS95486%20%281%29.svg" alt="Tes Institute" loading="lazy" typeof="foaf:Image" /> 1522 1523</div> 1524 </div> 1525 1526 </article> 1527</div> 1528 1529 </div> 1530 1531 <div class="m-content-card-update__content"> 1532 <div class="m-content-card-update__details"> 1533 1534 1535 <div class="m-content-card-update__details-description"> 1536 1537 1538<div class="a-wysiwyg-content"> 1539 <div class="b-container-content__extended"> 1540 1541 1542<div class="a-wysiwyg-content"> 1543 <div class="b-container-content__extended"> 1544 <h5>
1544Tes Institute</h5> 1545<p>Grow and develop at every stage of your career with our flexible, personalised teacher training courses.</p> 1546<p><a class="b-button-secondary" href="https://www.tes.com/institute">View courses</a></p> 1547 1548 </div> 1549</div><!-- /.a-wysiwyg-content --> 1550 1551 </div> 1552</div><!-- /.a-wysiwyg-content --> 1553 1554 </div> 1555 </div> 1556 1557 </div> 1558</article> 1559</li> 1560 <li class="a-grid__item"> 1561 1562 1563 1564 1565<article class="m-content-card-update" data-has_link="false" data-has-media="true" data-type="svg" data-hide-image-mobile="" data-theme=""> 1566 <div class="m-content-card-update__image"> 1567 1568 <div><article> 1569 1570 1571 <div> 1572 <div class="visually-hidden">Image</div> 1573 <div> <img src="https://assets.tes.com/marketing/s3fs-public/2024-08/Tes%20Magazine%20577x390%20DS95486%20v2%20%281%29.svg" alt="Tes Magazine" loading="lazy" typeof="foaf:Image" /> 1574 1575</div> 1576 </div> 1577 1578 </article> 1579</div> 1580 1581 </div> 1582 1583 <div class="m-content-card-update__content"> 1584 <div class="m-content-card-update__details"> 1585 1586 1587 <div class="m-content-card-update__details-description"> 1588 1589 1590<div class="a-wysiwyg-content"> 1591 <div class="b-container-content__extended"> 1592 1593 1594<div class="a-wysiwyg-content"> 1595 <div class="b-container-content__extended"> 1596 <h5>Tes magazine</h5> 1597<p>All the latest education features, views, analysis, and teaching and learning knowledge for teachers and leaders.</p> 1598<p><a class="b-button-secondary" href="https://www.tes.com/magazine">Read more</a></p> 1599 1600 </div> 1601</div><!-- /.a-wysiwyg-content --> 1602 1603 </div> 1604</div><!-- /.a-wysiwyg-content --> 1605 1606 </div> 1607 </div> 1608 1609 </div> 1610</article> 1611</li> 1612 <li class="a-grid__item"> 1613 1614 1615 1616 1617<article class="m-content-card-update" data-has_link="false" data-has-media="true" data-type="svg" data-hide-image-mobile="" data-theme=""> 1618 <div class="m-content-card-update__image"> 1619 1620 <div><article> 1621 1622 1623 <div> 1624 <div class="visually-hidden">Image</div> 1625 <div> <img src="https://assets.tes.com/marketing/s3fs-public/2024-08/Teaching%20resources%20577x390%20DS95486%20v2%20%281%29.svg" alt="Teaching resources" loading="lazy" typeof="foaf:Image" /> 1626 1627</div> 1628 </div> 1629 1630 </article> 1631</div> 1632 1633 </div> 1634 1635 <div class="m-content-card-update__content"> 1636 <div class="m-content-card-update__details"> 1637 1638 1639 <div class="m-content-card-update__details-description"> 1640 1641 1642<div class="a-wysiwyg-content"> 1643 <div class="b-container-content__extended"> 1644 1645 1646<div class="a-wysiwyg-content"> 1647 <div class="b-container-content__extended"> 1648 <h5>Teaching Resources</h5> 1649<p>Save planning time with more than 900,000 resources made by teachers for teachers.</p> 1650<p><a class="b-button-secondary" href="https://www.tes.com/teaching-resources">Explore resources</a></p> 1651 1652 </div> 1653</div><!-- /.a-wysiwyg-content --> 1654 1655 </div> 1656</div><!-- /.a-wysiwyg-content --> 1657 1658 </div> 1659 </div> 1660 1661 </div> 1662</article> 1663</li> 1664 </ul><!-- /.a-grid__inner --> 1665 </div><!-- /.b-container --> 1666</div> 1667 1668 1669 </div> 1670</section> 1671</div> 1672 <div> 1673 1674<div class="a-widget-anchor-point" id="safeguarding"></div> 1675</div> 1676 <div> 1677 1678 1679 1680<div class="a-row a-row__"> 1681 <section id=total-safeguarding-with-tes--supporting-your-school class="o-widget-summary-feature" data-image="no" data-image-align="right"> 1682 <div class="b-container"> 1683 <div class="o-widget-summary-feature__columns"> 1684 <div class="o-widget-summary-feature__column"> 1685 <div class="o-widget-summary-feature__heading o-widget-summary-feature__row"> 1686 <h2 data-testid="total-safe">Total safeguarding with Tes: Supporting your school</h2> 1687 </div> 1688 1689 <div class="o-widget-summary-feature__content"> 1690 1691 <div> 1692<div class="a-rich-content-row"> 1693 1694 1695<div class="a-wysiwyg-content"> 1696 <div class="b-container-content__extended"> 1697 <p>Safeguarding is demanding and complex, but we're here to help. We're dedicated to ensuring student safety, empowering safeguarding leads and promoting a secure school environment. Our end-to-e
1697nd solutions combine industry-leading technology, expert training and essential resources to provide everything your school or trust needs.</p> 1698 1699 </div> 1700</div><!-- /.a-wysiwyg-content --> 1701 1702 1703</div> 1704</div> 1705 1706 </div> 1707 </div><!-- /.o-widget-summary-feature__column --> 1708 1709 <div class="o-widget-summary-feature__column"> 1710 <div class="o-widget-summary-feature__image"> 1711 <div> 1712<div class="a-video"> 1713 <div class="a-video__inner"> 1714 <div><iframe src="/media/oembed?url=https%3A//vimeo.com/998767577/2c11768ed4%3Fshare%3Dcopy&max_width=0&max_height=0&hash=BSoIU2aJ1IRjfHyXGDbdIh_gvLHA99qBJtzgozDDn4Y" frameborder="0" allowtransparency class="media-oembed-content" title="Safeguarding_05"></iframe> 1715</div> 1716 </div> 1717</div> 1718</div> 1719 </div> 1720 </div><!-- /.o-widget-summary-feature__column --> 1721 </div><!-- .o-widget-summary-feature__inner --> 1722 </div> 1723 </section> 1724 1725</div></div> 1726 <div> 1727 1728 1729 1730 1731<section id="" class="o-widget-grid" data-theme="" data-cards-even-height="true"> 1732 <div class="b-container"> 1733 1734 1735 1736 1737<div class="a-grid" data-layout="4" data-wrap="yes" data-alignment=""> 1738 <div class="b-container"> 1739 <ul class="a-grid__inner"> 1740 <li class="a-grid__item"> 1741 1742 1743 1744 1745<article class="m-content-card-update" data-has_link="true" data-has-media="true" data-type="svg" data-hide-image-mobile="" data-theme=""> 1746 <div class="m-content-card-update__image"> 1747 1748 <div><article> 1749 1750 1751 <div> 1752 <div class="visually-hidden">Image</div> 1753 <div> <img src="https://assets.tes.com/marketing/s3fs-public/2024-08/Myconcern%20interface%20card%20image%20DS95486%20577x390%20%281%29.svg" alt="Tes Myconcern" loading="lazy" typeof="foaf:Image" /> 1754 1755</div> 1756 </div> 1757 1758 </article> 1759</div> 1760 1761 </div> 1762 1763 <div class="m-content-card-update__content"> 1764 <div class="m-content-card-update__details"> 1765 1766 1767 <div class="m-content-card-update__details-description"> 1768 1769 1770<div class="a-wysiwyg-content"> 1771 <div class="b-container-content__extended"> 1772 1773 1774<div class="a-wysiwyg-content"> 1775 <div class="b-container-content__extended"> 1776 <h5>Tes MyConcern</h5> 1777 1778<p>Make it easy for your staff to report safeguarding concerns anyw
1778here, any time with Tes MyConcern.</p> 1779 1780 </div> 1781</div><!-- /.a-wysiwyg-content --> 1782 1783 </div> 1784</div><!-- /.a-wysiwyg-content --> 1785 1786 </div> 1787 </div> 1788 1789 <div class="m-content-card-update__link" > 1790 <a href="https://www.tes.com/for-schools/myconcern" data-testid = "">Read more</a> 1791 <span aria-hidden="">Read more</span> 1792 </div> 1793 1794 </div> 1795</article> 1796</li> 1797 <li class="a-grid__item"> 1798 1799 1800 1801 1802<article class="m-content-card-update" data-has_link="true" data-has-media="true" data-type="svg" data-hide-image-mobile="" data-theme=""> 1803 <div class="m-content-card-update__image"> 1804 1805 <div><article> 1806 1807 1808 <div> 1809 <div class="visually-hidden">Image</div> 1810 <div> <img src="https://assets.tes.com/marketing/s3fs-public/2024-08/Safeguarding%20training%20card%20image%20577x390%20DS95486%20%281%29.svg" alt="Tes safeguarding training" loading="lazy" typeof="foaf:Image" /> 1811 1812</div> 1813 </div> 1814 1815 </article> 1816</div> 1817 1818 </div> 1819 1820 <div class="m-content-card-update__content"> 1821 <div class="m-content-card-update__details"> 1822 1823 1824 <div class="m-content-card-update__details-description"> 1825 1826 1827<div class="a-wysiwyg-content"> 1828 <div class="b-container-content__extended"> 1829 1830 1831<div class="a-wysiwyg-content"> 1832 <div class="b-container-content__extended"> 1833 <h5>Safeguarding training</h5> 1834 1835<p>Keep your school community safe with access to over 80 expert-written online safeguarding courses.</p> 1836 1837 </div> 1838</div><!-- /.a-wysiwyg-content --> 1839 1840 </div> 1841</div><!-- /.a-wysiwyg-content --> 1842 1843 </div> 1844 </div> 1845 1846 <div class="m-content-card-update__link" > 1847 <a href="https://www.tes.com/for-schools/safeguarding-training" data-testid = "">Read more</a> 1848 <span aria-hidden="">Read more</span> 1849 </div> 1850 1851 </div> 1852</article> 1853</li> 1854 <li class="a-grid__item"> 1855 1856 1857 1858 1859<article class="m-content-card-update" data-has_link="true" data-has-media="true" data-type="svg" data-hide-image-mobile="" data-theme=""> 1860 <div class="m-content-card-update__image"> 1861 1862 <div><article> 1863 1864 1865 <div> 1866 <div class="visually-hidden">Image</div> 1867 <div> <img src="https://assets.tes.com/marketing/s3fs-public/2024-08/Safeguarding%20advice%20hub%20card%20image%20577x390%20DS95486%20%281%29.svg" alt="Tes safeguarding advice hub" loading="lazy" typeof="foaf:Image" /> 1868 1869</div> 1870 </div> 1871 1872 </article> 1873</div> 1874 1875 </div> 1876 1877 <div class="m-content-card-update__content"> 1878 <div class="m-content-card-update__details"> 1879 1880 1881 <div class="m-content-card-update__details-description"> 1882 1883 1884<div class="a-wysiwyg-content"> 1885 <div class="b-container-content__extended"> 1886 1887 1888<div class="a-wysiwyg-content"> 1889 <div class="b-container-content__extended"> 1890 <h5>Safeguarding advice</h5> 1891 1892<p>Learn everything your schools needs to help keep all your students safe.</p> 1893 1894 </div> 1895</div><!-- /.a-wysiwyg-content --> 1896 1897 </div> 1898</div><!-- /.a-wysiwyg-content --> 1899 1900 </div> 1901 </div> 1902 1903 <div class="m-content-card-update__link" > 1904 <a href="https://www.tes.com/advice-hub/safeguarding" data-testid = "">Read more</a> 1905 <span aria-hidden="">Read more</span> 1906 </div> 1907 1908 </div> 1909</article> 1910</li> 1911 <li class="a-grid__item"> 1912 1913 1914 1915 1916<article class="m-content-card-update" data-has_link="true" data-has-media="true" data-type="svg" data-hide-image-mobile="" data-theme=""> 1917 <div class="m-content-card-update__image"> 1918 1919 <div><article> 1920 1921 1922 <div> 1923 <div class="visually-hidden">Image</div> 1924 <div> <img src="https://assets.tes.com/marketing/s3fs-public/2026-08/tes-international-safeguarding-report-2026.svg" alt="Tes International safeguarding report 2026 cover" loading="lazy" typeof="foaf:Image" /> 1925 1926</div> 1927 </div> 1928 1929 </article> 1930</div> 1931 1932 </div> 1933 1934 <div class="m-content-card-update__content"> 1935 <div class="m-content-card-update__details"> 1936 1937 1938 <div class="m-content-card-update__details-description"> 1939 1940 1941<div class="a-wysiwyg-content"> 1942 <div class="b-container-content__extended"> 1943 1944 1945<div class="a-wysiwyg-content"> 1946 <div class="b-container-content__extended"> 1947 <h5>International safeguarding report 2026</h5> 1948 1949<p>Our International Safeguarding Report features the thoughts of international school staff on a host of safeguarding issues.</p> 1950 1951 </div> 1952</div><!-- /.a-wysiwyg-content --> 1953 1954 </div> 1955</div><!-- /.a-wysiwyg-content --> 1956 1957 </div> 1958 </div> 1959 1960 <div class="m-content-card-update__link" > 1961 <a href="https://www.tes.com/for-schools/content/safeguarding-report-2026" data-testid = "">Read more</a>
1962 <span aria-hidden="">Read more</span> 1963 </div> 1964 1965 </div> 1966</article> 1967</li> 1968 </ul><!-- /.a-grid__inner --> 1969 </div><!-- /.b-container --> 1970</div> 1971 1972 1973 </div> 1974</section> 1975</div> 1976 <div> 1977 1978 1979 1980<div class="a-row a-row__"> 1981 <section id=report--the-patchwork-problem class="o-widget-summary-feature" data-image="yes" data-image-align="left"> 1982 <div class="b-container"> 1983 <div class="o-widget-summary-feature__columns"> 1984 <div class="o-widget-summary-feature__column"> 1985 <div class="o-widget-summary-feature__heading o-widget-summary-feature__row"> 1986 <h2 data-testid="report:-th">Report: The patchwork problem</h2> 1987 </div> 1988 1989 <div class="o-widget-summary-feature__content"> 1990 1991 <div> 1992<div class="a-rich-content-row"> 1993 1994 1995<div class="a-wysiwyg-content"> 1996 <div class="b-container-content__extended"> 1997 <p lang="EN-GB" xml:lang="EN-GB" xml:lang="EN-GB"><strong>School management report 2026: How a 'connected view' has become critical to school improvement</strong>  </p> 1998<p lang="EN-GB" xml:lang="EN-GB" xml:lang="EN-GB">Leading trusts are turning the information they already hold into one connected view and are acting where it matters most. The 2026 report shows what that view makes possible across a whole school and trust. </p> 1999<p lang="EN-GB" xml:lang="EN-GB" xml:lang="EN-GB"><a class="b-button-primary" href="https://www.tes.com/for-schools/content/school-management-report">Download report</a></p> 2000 2001 </div> 2002</div><!-- /.a-wysiwyg-content --> 2003 2004 2005</div> 2006</div> 2007 2008 </div> 2009 </div><!-- /.o-widget-summary-feature__column --> 2010 2011 <div class="o-widget-summary-feature__column"> 2012 <div class="o-widget-summary-feature__image"> 2013 <div><article> 2014 2015 2016 <div> 2017 <div class="visually-hidden">Image</div> 2018 <div> <img src="https://assets.tes.com/marketing/s3fs-public/2026-09/Tes-school-management-report-INT-2026-summary-DS50757.svg" alt="School management report" loading="lazy" typeof="foaf:Image" /> 2019 2020</div> 2021 </div> 2022 2023 </article> 2024</div> 2025 </div> 2026 </div><!-- /.o-widget-summary-feature__column --> 2027 </div><!-- .o-widget-summary-feature__inner --> 2028 </div> 2029 </section> 2030 2031</div></div> 2032 </div> 2033 2034</article> 2035 2036 2037 </div> 2038 2039 </div> 2040 2041 2042 </main> 2043 2044 2045<div class="m-back-to-top"> 2046 <button class="m-back-to-top__button" id="m-back-to-top" aria-label="Back to top" data-testid="backtotop"> 2047 <span class="m-back-to-top__tooltip">Back to top</span> 2048 </button> 2049</div> 2050 2051 2052<footer class="o-footer"> 2053 <div class="b-container"> 2054 2055 2056 2057 <div class="m-footer-menu"> 2058 <ul class="m-footer-menu__list"> 2059 <li class="m-footer-menu__list-item " data-state="closed"> 2060 <div class="m-footer-menu__list-item-inner" data-has-children="true"> 2061 <a class="m-footer-menu__link" data-testid = "about" href="https://www.tes.com/corporate"> 2062 About 2063 </a> 2064 2065 <button class="m-footer-menu__toggle"><span>Open</span><i></i></button> 2066 </div> 2067 2068 <div class="m-footer-menu__children"> 2069 <div class="m-footer-menu-sub-menu"> 2070 <ul class="m-footer-menu-sub-menu__list"> 2071 <li class="m-footer-menu-sub-menu__list-item " > 2072 <div class="m-footer-menu-sub-menu__list-item-inner" > 2073 <a class="m-footer-menu-sub-menu__link" data-testid = "corporate" href="/corporate"> 2074 Corporate 2075 </a> 2076 2077 </div> 2078 2079 </li> 2080 <li class="m-footer-menu-sub-menu__list-item " > 2081 <div class="m-footer-menu-sub-menu__list-item-inner" > 2082 <a class="m-footer-menu-sub-menu__link" data-testid = "login" href="https://www.tes.com/login"> 2083 Login 2084 </a> 2085 2086 </div> 2087 2088 </li> 2089 <li class="m-footer-menu-sub-menu__list-item " > 2090 <div class="m-footer-menu-sub-menu__list-item-inner" > 2091 <a class="m-footer-menu-sub-menu__link" data-testid = "contact-us" href="https://www.tes.com/contact"> 2092 Contact us 2093 </a> 2094 2095 </div> 2096 2097 </li> 2098 <li class="m-footer-menu-sub-menu__list-item " > 2099 <div class="m-footer-menu-sub-menu__list-item-inner" > 2100 <a class="m-footer-menu-sub-menu__link" data-testid = "faq" href="https://www.tes.com/help"> 2101 FAQ 2102 </a> 2103 2104 </div> 2105 2106 </li> 2107 <li class="m-footer-menu-sub-menu__list-item " > 2108 <div class="m-footer-menu-sub-menu__list-item-inner" > 2109 <a class="m-footer-menu-sub-menu__link" data-testid = "work-for-t" href="https://www.tes.com/corporate/work-for-tes"> 2110 Work for Tes 2111 </a> 2112 2113 </div> 2114 2115 </li> 2116 <li class="m-footer-menu-sub-menu__list-item " > 2117 <div class="m-footer-menu-sub-menu__list-item-inner" > 2118 <a class="m-footer-menu-sub-menu__link" data-testid = "partners" href="https://www.tes.com/corporate/partnerships"> 2119 Partners 2120 </a> 2121 2122 </div> 2123 2124 </li> 2125 <li class="m-footer-menu-sub-menu__list-item " > 2126 <div class="m-footer-menu-sub-menu__list-item-inner" > 2127 <a class="m-footer-menu-sub-menu__link" data-testid = "legal-term" href="https://www.tes.com/policies/overview"> 2128 Legal Terms and Policies 2129 </a> 2130 2131 </div> 2132 2133 </li> 2134 </ul> 2135 </div> 2136 2137 </div> 2138 </li> 2139 <li class="m-footer-menu__list-item " data-state="closed"> 2140 <div class="m-footer-menu__list-item-inner" data-has-children="true"> 2141 <a class="m-footer-menu__link" data-testid = "jobs" href="https://www.tes.com/jobs/"> 2142 Jobs 2143 </a> 2144 2145 <button class="m-footer-menu__toggle"><span>Open</span><i></i></button> 2146 </div> 2147 2148 <div class="m-footer-menu__children"> 2149 <div class="m-footer-menu-sub-menu"> 2150 <ul class="m-footer-menu-sub-menu__list"> 2151 <li class="m-footer-menu-sub-menu__list-item " > 2152 <div class="m-footer-menu-sub-menu__list-item-inner" > 2153 <a class="m-footer-menu-sub-menu__link" data-testid = "internatio" href="https://www.tes.com/jobs/browse/international"> 2154 International 2155 </a> 2156 2157 </div> 2158 2159 </li> 2160 <li class="m-footer-menu-sub-menu__list-item " > 2161 <div class="m-footer-menu-sub-menu__list-item-inner" > 2162 <a class="m-footer-menu-sub-menu__link" data-testid = "uk" href="https://www.tes.com/jobs/browse/united-kingdom"> 2163 UK 2164 </a> 2165 2166 </div> 2167 2168 </li> 2169 <li class="m-footer-menu-sub-menu__list-item " > 2170 <div class="m-footer-menu-sub-menu__list-item-inner" > 2171 <a class="m-footer-menu-sub-menu__link" data-testid = "australia" href="https://www.tes.com/jobs/browse/australia"> 2172 Australia 2173 </a> 2174 2175 </div> 2176 2177 </li> 2178 <li class="m-footer-menu-sub-menu__list-item " > 2179 <div class="m-footer-menu-sub-menu__list-item-inner" > 2180 <a class="m-footer-menu-sub-menu__link" data-testid = "primary-/-" href="https://www.tes.com/jobs/browse/primary-teaching-and-lecturing"> 2181 Primary / Elementary 2182 </a> 2183 2184 </div> 2185 2186 </li> 2187 <li class="m-footer-menu-sub-menu__list-item " > 2188 <div class="m-footer-menu-sub-menu__list-item-inner" > 2189 <a class="m-footer-menu-sub-menu__link" data-testid = "secondary-" href="https://www.tes.com/jobs/browse/secondary"> 2190 Secondary / High school 2191 </a> 2192 2193 </div> 2194 2195 </li> 2196 <li class="m-footer-menu-sub-menu__list-item " > 2197 <div class="m-footer-menu-sub-menu__list-item-inner" > 2198 <a class="m-footer-menu-sub-menu__link" data-testid = "careers-ad" href="https://www.tes.com/jobs/careers-advice"> 2199 Careers advice 2200 </a> 2201 2202 </div> 2203 2204 </li> 2205 <li class="m-footer-menu-sub-menu__list-item " > 2206 <div class="m-footer-menu-sub-menu__list-item-inner" > 2207 <a class="m-footer-menu-sub-menu__link" data-testid = "education-" href="https://www.tes.com/for-schools/staff-management/education-recruitment"> 2208 Education recruitment 2209 </a> 2210 2211 </div> 2212 2213 </li> 2214 </ul> 2215 </div> 2216 2217 </div> 2218 </li> 2219 <li class="m-footer-menu__list-item " data-state="closed"> 2220 <div class="m-footer-menu__list-item-inner" data-has-children="true"> 2221 <a class="m-footer-menu__link" data-testid = "magazine" href="https://www.tes.com/magazine"> 2222 Magazine 2223 </a> 2224 2225 <button class="m-footer-menu__toggle"><span>Open</span><i></i></button> 2226 </div> 2227 2228 <div class="m-footer-menu__children"> 2229 <div class="m-footer-menu-sub-menu"> 2230 <ul class="m-footer-menu-sub-menu__list"> 2231 <li class="m-footer-menu-sub-menu__list-item " > 2232 <div class="m-footer-menu-sub-menu__list-item-inner" > 2233 <a class="m-footer-menu-sub-menu__link" data-testid = "store" href="https://www.tes.com/store"> 2234 Store 2235 </a> 2236 2237 </div> 2238 2239 </li> 2240 <li class="m-footer-menu-sub-menu__list-item " > 2241 <div class="m-footer-menu-sub-menu__list-item-inner" > 2242 <a class="m-footer-menu-sub-menu__link" data-testid = "news" href="https://www.tes.com/magazine/news"> 2243 News 2244 </a> 2245 2246 </div> 2247 2248 </li> 2249 <li class="m-footer-menu-sub-menu__list-item " > 2250 <div class="m-footer-menu-sub-menu__list-item-inner" > 2251 <a class="m-footer-menu-sub-menu__link" data-testid = "analysis" href="https://www.tes.com/magazine/analysis"> 2252 Analysis 2253 </a> 2254 2255 </div> 2256 2257 </li> 2258 <li class="m-footer-menu-sub-menu__list-item " > 2259 <div class="m-footer-menu-sub-menu__list-item-inner" > 2260 <a class="m-footer-menu-sub-menu__link" data-testid = "teaching-&" href="https://www.tes.com/magazine/teaching-learning"> 2261 Teaching & Learning 2262 </a> 2263 2264 </div> 2265 2266 </li> 2267 <li class="m-footer-menu-sub-menu__list-item " > 2268 <div class="m-footer-menu-sub-menu__list-item-inner" > 2269 <a class="m-footer-menu-sub-menu__link" data-testid = "scotland" href="https://www.tes.com/magazine/hub/scotland"> 2270 Scotland 2271 </a> 2272 2273 </div> 2274 2275 </li> 2276 <li class="m-footer-menu-sub-menu__list-item " > 2277 <div class="m-footer-menu-sub-menu__list-item-inner" > 2278 <a class="m-footer-menu-sub-menu__link" data-testid = "leadership" href="https://www.tes.com/magazine/leadership"> 2279 Leadership 2280 </a> 2281 2282 </div> 2283 2284 </li> 2285 <li class="m-footer-menu-sub-menu__list-item " > 2286 <div class="m-footer-menu-sub-menu__list-item-inner" > 2287 <a class="m-footer-menu-sub-menu__link" data-testid = "tes-explai" href="https://www.tes.com/magazine/tes-explains"> 2288 Tes Explains 2289 </a> 2290 2291 </div> 2292 2293 </li> 2294 <li class="m-footer-menu-sub-menu__list-item " > 2295 <div class="m-footer-menu-sub-menu__list-item-inner" > 2296 <a class="m-footer-menu-sub-menu__link" data-testid = "tes-magazi" href="https://www.tes.com/campaign/download-the-tes-magazine-app"> 2297 Tes Magazine app 2298 </a> 2299 2300 </div> 2301 2302 </li> 2303 </ul> 2304 </div> 2305 2306 </div> 2307 </li> 2308 <li class="m-footer-menu__list-item " data-state="closed"> 2309 <div class="m-footer-menu__list-item-inner" data-has-children="true"> 2310 <a class="m-footer-menu__link" data-testid = "resources" href="https://www.tes.com/teaching-resources"> 2311 Resources 2312 </a> 2313 2314 <button class="m-footer-menu__toggle"><span>Open</span><i></i></button> 2315 </div> 2316 2317 <div class="m-footer-menu__children"> 2318 <div class="m-footer-menu-sub-menu"> 2319 <ul class="m-footer-menu-sub-menu__list"> 2320 <li class="m-footer-menu-sub-menu__list-item " > 2321 <div class="m-footer-menu-sub-menu__list-item-inner" > 2322 <a class="m-footer-menu-sub-menu__link" data-testid = "early-year" href="https://www.tes.com/teaching-resources/hub/early-years"> 2323 Early years 2324 </a> 2325 2326 </div> 2327 2328 </li> 2329 <li class="m-footer-menu-sub-menu__list-item " > 2330 <div class="m-footer-menu-sub-menu__list-item-inner" > 2331 <a class="m-footer-menu-sub-menu__link" data-testid = "primary" href="https://www.tes.com/teaching-resources/hub/primary"> 2332 Primary 2333 </a> 2334 2335 </div> 2336 2337 </li> 2338 <li class="m-footer-menu-sub-menu__list-item " > 2339 <div class="m-footer-menu-sub-menu__list-item-inner" > 2340 <a class="m-footer-menu-sub-menu__link" data-testid = "secondary" href="https://www.tes.com/teaching-resources/hub/secondary"> 2341 Secondary 2342 </a> 2343 2344 </div> 2345 2346 </li> 2347 <li class="m-footer-menu-sub-menu__list-item " > 2348 <div class="m-footer-menu-sub-menu__list-item-inner" > 2349 <a class="m-footer-menu-sub-menu__link" data-testid = "whole-scho" href="https://www.tes.com/teaching-resources/hub/whole-school"> 2350 Whole school 2351 </a> 2352 2353 </div> 2354 2355 </li> 2356 <li class="m-footer-menu-sub-menu__list-item " > 2357 <div class="m-footer-menu-sub-menu__list-item-inner" > 2358 <a class="m-footer-menu-sub-menu__link" data-testid = "special-ed" href="https://www.tes.com/teaching-resources/hub/whole-school/special-educational-needs"> 2359 Special Educational Needs 2360 </a> 2361 2362 </div> 2363 2364 </li> 2365 <li class="m-footer-menu-sub-menu__list-item " > 2366 <div class="m-footer-menu-sub-menu__list-item-inner" > 2367 <a class="m-footer-menu-sub-menu__link" data-testid = "resources-" href="https://www.tes.com/teaching-resources/blog"> 2368 Resources blog 2369 </a> 2370 2371 </div> 2372 2373 </li> 2374 </ul> 2375 </div> 2376 2377 </div> 2378 </li> 2379 <li class="m-footer-menu__list-item " data-state="closed"> 2380 <div class="m-footer-menu__list-item-inner" data-has-children="true"> 2381 <a class="m-footer-menu__link" data-testid = "tes-instit" href="https://www.tes.com/institute"> 2382 Tes Institute 2383 </a> 2384 2385 <button class="m-footer-menu__toggle"><span>Open</span><i></i></button> 2386 </div> 2387 2388
2388 <div class="m-footer-menu__children"> 2389 <div class="m-footer-menu-sub-menu"> 2390 <ul class="m-footer-menu-sub-menu__list"> 2391 <li class="m-footer-menu-sub-menu__list-item " > 2392 <div class="m-footer-menu-sub-menu__list-item-inner" > 2393 <a class="m-footer-menu-sub-menu__link" data-testid = "teacher-tr" href="https://www.tes.com/institute/courses"> 2394 Teacher training courses 2395 </a> 2396 2397 </div> 2398 2399 </li> 2400 <li class="m-footer-menu-sub-menu__list-item " > 2401 <div class="m-footer-menu-sub-menu__list-item-inner" > 2402 <a class="m-footer-menu-sub-menu__link" data-testid = "ske-for-te" href="https://www.tes.com/institute/courses/subject-knowledge-enhancement-teachers"> 2403 SKE for teachers 2404 </a> 2405 2406 </div> 2407 2408 </li> 2409 <li class="m-footer-menu-sub-menu__list-item " > 2410 <div class="m-footer-menu-sub-menu__list-item-inner" > 2411 <a class="m-footer-menu-sub-menu__link" data-testid = "support-fo" href="https://www.tes.com/institute/support-for-schools"> 2412 Support for schools 2413 </a> 2414 2415 </div> 2416 2417 </li> 2418 </ul> 2419 </div> 2420 2421 </div> 2422 </li> 2423 <li class="m-footer-menu__list-item " data-state="closed"> 2424 <div class="m-footer-menu__list-item-inner" data-has-children="true"> 2425 <a class="m-footer-menu__link" data-testid = "advice-hub" href="https://www.tes.com/advice-hub"> 2426 Advice Hub 2427 </a> 2428 2429 <button class="m-footer-menu__toggle"><span>Open</span><i></i></button> 2430 </div> 2431 2432 <div class="m-footer-menu__children"> 2433 <div class="m-footer-menu-sub-menu"> 2434 <ul class="m-footer-menu-sub-menu__list"> 2435 <li class="m-footer-menu-sub-menu__list-item " > 2436 <div class="m-footer-menu-sub-menu__list-item-inner" > 2437 <a class="m-footer-menu-sub-menu__link" data-testid = "blog" href="https://www.tes.com/for-schools/blog"> 2438 Blog 2439 </a> 2440 2441 </div> 2442 2443 </li> 2444 <li class="m-footer-menu-sub-menu__list-item " > 2445 <div class="m-footer-menu-sub-menu__list-item-inner" > 2446 <a class="m-footer-menu-sub-menu__link" data-testid = "safeguardi" href="https://www.tes.com/advice-hub/safeguarding"> 2447 Safeguarding 2448 </a> 2449 2450 </div> 2451 2452 </li> 2453 <li class="m-footer-menu-sub-menu__list-item " > 2454 <div class="m-footer-menu-sub-menu__list-item-inner" > 2455 <a class="m-footer-menu-sub-menu__link" data-testid = "tes-live-l" href="https://www.tes.com/for-schools/live-lessons"> 2456 Tes Live Lessons 2457 </a> 2458 2459 </div> 2460 2461 </li> 2462 </ul> 2463 </div> 2464 2465 </div> 2466 </li> 2467 <li class="m-footer-menu__list-item " data-state="closed"> 2468 <div class="m-footer-menu__list-item-inner" data-has-children="true"> 2469 <a class="m-footer-menu__link" data-testid = "products" href="https://www.tes.com/for-schools"> 2470 Products 2471 </a> 2472 2473 <button class="m-footer-menu__toggle"><span>Open</span><i></i></button> 2474 </div> 2475 2476 <div class="m-footer-menu__children"> 2477 <div class="m-footer-menu-sub-menu"> 2478 <ul class="m-footer-menu-sub-menu__list"> 2479 <li class="m-footer-menu-sub-menu__list-item " > 2480 <div class="m-footer-menu-sub-menu__list-item-inner" > 2481 <a class="m-footer-menu-sub-menu__link" data-testid = "tes-staff-" href="https://www.tes.com/for-schools/staff-management"> 2482 Tes Staff Management 2483 </a> 2484 2485 </div> 2486 2487 </li> 2488 <li class="m-footer-menu-sub-menu__list-item " > 2489 <div class="m-footer-menu-sub-menu__list-item-inner" > 2490 <a class="m-footer-menu-sub-menu__link" data-testid = "tes-class-" href="https://www.tes.com/for-schools/class-charts"> 2491 Tes Class Charts 2492 </a> 2493 2494 </div> 2495 2496 </li> 2497 <li class="m-footer-menu-sub-menu__list-item " > 2498 <div class="m-footer-menu-sub-menu__list-item-inner" > 2499 <a class="m-footer-menu-sub-menu__link" data-testid = "tes-learni" href="https://www.tes.com/for-schools/learning-pathways"> 2500 Tes Learning Pathways 2501 </a> 2502 2503 </div> 2504 2505 </li> 2506 <li class="m-footer-menu-sub-menu__list-item " > 2507 <div class="m-footer-menu-sub-menu__list-item-inner" > 2508 <a class="m-footer-menu-sub-menu__link" data-testid = "tes-timeta" href="https://www.tes.com/for-schools/timetable"> 2509 Tes Timetable 2510 </a> 2511 2512 </div> 2513 2514 </li> 2515 <li class="m-footer-menu-sub-menu__list-item " > 2516 <div class="m-footer-menu-sub-menu__list-item-inner" > 2517 <a class="m-footer-menu-sub-menu__link" data-testid = "tes-parent" href="https://www.tes.com/for-schools/parents-meetings"> 2518 Tes Parentsâ Meetings 2519 </a> 2520 2521 </div> 2522 2523 </li> 2524 <li class="m-footer-menu-sub-menu__list-item " > 2525 <div class="m-footer-menu-sub-menu__list-item-inner" > 2526 <a class="m-footer-menu-sub-menu__link" data-testid = "tes-room-b" href="https://www.tes.com/for-schools/room-booking"> 2527 Tes Room Booking 2528 </a> 2529 2530 </div> 2531 2532 </li> 2533 <li class="m-footer-menu-sub-menu__list-item " > 2534 <div class="m-footer-menu-sub-menu__list-item-inner" > 2535 <a class="m-footer-menu-sub-menu__link" data-testid = "tes-clubs-" href="https://www.tes.com/for-schools/clubs-and-events"> 2536 Tes Clubs and Events 2537 </a> 2538 2539 </div> 2540 2541 </li> 2542 <li class="m-footer-menu-sub-menu__list-item " > 2543 <div class="m-footer-menu-sub-menu__list-item-inner" > 2544 <a class="m-footer-menu-sub-menu__link" data-testid = "tes-seqta" href="https://www.tes.com/for-schools/seqta"> 2545 Tes SEQTA 2546 </a> 2547 2548 </div> 2549 2550 </li> 2551 </ul> 2552 </div> 2553 2554 </div> 2555 </li> 2556 <li class="m-footer-menu__list-item " data-state="closed"> 2557 <div class="m-footer-menu__list-item-inner" data-has-children="true"> 2558 <a class="m-footer-menu__link" data-testid = "products" href="https://www.tes.com/for-schools"> 2559 Products 2560 </a> 2561 2562 <button class="m-footer-menu__toggle"><span>Open</span><i></i></button> 2563 </div> 2564 2565 <div class="m-footer-menu__children"> 2566 <div class="m-footer-menu-sub-menu"> 2567 <ul class="m-footer-menu-sub-menu__list"> 2568 <li class="m-footer-menu-sub-menu__list-item " > 2569 <div class="m-footer-menu-sub-menu__list-item-inner" > 2570 <a class="m-footer-menu-sub-menu__link" data-testid = "tes-safegu" href="https://www.tes.com/for-schools/safeguarding-training"> 2571 Tes Safeguarding Training 2572 </a> 2573 2574 </div> 2575 2576 </li> 2577 <li class="m-footer-menu-sub-menu__list-item " > 2578 <div class="m-footer-menu-sub-menu__list-item-inner" > 2579 <a class="m-footer-menu-sub-menu__link" data-testid = "tes-myconc" href="https://www.tes.com/for-schools/myconcern"> 2580 Tes MyConcern 2581 </a> 2582 2583 </div> 2584 2585 </li> 2586 <li class="m-footer-menu-sub-menu__list-item " > 2587 <div class="m-footer-menu-sub-menu__list-item-inner" > 2588 <a class="m-footer-menu-sub-menu__link" data-testid = "tes-clarit" href="https://www.tes.com/for-schools/clarity"> 2589 Tes Clarity 2590 </a> 2591 2592 </div> 2593 2594 </li> 2595 <li class="m-footer-menu-sub-menu__list-item " > 2596 <div class="m-footer-menu-sub-menu__list-item-inner" > 2597 <a class="m-footer-menu-sub-menu__link" data-testid = "tes-litera" href="https://www.tes.com/for-schools/literacy-assessment"> 2598 Tes Literacy Assessment Online 2599 </a> 2600 2601 </div> 2602 2603 </li> 2604 <li class="m-footer-menu-sub-menu__list-item " > 2605 <div class="m-footer-menu-sub-menu__list-item-inner" > 2606 <a class="m-footer-menu-sub-menu__link" data-testid = "tes-engage" href="https://www.tes.com/for-schools/engage"> 2607 Tes Engage 2608 </a> 2609 2610 </div> 2611 2612 </li> 2613 <li class="m-footer-menu-sub-menu__list-item " > 2614 <div class="m-footer-menu-sub-menu__list-item-inner" > 2615 <a class="m-footer-menu-sub-menu__link" data-testid = "tes-assetw" href="https://www.tes.com/for-schools/assetwhere"> 2616 Tes AssetWhere 2617 </a> 2618 2619 </div> 2620 2621 </li> 2622 <li class="m-footer-menu-sub-menu__list-item " > 2623 <div class="m-footer-menu-sub-menu__list-item-inner" > 2624 <a class="m-footer-menu-sub-menu__link" data-testid = "help-and-s" href="https://help.tes.com/support/home"> 2625 Help and support portal 2626 </a> 2627 2628 </div> 2629 2630 </li> 2631 </ul> 2632 </div> 2633 2634 </div> 2635 </li> 2636 </ul> 2637 </div> 2638 2639 2640
2641 <div class="o-footer__copyright"> 2642 <div class="o-footer__copyright-inner"> 2643 <p>Copyright © 2026</p> 2644 2645 <div> 2646 <div id="block-copyright-2"> 2647 2648 2649 2650 <div><p>This website and its content is subject to our <a href="https://www.tes.com/policies/general-terms-business">General Terms of Business</a>. Tes Global Ltd is registered in England (Company No 02017289) with its registered office at Building 3, St Paulâs Place, Norfolk Street, Sheffield, S1 2JE.</p> 2651</div> 2652 2653 </div> 2654 2655 </div> 2656</div> 2657 </div> 2658 </div> 2659</footer> 2660 2661 2662 2663</div> 2664 </div> 2665 2666 2667
2667<script type="application/json" data-drupal-selector="drupal-settings-json">{"path":{"baseUrl":"\/","scriptPath":null,"pathPrefix":"","currentPath":"node\/3","currentPathIsAdmin":false,"isFront":true,"currentLanguage":"en"},"pluralDelimiter":"\u0003","suppressDeprecationErrors":true,"feature_toggle":{"enabled":[]},"tg_utm":{"cookie_max_age":2592000000,"cookie_name":"tes_utm"},"ajaxTrustedUrl":{"form_action_p_pvdeGsVG5zNF_XLGPTvYSKCf43t8qZYSwcfZl2uzM":true},"pendo":{"api_key":"acd7b4d7-11f3-4ae8-61ad-4a2571bcacec","data":{"account":{"id":"427e8092-7257-41d8-be89-b3b791518f3f"},"visitor":{"id":"","email":null}}},"user":{"uid":0,"permissionsHash":"fd17fac7f4c84ae65e6caff5fa0d0f4550d60f47fd2920ac1bb6239576231c19"}}</script>
vendor: 1 bytes, line 2667
2667
2668<script src="https://assets.tes.com/marketing/s3fs-public/js/js_yZdi2aXYdEgennftm1cywpSNcdENb7pMgpE6foPUCAM.js"></script>
vendor: 1 bytes, line 2668
2668
2669<script src="/modules/contrib/pendo/js/pendo.js?v=1.x" class="optanon-category-C0003"></script>
2669 2670 2671
2671<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"55613def96","applicationID":"577785330","transactionName":"Ml1TZBNTCkcCAkFaWAsXckUSRgtZTARbR14RQR9eDlYBGgAAW1xZDFtQXFtQBUcKAmpDVgJd","queueTime":0,"applicationTime":98,"atts":"HhpQEltJGUk=","errorBeacon":"bam.nr-data.net","agent":""}</script>
2671</body> 2672</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.