1(()=>{window.application=window.application||{};var h=window.application;h.adaptive={sizes:[480,768,992,1382,1920],getMinimumSize:function(e){let t=0;for(;t<this.sizes.length;){if(e<=this.sizes[t])return this.sizes[t];t++}}};h.detectBrowser=function(){let e=navigator.userAgent,t,r=e.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*([\d\.]+)/i)||[];return/trident/i.test(r[1])?(t=/\brv[ :]+(\d+(\.\d+)?)/g.exec(e)||[],"IE "+(t[1]||"")):(r=r[2]?[r[1],r[2]]:[navigator.appName,navigator.appVersion,"-?"],(t=e.match(/version\/([\.\d]+)/i))!==null&&(r[2]=t[1]),r.join(" "))};document.querySelectorAll("[data-bgimage]").forEach(function(e){let t=e.getAttribute("data-bgimage");if(!/[?&]width=/.test(t)){let o=Math.max(screen.width,screen.height),a=h.adaptive.getMinimumSize(o);a!==void 0&&(t+="&width="+a)}let r=e.getAttribute("style");r||(r=""),r.length>0&&r.indexOf(";",r.length-1)==-1&&(r+=";"),e.setAttribute("style",r+" background-image:url('"+t+"');background-repeat: no-repeat;"),e.classList.add("bg-content")});window.moduleConfigListener=(e,t)=>{let r=new MutationObserver(function(o){o.forEach(function(a){a.type==="attributes"&&a.attributeName==="data-config"&&(t&&(t(e),t=null),r.disconnect())})});if(r.observe(e,{attributes:!0,attributeFilter:["data-config"]}),t){let o=setInterval(()=>{let a=document.querySelector(`#${e.id}`),p=JSON.parse(a.dataset.config);p&&Object.keys(p).length&&(t&&(t(a),t=null),clearInterval(o),r.disconnect())},100)}};h.init=function(e){h.translations=e};h.getQueryStrings=function(){let e=[],t,r=window.location.href.slice(window.location.href.indexOf("?")+1).split("&");for(let o=0;o<r.length;o++)t=r[o].split("="),e.push(t[0]),e[t[0]]=t[1];return e};window.application.debounce=function(e,t){let r=null;return(...o)=>{window.clearTimeout(r),r=window.setTimeout(()=>{e.apply(null,o)},t)}};window.application.isSuccessMessage=e=>e?e.success===!0?!0:String(e.type||"").toLowerCase()==="success":!1;window.application.getPopupMessages=e=>{if(!e)return[];let t=Array.isArray(e.messages)?e.messages:[],r=e.value&&Array.isArray(e.value.messages)?e.value.messages:[];return(t.length?t:r).map(a=>({success:window.application.isSuccessMessage(a),message:a?.message||""})).filter(a=>a.message)};window.application.redirectAfterLogout=()=>{let e=new URL(window.location.href);e.searchParams.set("loginStatus","loggedOut"),window.location.assign(`${e.pathname}${e.search}${e.hash}`)};window.application.showLoginDisplayMessage=e=>{if(!e)return;window.application.createMessage([{success:!0,message:e}]);let t=new URL(window.location.href);!t.searchParams.has("loginStatus")&&!t.searchParams.has("forceRefresh")||(t.searchParams.delete("loginStatus"),t.searchParams.delete("forceRefresh"),window.history.replaceState({},"",`${t.pathname}${t.search}${t.hash}`))};window.application.createMessage=e=>{let t=(Array.isArray(e)?e:[]).map(i=>({success:window.application.isSuccessMessage(i),message:i?.message||""})).filter(i=>i.message);if(!t.length)return;let r=document.querySelector(".popup-message");r&&r.remove();let o=document.createElement("div");o.className="popup-message",o.setAttribute("role","dialog"),o.setAttribute("aria-modal","true");let a=document.createElement("div");a.className="popup-message__content";let p=document.createElement("div");p.className="popup-message__header";let s=document.createElement("button");s.className="popup-message__close",s.type="button",s.setAttribute("aria-label","Close message modal"),s.innerText="X",s.addEventListener("click",()=>{o.remove()});let n=document.createElement("div");n.className="popup-message__body",t.forEach(i=>{let d=document.createElement("p");d.className=i.success?"success":"error",d.innerText=i.message,n.appendChild(d)}),p.appendChild(s),a.appendChild(p),a.appendChild(n),o.appendChild(a),document.body.appendChild(o)};window.application.fetchApi=function(e,t,r={},o,a="application/json"){let s=(f=>Object.keys(f||{}).filter(m=>f[m]!==void 0&&f[m]!==null).map(m=>encodeURIComponent(m)+"="+encodeURIComponent(f[m])).join("&"))(r),n=window.location.origin+e;s&&(n+=(e.indexOf("?")>=0?"&":"?")+s);let i=new AbortController,d=document.querySelector('input[name="__RequestVerificationToken"]'),c=d?d.value:"",u=new Promise((f,m)=>{let g;if((t==="POST"||t==="PUT")&&a==="application/x-www-form-urlencoded"){let l=new URLSearchParams;o&&typeof o=="object"&&!(o instanceof FormData)&&Object.keys(o).forEac
1h(w=>{o[w]===void 0||o[w]===null||l.append(w,String(o[w]))}),c&&!l.has("__RequestVerificationToken")&&l.append("__RequestVerificationToken",c),g={method:t,headers:{"Content-Type":a},body:l.toString()}}else if((t==="POST"||t==="PUT")&&a!=="multipart/form-data"){let l=o;c&&l&&typeof l=="object"&&!Array.isArray(l)?l=Object.assign({},l,{__RequestVerificationToken:c}):c&&l==null&&(l={__RequestVerificationToken:c}),g={method:t,headers:{"Content-Type":a},body:JSON.stringify(l)}}else(t==="POST"||t==="PUT")&&a==="multipart/form-data"?(c&&o&&o instanceof FormData&&!o.has("__RequestVerificationToken")&&o.append("__RequestVerificationToken",c),g={method:t,body:o}):g={method:t};g.headers||(g.headers={}),g.headers.gp_currentpage=window.location.href,c&&(t==="POST"||t==="PUT"||t==="DELETE")&&(g.headers.RequestVerificationToken=c),fetch(n,g).then(l=>{let w=l.headers.get("content-type");return w&&w.includes("application/json")?l.json():l.ok?l.text():l.text().then(v=>{let S=(l.status+" "+(l.statusText||"")).trim(),y=new Error("Error during fetch request: "+S+" "+n);throw y.status=l.status,y.url=n,y.body=v,y})}).then(l=>{f(l)}).catch(l=>{l&&!l.url&&(l.url=n),m(l)})});return u.abort=()=>i.abort(),u};window.addEventListener("resize",()=>{document.querySelectorAll(".dropdown:not(#mobile-menu) > .dropped").forEach(e=>{h.adjustDropdownTransform(e)})});h.adjustDropdownTransform=function(e){if(e&&e.style.display!=="none"&&e.parentElement&&e.parentElement.matches(".dropdown:not(#mobile-menu)")){e.style.transform="translateX(0)",e.style.removeProperty("--dropdown-max-height");let t=e.getBoundingClientRect(),r=window.innerWidth,o=16,a=Math.max(window.innerHeight-t.top-o,o),p=0;t.right>r?p=r-t.right:t.left<0&&(p=-t.left),e.style.transform=`translateX(${p}px)`,e.style.setProperty("--dropdown-max-height",`${a}px`)}};async function A(){document.querySelector("#mobile-menu-burger")&&document.querySelector("#mobile-menu-burger").addEventListener("click",function(n){let i=n.currentTarget,d=i.closest("nav");d.querySelector(`#${i.dataset.dropdown}`)||(n.stopPropagation(),window.application.fetchApi("/gbapi/menu/getMobileMenu","GET").then(u=>{d.insertAdjacentHTML("beforeend",u.value),o(i);let f=document.getElementById("mobile-menu"),m=document.querySelector("nav.service > div > ul");m&&(f&&f.append(m),m.classList.add("service-links"))})),document.body.classList.toggle("open")}),document.body.addEventListener("click",function(n){var i=n.target.matches(".dropdown-toggle, .dropdown-text-toggle, .dropdown-item-expander, .mega-dropdown a:not([href]), .dropdown-toggle > span");if(i){n.preventDefault(),n.stopPropagation();let c;if(n.target.matches(".dropdown-toggle, .dropdown-text-toggle, .dropdown-item-expander")?c=n.target:n.target.matches(".mega-dropdown a:not([href])")?c=n.target.parentElement.querySelector(".dropdown-toggle"):c=n.target.closest(".dropdown-toggle, .dropdown-text-toggle"),!c)return;let u=c.nextElementSibling||document.querySelector(c.getAttribute("href"))||document.querySelector(`#${c.dataset.dropdown}`);if(!u)return;var d=!u.classList.contains("dropped");d?(t(u,n.target),o(c,u),h.adjustDropdownTransform(u)):r(c,u)}else n.target.closest(".dropped")||document.querySelectorAll(".dropped").forEach(function(c){var u=e(c);u&&r(u,c)})});function e(n){let i=n.previousElementSibling;return i&&i.matches(".dropdown-toggle.open, .dropdown-text-toggle.open")?i:null}function t(n,i){((i&&typeof i.closest=="function"?i.closest(".mobile-filters-modal"):null)||document).querySelectorAll(".dropped").forEach(function(u){if(u===n||u.contains(n))return;let f=e(u);f&&r(f,u)})}function r(n,i){i&&(i.hidden=!0,i.classList.remove("dropped"),n&&(n.dataset["aria-label"]&&n.setAttribute("aria-label",n.dataset["aria-label"]),n.classList.remove("open"),n.setAttribute("aria-expanded","false"),n.dispatchEvent(new Event("aftercollapse"))),document.querySelector(".dropdown-toggle.open, .dropdown-text-toggle.open")||document.body.classList.remove("nav-open"))}function o(n,i){i&&(i.hidden=!1,i.classList.add("dropped")),n.setAttribute("aria-expanded","true"),n.classList.add("open"),n.setAttribute("aria-label","Luk dropdown menu"),n.dispatchEvent(new Event("afterdrop")),document.body.classList.add("nav-open")}function a(){document.querySelectorAll("[data-photo-credit]").forEach(i=>
1{let d=i.getAttribute("data-photo-credit");if(i.classList.contains("hero"))return;let u=document.createElement("span");u.classList.add("photo-credit"),u.textContent=d,i.insertAdjacentElement("afterend",u)})}a();let p=document.querySelector(".cookie-warning");if(!p)return;let s=p.querySelector(".btn.all.accept-all-button");s&&s.focus()}function E(){function e(s){return s?s.replace("_","-"):navigator.language}function t(s,n,i){return new Intl.DateTimeFormat(n,{month:i}).format(s)}function r(s){return String(s).padStart(2,"0")}function o(s,n,i){let d={yyyy:String(s.getFullYear()),MMMM:t(s,i,"long"),MMM:t(s,i,"short"),MM:r(s.getMonth()+1),dd:r(s.getDate()),HH:r(s.getHours()),mm:r(s.getMinutes())};return n.replace(/yyyy|MMMM|MMM|MM|dd|HH|mm/g,c=>d[c]||c)}function a(s){s.forEach(n=>{if(n.dataset.processed)return;n.dataset.processed="true";let i=n.dataset.date;if(!i)return;let d=new Date(i);if(Number.isNaN(d.getTime()))return;let c=e(n.dataset.locale||n.getAttribute("date-locale")||navigator.language),u=n.dataset.format,f;u?f=o(d,u,c):f=d.toLocaleString(c),f&&(n.innerText=f)})}a(document.querySelectorAll(".datetime-to-locale")),new MutationObserver(s=>{let n=[];s.forEach(i=>{i.addedNodes.forEach(d=>{d.nodeType===1&&(d.classList.contains("datetime-to-locale")&&n.push(d),n.push(...d.querySelectorAll(".datetime-to-locale")))})}),a(n)}).observe(document.body,{childList:!0,subtree:!0,characterData:!0,attributes:!0})}function b(){if(document.querySelector(".cookie-warning"))return;let e=window.navigator.userAgent,t=window.location.href;setTimeout(function(){window.application.fetchApi("/gbapi/analytics/add-view","GET",{userAgent:e,originalUrl:t})},100)}function T(){let e=document.querySelector('div[role="main"]');if(e){let t=e.querySelectorAll('[class*="section"]'),r=t.length>0?t[t.length-1]:null;if(r){let o=Array.from(r.children).reverse().find(p=>p.nodeType===1);o&&o.classList.contains("inner-grid")&&Array.from(o.classList).some(p=>p.startsWith("bg-color-"))&&(e.style.paddingBottom="0px")}}}document.querySelectorAll(".rich-text table").forEach(e=>{let t=document.createElement("div");t.classList.add("table-box"),e.parentNode.insertBefore(t,e),t.appendChild(e)});A();addEventListener("DOMContentLoaded",()=>{T(),E();let e=document.querySelector("#member-login-display-text"),t=()=>{e&&(e.style.transition="opacity 0.15s ease",e.style.opacity="1")};if(/^\/preview\/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\/?$/.test(window.location.pathname)){t(),b();return}e&&(e.style.opacity="0");let o=window.application.fetchApi("/gbapi/login-display","GET");o.then(a=>{if(a.succeeded&&a.value){let p=a.value.userLoginDisplayBanner,s=document.querySelector(".editor-link");p&&!/<html\b/i.test(p)&&!s&&(document.body.insertAdjacentHTML("afterbegin",p),document.querySelector("#logout-user")&&document.querySelector("#logout-user").addEventListener("click",function(i){i.preventDefault(),window.application.fetchApi("/gbapi/module/loginform/logout/user","POST").then(()=>{window.application.redirectAfterLogout()}).catch(d=>{console.error("Logout failed:",d)})}),document.querySelector("#logout-member")&&document.querySelector("#logout-member").addEventListener("click",function(i){i.preventDefault(),window.application.fetchApi("/gbapi/module/loginform/logout/member","POST").then(()=>{window.application.redirectAfterLogout()}).catch(d=>{console.error("Logout failed:",d)})}));let n=a.value.memberButtonTextOverride;n&&e&&(e.textContent=n),window.application.showLoginDisplayMessage(a.value.loginMessage)}}),o.catch(a=>{console.error("Error fetching login display:",a)}),o.finally(t),b()});})();
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.