1 <!DOCTYPE html> 2 3 <html class="std" xmlns="https://www.w3.org/1999/xhtml" xmlns:fb="https://ogp.me/ns/fb#" xmlns:og="https://opengraphprotocol.org/schema/"> 4 <head> 5 <style></style> 6 7 <title>Booktopia - Books, Online Books, #1 Australian online bookstore, Buy Discount Books, eBooks and DVDs from Australia and the world.</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 8 <meta property="og:description" content="Booktopia - buy online books, DVDs and Magazine Subscriptions from Australia's leading online bookstore with over 4 million titles. Booktopia offers thousands of eBooks, daily discounted books and flat rate shipping of $9.99 per online book order."> 9 <meta name="description" content="Booktopia - buy online books, DVDs and Magazine Subscriptions from Australia's leading online bookstore with over 4 million titles. Booktopia offers thousands of eBooks, daily discounted books and flat rate shipping of $9.99 per online book order." /> <meta name="googlebot" content="index, follow" /> 10 <meta name="robots" content="index, follow" /> 11<meta name="verify-v1" content="F64zs4eUjSjTSL0rPUgr9PhYfo83zSq3P5vPZv/82pw=" /> 12<meta name="verify-v1" content="KglSvZ6iSpITiVE7VWFSJvDW1Pubrd0s/OJl2JD2VE4=" /> 13<meta name="google-site-verification" content="WYJj8GuhTmtMPcGLnWPnypIz5pphLymkgK1b1R2x4kw" /> 14<META name="y_key" content="c9aade7ff6d13867"> 15<meta property="fb:app_id" content="116180781751442"/> 16<meta name="ec_enabled" content="true" id="ec_enabled"/> 17<link rel="preconnect" href="https://dev.visualwebsiteoptimizer.com" crossorigin="anonymous"/> 18<link rel="preconnect" href="https://www.google.com" crossorigin="anonymous"/> 19<link rel="preconnect" href="https://static.scarabresearch.com" crossorigin="anonymous"/> 20 21<link rel="preload" href="https://www.booktopia.com.au/wro/6199/jQuery.js?v=dev-20260911152026" as="script"/> 22 <link rel="preload" href="https://www.booktopia.com.au/wro/6199/booktopia.desktop.css?v=dev-20260911152026" as="style" /> 23<link rel="preload" href="https://www.booktopia.com.au/template-resources/icon-fonts/booktopia.ttf?v=dev-20260911152026" as="font" crossorigin/> 24<link rel="preload" href="https://www.booktopia.com.au/template-resources/webfonts/Inter-roman.var.woff2?v=3.19" as="font" crossorigin/> 25<link rel="preload" href="https://www.booktopia.com.au/template-resources/webfonts/Inter-italic.var.woff2?v=3.19" as="font" crossorigin/> 26<link rel="icon" href="https://www.booktopia.com.au/images/assets/favicon.png" type="image/png" /> 27<link rel="shortcut icon" href="https://www.booktopia.com.au/images/assets/favicon.png" type="image/png" /> 28 29 30 31 32 33
34<script type="text/javascript"> 35 var baseUrl = "/"; 36 window.BKT_GLOBALS = {sesBrowseProductType: "917504", isMobileSession: false, currentNav: "",serverTimestamp: null, 37 occasion: {enabled: "true",occasionName: "", theme: "color:#fff;background:#009933;", cutoffDate: "12/24/2025", displayWillNotArriveForOccasion: "true"}, 38 version: "dev-20260911152026", fatZebraPaymentGateway: "FatZebra", gaEnhancedEcommerceEnabled: true, includeNotificationHeaderTemplates: false, paypalPayIn4Enabled: "true", enablePromotionText: "true", expressDeliveryEstimationEnabled: "true", expressShippingClassName: "ships-2-days", enableUniversalGA: true, freeShippingPromotionEnabled: 'true' }; 39</script>
vendor: 1 bytes, line 39
39
40<script type="text/javascript">var customPath = "/template-resources";</script>
40 41 <link rel="stylesheet" href="/wro/6199/booktopia.desktop.css?v=dev-20260911152026" type="text/css" /> 42 <link rel="stylesheet" href="/wro/6199/booktopia.desktop.default.css?v=dev-20260911152026" type="text/css" /> 43
44<script> 45 function isBotUserAgent(){ 46 var crawlerAgentRegex = /bot|google|aolbuild|baidu|bing|msn|duckduckgo|teoma|slurp|yandex|crawler|spider|facebookexternalhit|baiduspider|headless|phantom|selenium|python|curl|wget/i; 47 return crawlerAgentRegex.test(navigator.userAgent); 48 } 49 50 function lazyLoadScript(url, callback){ 51 if(isBotUserAgent()) return; 52 var head = document.getElementsByTagName('head')[0]; 53 var script = document.createElement('script'); 54 script.defer = true; 55 script.type = 'text/javascript'; 56 script.src = url; 57 head.appendChild(script); 58 script.onload = callback; 59 } 60</script>
60 61<style> 62 @font-face { 63 font-family: 'booktopia'; 64 src: url('/template-resources/icon-fonts/booktopia.eot?v=dev-20260911152026'); 65 src: url('/template-resources/icon-fonts/booktopia.eot?v=dev-20260911152026#iefix') format('embedded-opentype'), 66 url('/template-resources/icon-fonts/booktopia.ttf?v=dev-20260911152026') format('truetype'), 67 url('/template-resources/icon-fonts/booktopia.woff?v=dev-20260911152026') format('woff'), 68 url('/template-resources/icon-fonts/booktopia.svg?v=dev-20260911152026#booktopia') format('svg'); 69 font-weight: normal; 70 font-style: normal; 71 font-display: block; 72 } 73 74 @font-face { 75font-family: 'Inter'; 76font-weight: 100 900; 77font-display: swap; 78font-style: normal; 79font-named-instance: 'Regular'; 80src: url("/template-resources/webfonts/Inter-roman.var.woff2?v=3.19") format("woff2"); 81} 82 @font-face { 83font-family: 'Inter'; 84font-weight: 100 900; 85font-display: swap; 86font-style: italic; 87font-named-instance: 'Italic'; 88src: url("/template-resources/webfonts/Inter-italic.var.woff2?v=3.19") format("woff2"); 89} 90</style> 91 92
92<script async src="//booktopia.api.useinsider.com/ins.js?id=10002591"></script>
92 93 <!-- Global site tag (gtag.js) - Google Ads: 1071893088 --> 94
94<script> 95 lazyLoadScript("https://www.googletagmanager.com/gtag/js?id=AW-1071893088", function(){}) 96 </script>
96 97
97<script> 98
vendor: 154 bytes, lines 98-101
98window.dataLayer = window.dataLayer || []; 99 function gtag(){dataLayer.push(arguments);} 100 gtag('js', new Date()); 101 gtag('config', '
101AW-1071893088
vendor: 13 bytes, line 101
101' );
101gtag('config', 'AW-978980296' ); </script>
101 102
103<script> 104 (function(w,d,s,l,i){ 105 if(isBotUserAgent()) return; 106 w[l]=w[l]||[]; 107 w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'}); 108 var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:''; 109 j.async=true; 110 j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl + '>m_auth=CYkt4R7ZvVvpqpVwuMhNgw>m_preview=env-2>m_cookies_win=x'; 111 f.parentNode.insertBefore(j,f); 112 })(window,document,'script','dataLayer','GTM-N74L7GH'); 113</script>
113 114 115
116<script type="text/javascript"> 117 (function(c,l,a,r,i,t,y){ 118 c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)}; 119 t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i; 120 y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y); 121 })(window, document, "clarity", "script", "t8vp5bxaqo"); 122</script>
122<meta id="google-signin-client_id" name="google-signin-client_id" content="710731560171-45vinu3acor8dihqkbgoas28pkuhob7c.apps.googleusercontent.com" data-enabled="true"> <meta http-equiv="X-UA-Compatible" content="IE=9" /> 123 124 <!-- Start VWO Async SmartCode -->
125<script type='text/javascript' id='vwoCode'> 126 if(!isBotUserAgent()) { 127 var _vwo_clicks = 300; //this will track first 300 click 128 window._vwo_code = window._vwo_code || (function () { 129 var account_id = 336745, 130 version = 1.5, 131 settings_tolerance = 2000, 132 library_tolerance = 2500, 133 use_existing_jquery = false, 134 is_spa = 1, 135 hide_element = 'body', 136 hide_element_style = 'opacity:0 !important;filter:alpha(opacity=0) !important;background:none !important', 137 /* DO NOT EDIT BELOW THIS LINE */ 138 f = false, d = document, vwoCodeEl = d.querySelector('#vwoCode'), code = { 139 use_existing_jquery: function () { 140 return use_existing_jquery 141 }, library_tolerance: function () { 142 return library_tolerance 143 }, hide_element_style: function () { 144 return '{' + hide_element_style + '}' 145 }, finish: function () { 146 if (!f) { 147 f = true; 148 var e = d.getElementById('_vis_opt_path_hides'); 149 if (e) e.parentNode.removeChild(e) 150 } 151 }, finished: function () { 152 return f 153 }, load: function (e) { 154 var t = d.createElement('script'); 155 t.fetchPriority = 'high'; 156 t.src = e; 157 t.type = 'text/javascript'; 158 t.onerror = function () { 159 _vwo_code.finish() 160 }; 161 d.getElementsByTagName('head')[0].appendChild(t) 162 }, getVersion: function () { 163 return version 164 }, getMatchedCookies: function (e) { 165 var t = []; 166 if (document.cookie) { 167 t = document.cookie.match(e) || [] 168 } 169 return t 170 }, getCombinationCookie: function () { 171 var e = code.getMatchedCookies(/(?:^|;)\s?(_vis_opt_exp_\d+_combi=[^;$]*)/gi); 172 e = e.map(function (e) { 173 try { 174 var t = decodeURIComponent(e); 175 if (!/_vis_opt_exp_\d+_combi=(?:\d+,?)+\s*$/.test(t)) { 176 return '' 177 } 178 return t 179 } catch (e) { 180 return '' 181 } 182 }); 183 var i = []; 184 e.forEach(function (e) { 185 var t = e.match(/([\d,]+)/g); 186 t && i.push(t.join('-')) 187 }); 188 return i.join('|') 189 }, init: function () { 190 if (d.URL.indexOf('__vwo_disable__') > -1) return; 191 window.settings_timer = setTimeout(function () { 192 _vwo_code.finish() 193 }, settings_tolerance); 194 var e = d.createElement('style'), t = hide_element ? hide_element + '{' + hide_element_style + '}' : '', i = d.getElementsByTagName('head')[0]; 195 e.setAttribute('id', '_vis_opt_path_hides'); 196 vwoCodeEl && e.setAttribute('nonce', vwoCodeEl.nonce); 197 e.setAttribute('type', 'text/css'); 198 if (e.styleSheet) e.styleSheet.cssText = t; else e.appendChild(d.createTextNode(t)); 199 i.appendChild(e); 200 var n = this.getCombinationCookie(); 201 this.load('https://dev.visualwebsiteoptimizer.com/j.php?a=' + account_id + '&u=' + encodeURIComponent(d.URL) + '&f=' + +is_spa + '&vn=' + version + (n ? '&c='
201+ n : '')); 202 return settings_timer 203 } 204 }; 205 window._vwo_settings_timer = code.init(); 206 return code; 207 }()); 208 } 209</script>
209 210<!-- End VWO Async SmartCode -->
211<script type="text/javascript">(window.NREUM||(NREUM={})).init={ajax:{deny_list:["bam.nr-data.net"]}};(window.NREUM||(NREUM={})).loader_config={xpid:"Ug4AUFRADAYHV1ZQ",licenseKey:"18e954a8c4",applicationID:"457372",browserID:"2719625"};;/*! For license information please see nr-loader-full-1.322.0.min.js.LICENSE.txt */ 212(()=>{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};
212e.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;
212const 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:()=>S,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);
212if(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,R(e,t)}function R(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 w(e,t,r,n,i){if(R(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&&(w(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&&(w(e,n,i,r,s),t.delete(i)),0===t.size}})}(e,a,s,t.timingMethod)}function S(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 R=0,w=0;p(r).recordManifestScriptWindow=(e,t)=>{e&&(R=R>0?Math.min(R,e):e),t&&(w=w>0?Math.max(w,t):t)},Object.defineProperty(r,"scriptStart",d(()=>{const e=y()?r.registeredAt:h?.script.start??r.fetchEnd;return R>0?Math.min(e,R):e})),Object.defineProperty(r,"scriptEnd",d(()=>{const e=y()?r.registeredAt:h?.script.end??r.registeredAt;return w>0?Math.max(e,w):e}))}catch(e){}return r}},5732(e,t,r){"use strict";r.d(t,{$5:()=>m,B5:()=>g,K6:()=>u,M$:()=>
212o,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])}
212(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}
212;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])},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","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=>({95:"nr-full-compressor",222:"nr-full-recorder",649:"nr-full-iframe-message-handler",89
2121:"nr-full"}[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)=>{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={891:"sha512-YFF+tf82v8eglmCSz5XYYPZ9svAEVPEL8CjIs/VJ5WDjxajLkBKoCp6iBhqtcYRu8v8sXwAWX58PGV4RVzB2dQ==",222:"sha512-y0XrI32v2ZxZdktMLngwYUsETp/i/aYkdx9JOeIAmr2KYJdlDneMKYdNwPaZiOX3gb7AXywTby7jg1okwEkArw==",95:"sha512-WtCe89dmBu8YGhCnszRdHzYCzOqwTSeitVhY/ahmZczjI+0C6KOazsnU/vPsTDaM7VSG+iZW7zidI1t5+hpiYQ==",649:"sha512-AYJxsYTPRDF5tWSm4lWONX5VM69Ou9twLFZ8apchUI9gNOrXBkzP8QZ+PQkMz8nGjh/7oVMR+1cA+5dWFYhmmw=="};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={85:0,959: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
212ine_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 R=r(9232);var w=r(7836),T=r(3241);const S={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0};var A=r(9908),x=r(9752);function _(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,S)),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:R.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=w.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,A.p)("iframe-message",[t],void 0,"IFRAME",e.ee)}),e.runtime.configured=!0)}var O=r(1863),k=r(4261),L=r(1738);var M=r(1687),P=r(4234),N=r(5289),j=r(5270),I=r(7767),C=r(6389),D=r(7699);const B=new WeakSet,H=new WeakMap;class W extends P.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,M.Ak)(e,this.featureName),t()}))}):(0,M.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()=>
212{if((0,I.V)(e.init))try{const{setupAgentSession:t}=await r.e(891).then(r.bind(r,8766));t(e)}catch(e){(0,l.R)(20,e),t.emit("internal-error",[e]),(0,A.p)(D.qh,[e],void 0,n,t)}if(e.init.api.register.allow_iframe_bridge)try{const{setupIframeMFEMessageListener:t}=await r.e(649).then(r.bind(r,6417));t(e)}catch(e){(0,l.R)(23,e)}const[{Connector:i},{Harvester:s}]=await Promise.all([r.e(891).then(r.bind(r,6589)),r.e(891).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,M.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,M.Ze)(this.agentRef,this.featureName,!0),this.loadedSuccessfully(!1)}};g.RI?(0,N.GG)(()=>i(),!0):i()}#r(e,r,n){if(this.blocked)return!1;switch(e){case t.K7.sessionReplay:return(0,j.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){}_(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,L.Y)(k.Fw,function(e,r){"string"==typeof e&&("/"!==e.charAt(0)&&(e="/"+e),t.runtime.customTransaction=(r||"http://custom.transaction")+e,(0,A.p)("api-"+k.Fw,[(0,O.t)()],void 0,void 0,t.ee))},t),this.importAggregator(e,()=>e.init.feature_flags.includes("rum_v2")?r.e(891).then(r.bind(r,908)):r.e(891).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,N.sB)(t=>{e(t,"DOMContentLoaded")}),(0,N.GG)(t=>{e(t,"load")}),(0,N.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),_(this,e,e.loaderType||"agent"),t=this,(0,L.Y)(k.cD,function(e,r,n=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof r)||null===r)return(0,L.U)(t,e,r,k.cD,n);(0,l.R)(40,typeof r)}else(0,l.R)(39,typeof e)},t),function(e){(0,L.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,A.p)("api-setUserIdAndResetSession",[t],void 0,"session",e.ee):(0,L.U)(e,"enduser.id",t,k.Dl,!0)},e)}(this),function(e){(0,L.Y)(k.nb,function(t){if("string"==typeof t||null===t)return(0,L.U)(e,"application.version",t,k.nb,!1);(0,l.R)(42,typeof t)},e)}(this),function(e){(0,L.Y)("start",function(){e.ee.emit("manual-start-all")},e)}(this),function(e){(0,L.Y)(k.Pv,function(t=!0){if("boolean"==typeof t){if((0,A.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,A.p)("docHidden",[(0,O.t)()],void 0,z.T,this.ee),!0),(0,V.G)(()=>(0,A.p)("winPagehide",[(0,O.t)()],void 0,z.T,this.ee)),this.importAggregator(e,()=>r.e(891).then(r.bind(r,9018))))}}var q=r(3969);class Y extends W{static featureName=q.TZ;constructor(e){super(e,q.TZ),this.importAggregator(e,()=>r.e(891).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,O.t)()){"string"==typeof e&&(e=new Error(e)),(0,A.p)("err",[e,s,!1,r,n.runtime.isRecording,void 0,i],void 0,t.K7.jserrors,n.ee),(0,A.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,O.t)()){(0,ae.R)(n.ee,e,t,r,!1,i,s)}function ce(e,r,n,i,s=(0,O.t)()){(0,A.p)("api-"+k.hG,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}function de(e,r,n,i,s=(0,O.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)=>
212null==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,A.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,O.t)()){(0,A.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,O.t)();if(s(e)>1e4)return void a.disconnect();r=e}n??=(0,O.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,O.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 Re=["entry","scripts","all"],we=["name","id","type"],Te=new Map([[ce,"addPageAction"],[oe,"log"],[de,"measure"],[ie,"noticeError"],[ue,"recordCustomEvent"]]),Se={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 Ae(e){(0,L.Y)(k.eY,function(t){return xe(e,t)},e)}function xe(e,r){Se.experimental(),r||={},r.instance=(0,ye.LA)(8),r.type=R.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:R.f.BA},r.manifest=(0,be.N)(r.manifest),void 0===r.timingMethod||Re.includes(r.timingMethod)||(Se.invalidTimingMethod(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||R.f.BA,"parent.id":r.parent?.id})}
212),Object.entries(r.tags).forEach(([e,t])=>{we.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(Se.disabled),u(r.id)&&u(r.name)||d(()=>Se.invalidTarget(r)),c.forEach(e=>{try{const{name:t,id:n}=e.metadata.target;t===r.name&&n!==r.id&&Se.duplicateName(r),n===r.id&&t!==r.name&&Se.duplicateId(r)}catch(e){}});const f={addPageAction:(t,n={})=>m(ce,[t,{...a,...n},e],r),deregister:()=>{p(),d(Se.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,O.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
212imeToRegister: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,O.t)();f.metadata.events.latestTimestamp=void 0;const a=Te.get(r)||"unknown";(0,A.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 _e extends W{static featureName=Z.T;constructor(e){var t;super(e,Z.T),t=e,(0,L.Y)(k.o5,(e,r)=>ie(e,r,t),t),function(e){(0,L.Y)(k.bt,function(t){e.runtime.onerror=t},e)}(e),function(e){let t=0;(0,L.Y)(k.k6,function(e,r){++t>10||(this.runtime.releaseIds[e.slice(-200)]=(""+r).slice(-200))},e)}(e),Ae(e);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on("internal-error",(t,r)=>{this.abortHandler&&(0,A.p)("ierr",[ee(t),(0,O.t)(),!0,{},e.runtime.isRecording,r],void 0,this.featureName,this.ee)}),g.gm.addEventListener("unhandledrejection",t=>{this.abortHandler&&(0,A.p)("err",[te(t),(0,O.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,A.p)("err",[re(t),(0,O.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(891).then(r.bind(r,9377)))}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var Oe=r(8990);let ke=1;function Le(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===g.gm?0:(0,Oe.I)(e,"nr@id",function(){return ke++})}function Me(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 Pe=r(8139),Ne=r(3434),je=r(5732);const Ie={},Ce=["open","send","setRequestHeader"];function De(e,t){var r=e||w.ee;const n=function(e){return(e||w.ee).get("xhr")}(r);if(void 0===g.gm.XMLHttpRequest)return n;if(Ie[n.debugId]++)return n;Ie[n.debugId]=1,(0,Pe.u)(r,t);var i=(0,Ne.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,je.$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||w.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,je.$5)(t);var o;r.emit(i+"before-start",[e],n),n[w.P]&&n[w.P].dt&&(o=n[w.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})})}
212return 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,A.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=S,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){_(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=Me(i);a&&(n.txSize=a)}this.startTime=(0,O.t)(),this.requestBody=i,this.listener=function(e){try{"abort"!==e.type||s.loadCaptureCalled||(s.params.aborted=!0),("load"
212!==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=""+Le(e)+!!t;this.xhrGuids&&!this.xhrGuids[r]&&(this.xhrGuids[r]=!0,this.totalCbs+=1)}function p(e,t){var r=""+Le(e)+!!t;this.xhrGuids&&this.xhrGuids[r]&&(delete this.xhrGuids[r],this.totalCbs-=1)}function m(){this.endTime=(0,O.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,O.t)()))}function E(e,t){this.xhrCbStart&&r.emit("xhr-cb-time",[(0,O.t)()-this.xhrCbStart,this.onload,t],t)}function R(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 w(e,t){this.params={},this.metrics={},this.startTime=(0,O.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=Me(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,O.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=Me(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 S(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):_(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=Me(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 _(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?Me(e.response):"text"===r||""===r||void 0===r?Me(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,A.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",R),r.on("fetch-start",w),r.on("fn-start",b),r.on("fetch-done",T)}(e,this.ee,this.handler,this.dt),this.importAggregator(e,()=>r.e(891).then(r.bind(r,3845)))}}const it={},st=["pushState","replaceState"];function at(e,t){const r=function(e){return(e||w.ee).get("history")}(e);return!g.RI||it[r.debugId]++||(it[r.debugId]=1,(0,Ne.YM)(r,void 0,t).inPlace(window.history,st,"-")),r}var ot=r(3738);function ct(e){(0,L.Y)(k.BL,function(r=Date.now()){const n=r-g.WN;n<0&&(0,l.R)(62,r),(0,A.p)(q.XG,[k.BL,{time:n}],void 0,t.K7.metrics,e.ee),e.addToTrace({name:k.BL,start:r,origin:"nr"}),(0,A.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,L.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,A.p)("bstApi",[r],void 0,t.K7.sessionTrace,n.ee)},n),ct(e);
212if(!(0,I.V)(e.init))return void this.deregisterDrain();const i=this.ee;let s;at(i,e),this.eventsEE=(0,Pe.u)(i,e),this.eventsEE.on(gt,function(e,t){this.bstStart=(0,O.t)()}),this.eventsEE.on(pt,function(e,r){(0,A.p)("bst",[e[0],r,this.bstStart,(0,O.t)()],void 0,t.K7.sessionTrace,i)}),i.on(mt+lt,function(e){this.time=(0,O.t)(),this.startPath=location.pathname+location.hash}),i.on(mt+ft,function(e){(0,A.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,A.p)(dt,[r],void 0,t.K7.sessionTrace,i)}),s.observe({type:ut,buffered:!0})}catch(e){}this.importAggregator(e,()=>r.e(891).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,L.Y)(k.CH,function(){(0,A.p)(k.CH,[],void 0,t.K7.sessionReplay,n.ee)},n),function(e){(0,L.Y)(k.Tb,function(){(0,A.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,j.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(891).then(r.bind(r,6167)),this),this.ee.on("err",e=>{this.blocked||this.agentRef.runtime.isRecording&&(this.errorNoticed=!0,(0,A.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,j.Aw)(this.agentRef.init)}importRecorder(){return this.recorder?Promise.resolve(this.recorder):(this.#i??=Promise.all([r.e(891),r.e(222)]).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 Rt=r(981);const wt={},Tt=new Set;function St(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 At{constructor(e,t){this.timestamp=(0,O.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 xt 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,L.Y)(k.hG,(e,t)=>ce(e,t,c),c),function(e){(0,L.Y)(k.fF,(t,r)=>ue(t,r,e),e)}(e),ct(e),Ae(e),function(e){(0,L.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(wt[r.debugId]++)return r;wt[r.debugId]=1,(0,V.G)(()=>{const e=(0,O.t)();Tt.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)})});
212class n extends WebSocket{static name=Rt.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 At(e[0],e[1]),this.targets=(0,je.$5)(t),this.addEventListener("open",()=>{this.nrData.openedAt=(0,O.t)(),["protocol","extensions","binaryType"].forEach(e=>{this.nrData[e]=this[e]}),Tt.add(this)}),this.addEventListener("message",e=>{const{type:t,size:r}=St(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,O.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,Tt.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}=St(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,A.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,A.p)("spv",[_t(e),(0,O.t)()],void 0,t.K7.genericEvents,this.ee)}),l.disconnect()},{types:["csp-violation"],buffered:!0});l.observe()}g.gm.addEventListener("securitypolicyviolation",e=>{(0,A.p)("spv",[_t(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,A.p)("ua",[e],void 0,this.featureName,this.ee),!0)),o.qN.forEac
212h(e=>{const t=(0,C.s)(e=>{(0,A.p)("ua",[e],void 0,this.featureName,this.ee)},500,{leading:!0});(0,J.sp)(e,t)}),g.gm.addEventListener("error",()=>{(0,A.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,A.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,A.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,A.p)("browserPerformance.resource",[e],void 0,this.featureName,this.ee)})}).observe({type:"resource",buffered:!0})}}a.some(e=>e)?this.importAggregator(e,()=>r.e(891).then(r.bind(r,8019))):this.deregisterDrain()}}function _t(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 Ot=r(2646);const kt=new Map;function Lt(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||w.ee).get("logger")}(e),o=(0,Ne.YM)(a,void 0,s),c=new Ot.y(w.P);c.level=n.level,c.customAttributes=n.customAttributes,c.autoCaptured=i;const d=t[r]?.[Ne.Jt]||t[r];return kt.set(d,c),o.inPlace(t,[r],"wrap-logger-",()=>kt.get(d),void 0,!0),a}var Mt=r(1910);class Pt extends W{static featureName=se.TZ;constructor(e){var t;super(e,se.TZ),t=e,(0,L.Y)("log",(e,r)=>oe(e,r,t),t),function(e){(0,L.Y)(k.Wb,(t,r,{customAttributes:n={},level:i=se.p_.INFO}={})=>{Lt(e.ee,t,r,{customAttributes:n,level:i},!1,e)},e)}(e),Ae(e);const n=this.ee;["log","error","warn","info","debug","trace"].forEach(t=>{(0,Mt.i)(g.gm.console[t]),Lt(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(891).then(r.bind(r,5288)))}}new F({features:[K,G,vt,Et,nt,Y,_e,xt,Pt],loaderType:"pro"})})()})();</script>
212 213 </head> 214 <body id="" class=" "> 215
215<script> 216 var currentPageNav = ""; 217 </script>
217 218 <noscript> 219 <iframe src="https://www.googletagmanager.com/ns.html?id=GTM-N74L7GH>m_auth=CYkt4R7ZvVvpqpVwuMhNgw>m_preview=env-2>m_cookies_win=x" height="0" width="0" style="display:none;visibility:hidden"></iframe> 220 </noscript> 221 <a name="top"></a> 222<template id="skip-to-content-template"> 223 <a id="skip-to-content" tabindex="0" style="height: 36px; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; font-weight: 600; text-decoration: underline; "> 224 Skip to content 225 </a> 226</template> 227 228 229<div id="header" > 230 <div id="top-bar"> 231 <div class="content"> 232 <div class="lhs-link location-selector-link-wrapper"> 233 <a href="javascript:void(0)" class="location-selector-link"> 234 <span class="icon-location1"></span> 235 <span class="link-text"> 236 Hello! Enter your postcode for delivery time 237 </span> 238 </a> 239 </div> 240 <div class="lhs-link"> 241 <a href="/track-order.ep" data-mh-pe="eventOnClick" data-mh-ec="Header" data-mh-ea="Click"><span data-mh-label>Track My Order</span></a> 242 </div> 243 <div class="lhs-link"> 244 <a href="/helpCentre.ep" data-mh-pe="eventOnClick" data-mh-ec="Header" data-mh-ea="Click"><span data-mh-label>Help Centre</span></a> 245 </div> 246 <div id="fb-like"> 247 <a data-mh-pe="eventOnClick" data-mh-ec="Header" data-mh-ea="Click" data-mh-el="Like" href="//www.facebook.com/pages/Booktopia/91043653859" target="_blank"><img class="lazyload no-loader" src="" data-src="https://www.booktopia.com.au/images/assets/header/facebook-like.png" alt="Likes" width="90" height="20"></a> 248 </div> 249 <div id="links" data-mh-pe="eventOnClick" data-mh-ec="Header" data-mh-ea="Click"> 250 <a href="javascript:void(0)" class="link-notifications" tabindex="0" title="Notifications"> 251 <span class="icon-bell1"></span> 252 <span id="new-notification-badge"></span> 253 <span data-mh-label class="rhs-link-text">Notifications</span> 254 </a> 255 <div class="if-signed-out"> 256 <a href="/view-wishlist-nocache.ep" title="My Wish Lists"><span class="icon-Heart-new"></span> <span data-mh-label class="rhs-link-text">My Wish Lists</span></a> 257 <a href="/manage-account.ep" class="grey-11" title="Login/Join"><span class="icon-user1"></span> <span data-mh-label class="rhs-link-text">Login / Join</span></a> 258 </div> 259 <div class="if-signed-in"> 260 <a href="/view-wishlist-nocache.ep" title="My Wish Lists"><span class="icon-Heart-new"></span> <span data-mh-label class="rhs-link-text">My Wish Lists</span></a> 261 <a href="/manage-account.ep" title="My Account"><span class="icon-user1"></span> <span data-mh-label class="rhs-link-text">My Account</span></a> 262 <a href="/sign-out-customer-session.ep" onclick="updateLocalEmptyCart();resetPostcode();googleSignOut();return true" title="Sign Out"><span class="icon-log-out"></span> <span data-mh-label class="rhs-link-text">Sign Out</span></a> 263 </div> 264 </div> 265 </div> 266 </div> 267 268 <div id="top-notifications-container" data-escape-popup data-popup-initiator=".link-notifications"> 269 <div id="top-notification-scroll" > 270 <div id="top-notification-empty">No new notifications.</div> 271 <template id="top-notification-price-template"> 272 <div id="top-notification-price"> 273 <a href="/view-wishlist-nocache.ep?priceDrop=true" class="top-notification top-notification-link row no-gutters align-items-center">
274 <span class="icon-price-drop col-auto"></span> 275 <p class="col">Items in your wish list have gone down in price.</p> 276 <div class="col-auto"> 277 <span class="notification-button">See All</span> 278 </div> 279 </a> 280 </div> 281 </template> 282 <template id="top-notification-stock-template"> 283 <div id="top-notification-stock"> 284 <a href="/view-wishlist-nocache.ep?backInStock=true" class="top-notification top-notification-link row no-gutters align-items-center"> 285 <span class="icon-back-in-stock col-auto"></span> 286 <p class="col">Items in your wish list are back in stock.</p> 287 <div class="col-auto"> 288 <span class="notification-button">See All</span> 289 </div> 290 </a> 291 </div> 292 </template> 293 </div> 294 </div> <div class="main-content"> 295 <div class="content"> 296 <div id="logo"> 297 <a href="/"><img class="lazyload no-loader" src="" data-src="https://www.booktopia.com.au/images/assets/logos/bkt-logo-new.png" width="200" alt="Booktopia" /></a><br> 298 <a href=" /your-local-bookstore/news18.html "><img id="flag" class="lazyload no-loader" src="" data-src="https://www.booktopia.com.au/images/assets/logos/bkt-tagline-new.png" width="198" alt="Australia's local bookstore"/></a> 299 </div> 300 <div class="content-right-section"> 301 <div class="header-right-section float-right"> 302 <div id="search"> 303 <form id="searchform" action="/search.ep" method="get" name="searchForm" onSubmit="return isSearchPopulated('headerSearch')"> 304 <div class="search-box search"> 305 <input id="header-search-box" type="search" maxlength="255" class="search-text expanded" name="keywords" 306 value="Search Title, Author or ISBN" 307 onblur="if (this.value==='') {this.value='Search Title, Author or ISBN'; this.style.color = '#6C737F'; }" 308 onfocus="if (this.value==='Search Title, Author or ISBN') this.value=''; this.style.color = '#1F2A37';"/> 309 <span class="my-skinnable-select skinned-select"> 310 <select name="productType"> 311 <option value="917504" selected="selected" >Books</option> 312 <option value="917505" >eBooks</option> 313 <option value="917510" >Audiobooks</option> 314 <option value="917507" >Audio CDs</option> 315 <option value="917503" >Stationery</option> 316</select> 317 </span> 318 <span class="icon-arrow-down8"></span> 319 <button id="search-button" type="submit" class="submit float-right row align-items-center" data-skip-mh aria-label="Search"> 320 <span class="icon-global-search font-size-15r mr-2"></span> 321 <span class="search-button-text">Search</span> 322 </button> 323 </div> 324 <template id="recommended-autocomplete-suggestions-template"> 325 <div id="recommended-autocomplete-suggestions" class="autocomplete-suggestions"> 326 <div class="autocomplete-group">Popular Search Terms</div> 327 <div id="search-terms" class="row no-gutters"> 328 329 </div> 330 <div id="product-carousel"> 331 </div> 332 333 </div> 334 </template> 335</form> 336 </div> 337 </div> 338 </div> 339 </div> 340 </div> 341</div> 342 343 <div id="top-nav" data-mh-pe="eventOnClick" data-mh-ec="Header - Nav" data-mh-ea="Click"> 344 <div class="content"> 345 <div class="header-version-b-item dcjq-mega-menu"> 346 <ul class="menu" id="hover-menu-top"> 347 <li><a class="sidenav-menu-switch"><div class="navLink"><i class="icon-menu-new"></i><span>ALL</span></div></a></li> 348 <li id="navlink-books-sub"><a href="/?books"><span class="navLink">BOOKS</span></a></li> 349 <li id="navlink-fiction-sub"> 350 <a href="/books/fiction-books/cF-p1.html"> 351 <span class="navLink">FICTION</span> 352 </a> 353 </li> 354 <li id="navlink-non-fiction-sub"> 355 <a href="/books/non-fiction-books/cN-p1.html"> 356 <span class="navLink">NON-FICTION</span> 357 </a> 358 </li> 359 <li id="navlink-australia"><a href="/books/australian-authors-books/l10-p1.html"><span class="navLink">AUSTRALIAN</span></a></li> 360 <li id="mnu-books-children" class="navlink-kids-sub"><a href="/books/kids-childrens-books/cY-p1.html"><span class="navLink">KIDS</span></a></li> 361 <li id="navlink-schools-sub"><a href="/school-books-textbooks/promo152.html"><span class="navLink">SCHOOL</span></a></li> 362 <li> 363 <a href="/books/text-books/higher-education-vocational-textbooks/cXA-p1.html"> 364 <span class="navLink">ACADEMIC & TEXTBOOKS</span> 365 </a>
366 <div class="sub" data-mh-pe="eventOnClick" data-mh-ec="Header - BOOKS - ACADEMIC" data-mh-ea="Link Click"> 367 <div class="sub-menu-container row no-gutters"> 368 <div class="col sub-menu-content"> 369 <ul class="row"> 370 <li class="col-4" data-skip-mh> 371 <ul> 372 <h4>University</h4> 373 <li><a href="/books/text-books/higher-education-vocational-textbooks/accounting-business-finance-higher-education-textbooks/cXAA-p1.html">Accounting, Business & Finance</a></li> 374 <li><a href="/books/text-books/higher-education-vocational-textbooks/biology-and-sciences-higher-education-textbooks/cXAB-p1.html">Biology & Science</a></li> 375 <li><a href="/books/text-books/higher-education-vocational-textbooks/computing-programming-higher-education-textbooks/cXAC-p1.html">Computing & Programming</a></li> 376 <li><a href="/books/text-books/higher-education-vocational-textbooks/education-higher-education-textbooks/cXAD-p1.html">Education</a></li> 377 <li><a href="/books/text-books/higher-education-vocational-textbooks/engineering-physics-higher-education-textbooks/cXAE-p1.html">Engineering & Physics</a></li> 378 <li><a href="/books/text-books/higher-education-vocational-textbooks/english-literature-higher-education-textbooks/cXAF-p1.html">English & Literature</a></li> 379 <li><a href="/books/text-books/higher-education-vocational-textbooks/environment-planning-higher-education-textbooks/cXAG-p1.html">Environment & Planning</a></li> 380 <li><a href="/books/text-books/higher-education-vocational-textbooks/health-care-higher-education-textbooks/cXAI-p1.html">Health Care</a></li> 381 <li><a href="/books/text-books/higher-education-vocational-textbooks/history-higher-education-textbooks/cXAJ-p1.html">History</a></li> 382 <li><a href="/books/text-books/higher-education-vocational-textbooks/language-higher-education-textbooks/cXAK-p1.html">Language</a></li> 383 </ul> 384 </li> 385 <li class="col-4" data-skip-mh> 386 <ul> 387 <h4> </h4> 388 <li><a href="/books/non-fiction/law/cL-p1.html">Law</a></li> 389 <li><a href="/books/text-books/higher-education-vocational-textbooks/mathematics-statistics-higher-education-textbooks/cXAM-p1.html">Mathematics & Statistics</a></li> 390 <li><a href="/books/text-books/higher-education-vocational-textbooks/media-communication-arts-higher-education-textbooks/cXAO-p1.html">Media, Communication & Arts</a></li> 391 <li><a href="/books/non-fiction/medicine/cM-p1.html">Medicine</a></li> 392 <li><a href="/books/text-books/higher-education-vocational-textbooks/nursing-higher-education-textbooks/cXAP-p1.html">Nursing</a></li> 393 <li><a href="/books/text-books/higher-education-vocational-textbooks/politics-higher-education-textbooks/cXAQ-p1.html">Politics</a></li> 394 <li><a href="/books/text-books/higher-education-vocational-textbooks/psychology-higher-education-textbooks/cXAH-p1.html">Psychology</a></li> 395 <li><a href="/books/text-books/higher-education-vocational-textbooks/social-sciences-higher-education-textbooks/cXAR-p1.html">Social Sciences</a></li> 396 <li><a href="/books/text-books/higher-education-vocational-textbooks/study-skills-for-higher-education/cXAS-p1.html?mlk">Study Skills</a></li> 397 </ul> 398 </li> 399 <li class="col-4" data-skip-mh> 400 <ul> 401 <h4>Vocational</h4> 402 <li><a href="/vocational-trades/series7927.html">Trades</a></li> 403 <li><a href="/vocational-hospitality-tourism/series7931.html">Hospitality & Tourism</a></li> 404 <li><a href="/vocational-business-financial-management/series7929.html">Business, Financial & Management</a></li> 405 <li><a href="/vocational-nursing-health-care/series7928.html">Nursing & Health Care</a></li> 406 <li><a href="/vocational-it-networking-computer-repair/series7930.html">IT, Networking & Computer Repair</a></li> 407 <li><a href="/vocational-education-early-childhood/series7932.html">Education & Early Childhood</a></li> 408 <li><a href="/vocational-social-work-counselling/series7933.html">Social Working & Counselling</a></li> 409 <li><a href="/vocational-design-art-fashion-photography/series7934.html">Design, Art, Fashion & Photography</a></li> 410 </ul> 411 </li> 412 </ul> 413 </div>
414 </div> 415 <div class="row no-gutters sub-menu-more"> 416 <div class="col-12"> 417 <a class="more" href="/books/text-books/higher-education-vocational-textbooks/cXA-p1.html">Explore All Academic ></a> 418 </div> 419 </div> 420 </div> 421 </li> 422 <li > 423 <a href="/?ebooks" onclick="checkLatestKeywords(this, '917505')"> 424 <span class="navLink">EBOOKS</span> 425 </a> 426 <div class="sub" data-mh-pe="eventOnClick" data-mh-ec="Header - EBOOKS" data-mh-ea="Link Click"> 427 <div class="sub-menu-container row no-gutters"> 428 <div class="col sub-menu-content"> 429 <ul class="row"> 430 <li class="col-3" data-skip-mh> 431 <ul> 432 <h4>Fiction</h4> 433 <li><a href="/ebooks/fiction/romance/cFR-p1-e.html">Romance </a></li> 434 <li><a href="/ebooks/fiction/crime-mystery/cFF-p1-e.html">Crime & Mystery</a></li> 435 <li><a href="/ebooks/fiction/erotic-fiction/cFP-p1-e.html">Erotic Fiction</a></li> 436 <li><a href="/ebooks/fiction/fantasy-fiction/cFM-p1-e.html">Fantasy</a></li> 437 <li><a href="/ebooks/fiction/thrillers-suspense/cFH-p1-e.html">Thrillers</a></li> 438 <li><a href="/ebooks/fiction/science-fiction/cFL-p1-e.html">Science Fiction</a></li> 439 </ul> 440 </li> 441 <li class="col-3" data-skip-mh> 442 <ul> 443 <h4>Kids & YA</h4> 444 <li><a href="/ebooks/children-teenagers-young-adults-ya-/children-s-fiction/cYF-p1-e.html">Children's Fiction</a></li> 445 <li><a href="/ebooks/children-teenagers-young-adults-ya-/children-s-fiction/romance-love-stories-for-children-teenagers/cYFM-p1-e.html">Romance & Love Stories</a></li> 446 <li><a href="/ebooks/children-teenagers-young-adults-ya-/picture-books-early-learning/cYB-p1-e.html">Picture Books & Early Learning</a></li> 447 <li><a href="/ebooks/children-teenagers-young-adults-ya-/children-s-non-fiction/cYN-p1-e.html">Children's Non-Fiction</a></li> 448 </ul> 449 </li> 450 <li class="col-3" data-skip-mh> 451 <ul> 452 <h4>Non-Fiction</h4> 453 <li><a href="/ebooks/non-fiction/biographies-true-stories/cB-p1-e.html">Biographies</a></li> 454 <li><a href="/ebooks/non-fiction/mind-body-spirit/cVX-p1-e.html">Mind, Body, Spirit</a></li> 455 <li><a href="/ebooks/non-fiction/business-management/cKJ-p1-e.html">Business & Management</a></li> 456 <li><a href="/ebooks/non-fiction/family-health/cVF-p1-e.html">Family & Health</a></li> 457 <li><a href="/ebooks/non-fiction/gardening/cWM-p1-e.html">Gardening</a></li> 458 <li><a href="/ebooks/non-fiction/history/cHB-p1-e.html">History</a></li> 459 <li><a href="/ebooks/non-fiction/politics-government/cJP-p1-e.html">Politics & Government</a></li> 460 <li><a href="/ebooks/non-fiction/psychology/cJM-p1-e.html">Psychology</a></li> 461 <li><a href="/ebooks/non-fiction/science/cP-p1-e.html">Science</a></li> 462 </ul> 463 </li> 464 <li class="col-3" data-skip-mh> 465 <ul> 466 <h4>Textbooks</h4> 467 <li><a href="/ebooks/non-fiction/education/l101082-p1-e.html">Education</a></li> 468 <li><a href="/ebooks/non-fiction/medicine/l101082-p1-e.html">Medicine</a></li> 469 <li><a href="/ebooks/non-fiction/accounting-finance/l101082-p1-e.html">Accounting & Finance</a></li> 470 <li><a href="/ebooks/non-fiction/law/l101082-p1-e.html">Law</a></li> 471 <li><a href="/ebooks/non-fiction/psychology/l101082-p1-e.html">Psychology</a></li> 472 <li><a href="/ebooks/non-fiction/mathematics/l101082-p1-e.html">Mathematics</a></li> 473 <li><a href="/ebooks/non-fiction/language-linguistics/l101082-p1-e.html">Language & Linguistics</a></li> 474 </ul> 475 </li> 476 </ul> 477 </div> 478 </div>
479 <div class="row no-gutters sub-menu-more"> 480 <div class="col-12"> 481 <a class="more" href="/?ebooks">Explore All eBooks ></a> 482 </div> 483 </div> 484 </div> 485 </li> 486 <li ><a href="/?audiobooks" onclick="checkLatestKeywords(this, '917510')"><span class="navLink">AUDIOBOOKS</span></a></li> 487 <li ><a href="/books/games-and-puzzles/cGMP-p1.html"><span class="navLink">GAMES & PUZZLES</span></a></li> 488 <li ><a href="/?stationery"><span class="navLink">STATIONERY</span></a></li> 489 <li ><a href="/books/gift-ideas/c53-p1.html"><span class="navLink">GIFTS</span></a></li> 490 <li id="navlink-bargain"><a class="alert" href="/books/bargains/c9-p1.html"><span class="navLink">BARGAINS</span></a></li> 491 <li><a href="//www.booktopia.com.au/blog/"><span class="navLink">BLOG</span></a></li> 492 </ul> 493 </div> 494 <ul class="header-version-default-item"> 495 <li id="nav-books" class="selected" ><a href="/?books" onclick="checkLatestKeywords(this, '917504')"><span class="navLink">BOOKS</span></a></li> 496 <li id="nav-ebooks" ><a href="/?ebooks" onclick="checkLatestKeywords(this, '917505')"><span class="navLink">EBOOKS</span></a></li> 497 <li id="nav-audio-books" ><a href="/?audiobooks" onclick="checkLatestKeywords(this, '917510')"><span class="navLink">AUDIOBOOKS</span></a></li> 498 <li id="nav-games-toys-puzzles" ><a href="/books/games-and-puzzles/cGMP-p1.html"><span class="navLink">GAMES & PUZZLES</span></a></li> 499 <li id="nav-stat" ><a href="/?stationery"><span class="navLink">STATIONERY</span></a></li> 500 <li id="nav-gifts" ><a href="/books/gift-ideas/c53-p1.html"><span class="navLink">GIFT IDEAS</span></a></li> 501 <li id="nav-help"><a href="//www.booktopia.com.au/blog/"><span class="navLink">BLOG</span></a></li> 502 </ul> 503 504<a id="shopping-cart-summary" 505 href="/view-cart.ep"> 506 <div class="numItems"> 507 <span id="numItemsQty"></span> <span id="numItemsUnits"></span> 508 </div> 509 <div class="icon-shopping-cart"></div> 510 <div class="checkout-text">CHECKOUT</div> 511 <div class="total"> 512 </div> 513</a> 514 515<form name="state" style="display:none"> 516 <input name="pageIsDirty" type="text" value="false"/> 517 <input name="stateChangedAt" type="text" value="0"/> 518 <input name="shoppingCartQty" type="text" value=""/> 519 </form> 520 521 <div class="clearfix"></div> 522 </div> 523 </div> 524 <div id="sub-nav" class=" header-version-default-item"> 525 <div class="content"> 526 <ul class="dcjq-mega-menu"><ul id="hover-menu-top" class="menu" data-mh-pe="eventOnClick" data-mh-ec="Header - BOOKS" data-mh-ea="Click"> 527 <li id="mnu-books-fiction"><a href="/books/fiction-books/cF-p1.html">FICTION</a> 528 <div class="sub" id="fiction-sub" data-mh-pe="eventOnClick" data-mh-ec="Header - BOOKS - FICTION" data-mh-ea="Link Click"> 529 <div class="sub-menu-container row no-gutters"> 530 <div class="col-auto sub-menu-browse"> 531 <ul><h4>Browse Fiction</h4> 532 <li><a href="/books/fiction/cF-p1.html?list=2"><span class="icon-New-Releases"></span>New Releases</a></li> 533 <li><a href="/books/fiction/cF-p1.html?sorter=bestsellers-dsc"><span class="icon-Bestselling"></span>Bestselling</a></li> 534 <li><a href="/books/bargains/fiction-bargains/c9A-p1.html"><span class="icon-Bargins"></span>Bargains</a></li> 535 <li><a href="/books/fiction/l20-p1.html?cID=F"><span class="icon-Signed-copies"></span>Signed Copies</a></li> 536 </ul> 537 </div> 538 <div class="col sub-menu-content"> 539 <ul class="row"> 540 <li class="col-3" data-skip-mh> 541 <ul> 542 <h4>Popular Subjects</h4> 543 <li><a href="/books/fiction/cF-p1.html?list=10">Australian Fiction</a></li> 544 <li><a href="/books/fiction/classic-fiction/cFC-p1.html">Classic Fiction</a></li> 545 <li><a href="/books/fiction-books/crime-mystery/cFF-p1.html">Crime & Mystery</a></li> 546 <li><a href="/books/fiction/erotic-fiction/cFP-p1.html">Erotic Fiction</a></li> 547 <li><a href="/books/fiction/fantasy-fiction/cFM-p1.html">Fantasy</a></li> 548 <li><a href="/books/fiction/graphic-novels/cFX-p1.html">Graphic Novels & Manga</a></li> 549 <li><a href="/books/fiction/historical-fiction/cFV-p1.html">Historical</a></li> 550 <li><a href="/books/fiction/modern-contemporary-fiction/cFA-p1.html">Modern & Contemporary</a></li> 551 </ul> 552 </li> 553 <li class="col-3" data-skip-mh> 554 <ul> 555 <h4> </h4> 556 <li><a href="/books/non-fiction/literature-poetry-plays/poetry/cDC-p1.html">Poetry</a></li> 557 <li><a href="/books/fiction/romance/cFR-p1.html">Romance</a></li> 558 <li><a href="/books/fiction/science-fiction/cFL-p1.html">Science Fiction</a></li> 559 <li><a href="/books/fiction/thrillers-suspense/cFH-p1.html">Thrillers & Mystery</a></li> 560 <li><a href="/books/kids-childrens-books/children-s-fiction/young-adult-ya-fiction/cYFY-p1.html">Young Adult</a></li> 561 </ul> 562 </li> 563 <li class="col-3" data-skip-mh> 564 <ul> 565 <h4>Popular Authors</h4> 566 <li><a href="/margaret-atwood/author311.html">Margaret Atwood</a></li> 567 <li><a href="/trent-dalton/author1259.html">Trent Dalton</a></li> 568 <li><a href="/jane-harper/author144.html">Jane Harper</a></li> 569 <li><a href="/stephen-king/author225.html">Stephen King</a></li> 570 <li><a href="/dervla-mctiernan/author1258.html">Dervla McTiernan</a></li> 571 <li><a href="/liane-moriarty/author934.html">Liane Moriarty</a></li> 572 <li><a href="/matthew-reilly/author3.html">Matthew Reilly</a></li> 573 <li><a href="/sally-rooney/author1154.html">Sally Rooney</a></li> 574 </ul> 575 </li> 576 <li class="col-3" data-skip-mh> 577 <ul> 578 <h4>Popular Series</h4> 579 <li><a href="/the-after-series/series4691.html">After</a></li> 580 <li><a href="/a-game-of-thrones-a-song-of-ice-and-fire-paperbacks-by-george-r-r-martin/series533.html">A Game of Thrones</a></li> 581 <li><a href="/jack-reacher-by-lee-child/series92.html">Jack Reacher</a></li> 582 <li><a href="/the-jack-west-novels-by-matthew-reilly/series6.html">Jack West</a></li> 583 <li><a href="/the-seven-sisters/series5946.html">The Seven Sisters</a></li> 584 <li><a href="/outlander-paperback-novels/series4849.html">Outlander</a></li> 585 <li><a href="/the-witcher-new-paperback-editions/series9231.html">The Witcher</a></li> 586 <li><a href="/thomas-cromwell-trilogy/series6461.html">Wolf Hall</a></li> 587 </ul> 588 </li> 589 </ul> 590 </div> 591 </div>
592 <div class="row no-gutters sub-menu-more"> 593 <ul class="col-12"> 594 <h4>More:</h4> 595 <li><a href="/award-winning-reads/promo2921.html">Award Winning Reads</a></li> 596 <li><a href="https://www.booktopia.com.au/blog/category/reviews/">Reviews and Staff Picks</a></li> 597 <li><a href="https://www.booktopia.com.au/blog/category/interviews/">Author Interviews</a></li> 598 <li><a href="https://www.booktopia.com.au/blog/podcasts/">Podcasts</a></li> 599 <a class="more" href="/books/fiction-books/cF-p1.html">Explore All Fiction ></a> 600 </ul> 601 </div> 602 </div> 603 </li> 604 605 <li id="mnu-books-nonfiction"><a href="/books/non-fiction-books/cN-p1.html">NON-FICTION</a> 606 <div class="sub" id="non-fiction-sub" data-mh-pe="eventOnClick" data-mh-ec="Header - BOOKS - NON-FICTION" data-mh-ea="Link Click"> 607 <div class="sub-menu-container row no-gutters"> 608 <div class="col-auto sub-menu-browse"> 609 <ul><h4>Browse Non-Fiction</h4> 610 <li><a href="/books/non-fiction/cN-p1.html?sorter=bestsellers-dsc"><span class="icon-Bestselling"></span>Bestselling</a></li> 611 <li><a href="/books/bargains/non-fiction-bargains/c9B-p1.html"><span class="icon-Bargins"></span>Bargains</a></li> 612 <li><a href="/books/non-fiction/l20-p1.html?cID=N"><span class="icon-Signed-copies"></span>Signed Copies</a></li> 613 </ul> 614 </div> 615 <div class="col sub-menu-content"> 616 <ul class="row"> 617 <li class="col-3" data-skip-mh> 618 <ul> 619 <h4>Popular Subjects</h4> 620 <li><a href="/books/non-fiction/animals-nature/cWN-p1.html">Animals & Nature</a></li> 621 <li><a href="/books/non-fiction/arts-entertainment/cA-p1.html">Arts & Entertainment</a></li> 622 <li><a href="/books/non-fiction/biographies-true-stories/cB-p1.html">Biographies & True Stories</a></li> 623 <li><a href="/books/non-fiction/business-management/cKJ-p1.html">Business & Management</a></li> 624 <li><a href="/books/non-fiction/comedy-humour/cWH-p1.html">Comedy & Humour</a></li> 625 <li><a href="/books/non-fiction/computing-i-t-/cU-p1.html">Computing & IT</a></li> 626 <li><a href="/books/non-fiction/cooking-food-drink/cWB-p1.html">Cooking, Food & Drink</a></li> 627 <li><a href="/books/non-fiction/crafts-handiwork/cWF-p1.html">Crafts & Handiwork</a></li> 628 <li><a href="/books/non-fiction/family-health/cVF-p1.html">Family & Health</a></li> 629 <li><a href="/books/non-fiction/lifestyle-fashion/fashion-style-guides/cWJF-p1.html">Fashion & Style Guides</a></li> 630 <li><a href="/books/non-fiction/family-health/fitness-diet/cVFM-p1.html">Fitness & Diet</a></li> 631 <li><a href="/books/non-fiction/gardening/cWM-p1.html">Gardening</a></li> 632 <li><a href="/books/non-fiction/self-help-personal-development/green-lifestyle-self-sufficiency/cVSZ-p1.html">Green Lifestyle & Self-Sufficiency</a></li> 633 <li><a href="/books/non-fiction/history/cHB-p1.html">History</a></li> 634 <li><a href="/books/non-fiction/home-house-maintenance/cWK-p1.html">House & Home</a></li> 635 </ul> 636 </li> 637 <li class="col-3" data-skip-mh> 638 <ul> 639 <h4> </h4> 640 <li><a href="/books/non-fiction/language-linguistics/cC-p1.html">Language & Linguistics</a></li> 641 <li><a href="/books/non-fiction/mind-body-spirit/cVX-p1.html">Mind, Body, Spirit</a></li> 642 <li><a href="/books/non-fiction/politics-government/cJP-p1.html">Politics & Government</a></li> 643 <li><a href="/books/non-fiction/psychology/cJM-p1.html">Popular Psychology</a></li> 644 <li><a href="/books/non-fiction/religion-beliefs/cHR-p1.html">Religion & Beliefs</a></li> 645 <li><a href="/books/non-fiction/science/cP-p1.html">Science</a></li> 646 <li><a href="/books/non-fiction/self-help-personal-development/cVS-p1.html">Self Help & Personal Development</a></li> 647 <li><a href="/books/non-fiction/society-culture/cJF-p1.html">Society & Culture</a></li> 648 <li><a href="/books/non-fiction/sports-recreation/cWS-p1.html">Sport & Recreation</a></li> 649 <li><a href="/books/non-fiction/transportation/cWG-p1.html">Transportation</a></li> 650 <li><a href="/books/non-fiction/travel-holidays/cWT-p1.html">Travel & Holidays</a></li> 651 </ul> 652 </li> 653 <li class="col-3" data-skip-mh> 654 <ul> 655 <h4>Biographies & True Stories</h4> 656 <li><a href="/books/non-fiction/biographies-true-stories/biographies/arts-entertainment-biographies/cBGF-p1.html">Arts & Entertainment Biographies</a></li> 657 <li><a href="/books/non-fiction/biographies-true-stories/biographies/historical-biographies/cBGH-p1.html">Historical Biographies</a></li> 658 <li><a href="/books/non-fiction/biographies-true-stories/biographies/sport-biographies/cBGS-p1.html">Sport Biographies</a></li> 659 <li><a href="/books/non-fiction/travel-holidays/travel-writing/cWTL-p1.html">Travel Writing</a></li> 660 <li><a href="/books/non-fiction/biographies-true-stories/true-stories/true-crime/cBTC-p1.html">True Crime</a></li> 661 <li><a href="/books/non-fiction/biographies-true-stories/true-stories/true-stories-of-heroism/cBTP-p1.html">True Stories of Heroism</a></li> 662 <h4>Cooking, Food & Drink</h4> 663 <li><a href="/books/non-fiction/cooking-food-drink/how-to-cook-recipe-books/baking-cakes-icing-sugarcraft/cWBVS-p1.html">Baking & Desserts</a></li> 664 <li><a href="/books/non-fiction/cooking-food-drink/cooking-for-with-children/cWBQ-p1.html">Cooking for & with Children</a></li> 665 <li><a href="/books/non-fiction/cooking-food-drink/health-wholefood-cookery/cWBH-p1.html">Health & Wholefood Cookery</a></li> 666 <li><a href="/books/non-fiction/cooking-food-drink/national-regional-cuisine/cWBN-p1.html">National & Regional Cuisine</a></li> 667 <li><a href="/books/non-fiction/cooking-food-drink/tv-celebrity-chef-cookbooks/cWBB-p1.html">TV & Celebrity Chefs</a></li> 668 <li><a href="/books/non-fiction/cooking-food-drink/vegetarian-cookery/cWBJ-p1.html">Vegetarian Cookery</a></li> 669 </ul> 670 </li> 671 <li class="col-3" data-skip-mh> 672 <ul> 673 <h4>Self Help & Personal Development</h4> 674 <li><a href="/books/non-fiction/self-help-personal-development/advice-on-careers-achieving-success/cVSC-p1.html">Advice on Careers & Success</a></li> 675 <li><a href="/books/non-fiction/family-health/advice-on-parenting/cVFX-p1.html">Advice on Parenting</a></li> 676 <li><a href="/books/non-fiction/family-health/cVF-p1.html">Family, Health & Relationships</a></li> 677 <li><a href="/books/non-fiction/family-health/fitness-diet/cVFM-p1.html">Fitness & Diet</a></li> 678 <li><a href="/books/non-fiction/mind-body-spirit/cVX-p1.html">Mind, Body, Spirit</a></li> 679 <li><a href="/books/non-fiction/psychology/cJM-p1.html">Popular Psychology</a></li> 680 <h4>Professional</h4> 681 <li><a href="/books/non-fiction/business-management/cKJ-p1.html">Business</a></li> 682 <li><a href="/books/non-fiction/law/cL-p1.html">Law</a></li> 683 <li><a href="/books/non-fiction/medicine/cM-p1.html">Medicine</a></li> 684 </ul> 685 </li> 686 </ul> 687 </div> 688 </div>
689 <div class="row no-gutters sub-menu-more"> 690 <ul class="col-12"> 691 <h4>More:</h4> 692 <li><a href="/award-winning-reads/promo2921.html">Award Winning Reads</a></li> 693 <li><a href="https://www.booktopia.com.au/blog/category/reviews/">Reviews and Staff Picks</a></li> 694 <li><a href="https://www.booktopia.com.au/blog/category/interviews/">Author Interviews</a></li> 695 <li><a href="https://www.booktopia.com.au/blog/podcasts/">Podcasts</a></li> 696 <a class="more" href="/books/non-fiction-books/cN-p1.html">Explore All Non-Fiction ></a> 697 </ul> 698 </div> 699 </div> 700 </li> 701 702 <li id="mnu-books-children"><a href="/books/kids-childrens-books/cY-p1.html">KIDS & YA</a> 703 <div class="sub" id="kids-sub" data-mh-pe="eventOnClick" data-mh-ec="Header - BOOKS - CHILDREN" data-mh-ea="Link Click"> 704 <div class="sub-menu-container row no-gutters"> 705 <div class="col-auto sub-menu-browse"> 706 <ul><h4>Browse Kids & YA</h4> 707 <li><a href="/books/kids-childrens-books/cY-p1.html?list=2"><span class="icon-New-Releases"></span>New Releases</a></li> 708 <li><a href="/books/kids-childrens-books/cY-p1.html?sorter=bestsellers-dsc"><span class="icon-Bestselling"></span>Bestselling</a></li> 709 <li><a href="/books/bargains/kids-and-teens-bargains/c9C-p1.html"><span class="icon-Bargins"></span>Bargains</a></li> 710 <li><a href="/books/kids-childrens-books/l20-p1.html?cID=Y"><span class="icon-Signed-copies"></span>Signed Copies</a></li> 711 </ul> 712 </div> 713 <div class="col sub-menu-content"> 714 <ul class="row"> 715 <li class="col-3" data-skip-mh> 716 <ul id="browse-age"> 717 <h4>Browse by Age</h4> 718 <li><a class="age-under-3" href="/books/kids-childrens-books/cY-p1.html?ageFilter=age-between-0-and-3&src=classic"> 719 <svg viewBox="0 0 170 170" xmlns="http://www.w3.org/2000/svg"> 720 <path d="M44,-13.4C52.7,12.7,52.7,42.6,34.5,58.4C16.3,74.2,-20,75.9,-42.6,59.3C-65.3,42.7,-74.2,7.8,-64.8,-19.1C-55.4,-46.1,-27.7,-65.2,-5.1,-63.5C17.6,-61.9,35.2,-39.5,44,-13.4Z" transform="translate(100 100)" /> 721 </svg><span>Under 3</span></a></li> 722 <li><a class="age-preschool" href="/books/kids-childrens-books/cY-p1.html?ageFilter=age-between-3-and-6&src=classic"> 723 <svg viewBox="0 0 170 170" xmlns="http://www.w3.org/2000/svg"> 724 <path d="M69.7,-18.2C79.4,7.3,68.9,43.8,47.9,57C26.9,70.1,-4.6,59.9,-29.3,41.6C-54.1,23.3,-72.1,-3,-66.1,-23.4C-60.1,-43.8,-30,-58.3,0,-58.3C30,-58.3,59.9,-43.8,69.7,-18.2Z" transform="translate(100 100)" /> 725 </svg><span>Pre-School (3-6)</span></a></li> 726 <li><a class="age-school" href="/books/kids-childrens-books/cY-p1.html?ageFilter=age-between-6-and-9&src=classic"> 727 <svg viewBox="0 0 160 160" xmlns="http://www.w3.org/2000/svg"> 728 <path d="M65.2,-15.3C73.6,4.7,62.1,37.1,40.1,52.5C18,67.9,-14.5,66.3,-36.8,50.2C-59.1,34.1,-71.3,3.5,-63.5,-15.7C-55.7,-34.9,-27.8,-42.8,0.3,-42.9C28.4,-43,56.8,-35.3,65.2,-15.3Z" transform="translate(100 80)" /> 729 </svg><span>School Age (6-9)</span></a></li> 730 <li><a class="age-preteen" href="/books/kids-childrens-books/cY-p1.html?ageFilter=age-between-9-and-12&src=classic"> 731 <svg viewBox="0 0 170 170" xmlns="http://www.w3.org/2000/svg"> 732 <path d="M60.4,-16.6C69.6,8.6,62.3,42.1,41.9,56.7C21.5,71.2,-11.9,66.8,-35.2,49.6C-58.6,32.4,-71.8,2.4,-64.2,-20.6C-56.7,-43.6,-28.3,-59.6,-1.3,-59.1C25.6,-58.7,51.3,-41.8,60.4,-16.6Z" transform="translate(100 90)" /> 733 </svg><span>Pre-Teen (9-12)</span></a></li> 734 <li><a class="age-teen" href="/books/kids-childrens-books/cY-p1.html?ageFilter=age-between-12-and-15&src=classic"> 735 <svg viewBox="0 0 180 180" xmlns="http://www.w3.org/2000/svg"> 736 <path d="M70,-27.7C76.8,-2.1,58.5,26.6,34.8,42.6C11.1,58.6,-18.1,61.8,-33.1,49.9C-48.1,37.9,-48.9,10.9,-41,-16.3C-33.2,-43.4,-16.6,-70.7,7.5,-73.1C31.7,-75.6,63.3,-53.2,70,-27.7Z" transform="translate(90 100)" /> 737 </svg><span>Teen (12-15)</span></a></li> 738 <li><a class="age-young-adult" href="/books/kids-childrens-books/children-s-fiction/young-adult-ya-fiction/cYFY-p1.html"> 739 <svg viewBox="0 0 190 190" xmlns="http://www.w3.org/2000/svg"> 740 <path d="M67.5,-22C76.6,6.2,65.7,40.8,43.1,56.5C20.4,72.3,-13.9,69.3,-37.9,51.9C-62,34.5,-75.9,2.7,-67.8,-24C-59.8,-50.7,-29.9,-72.3,-0.4,-72.1C29.2,-72,58.3,-50.2,67.5,-22Z" transform="translate(100 100)" /> 741 </svg><span>Young Adult (16+)</span></a></li> 742 </ul> 743 </li> 744 <li class="col-3" data-skip-mh> 745 <ul> 746 <h4>Popular Authors</h4> 747 <li><a href="/aaron-blabey/author971.html">Aaron Blabey</a></li> 748 <li><a href="/anh-do/author952.html">Anh Do</a></li> 749 <li><a href="/j-k-rowling/author107.html">J.K. Rowling</a></li> 750 <li><a href="/emily-rodda/author256.html">Emily Rodda</a></li> 751 <li><a href="/rick-riordan/author33.html">Rick Riordan</a></li> 752 <li><a href="/mem-fox/author415.html">Mem Fox</a></li> 753 <li><a href="/search.ep?author=David%20Walliams">David Walliams</a></li> 754 <li><a href="/cassandra-clare/author183.html">Cassandra Clare</a></li> 755 </ul> 756 </li> 757 <li class="col-3" data-skip-mh> 758 <ul> 759 <h4>Popular Series</h4> 760 <li>
760<a href="/harry-potter-at-booktopia/promo842.html">Harry Potter</a></li> 761 <li><a href="/search.ep?author=Bluey">Bluey</a></li> 762 <li><a href="/the-treehouse-series-by-andy-griffiths/series2785.html">The Treehouse Series</a></li> 763 <li><a href="/the-nevermoor-series-paperback-editions/series671.html">Nevermoor</a></li> 764 <li><a href="/dog-man-by-dav-pilkey/series5619.html">Dog Man</a></li> 765 <li><a href="/complete-billie-b-brown-series/series9360.html">Billie B Brown</a></li> 766 <li><a href="/books/fun-for-kids/l100430-p1.html">Fun for Kids</a></li> 767 </ul> 768 </li> 769 <li class="col-3" data-skip-mh> 770 <ul> 771 <h4>Education</h4> 772 <li><a href="/school-books-textbooks/promo152.html">Education Central</a></li> 773 <li><a href="/school-books-textbooks/promo152.html#pre-school">Pre School</a></li> 774 <li><a href="/school-books-textbooks/promo152.html#primary">Primary School</a></li> 775 <li><a href="/school-books-textbooks/promo152.html#secondary">Secondary School</a></li> 776 </ul> 777 </li> 778 </ul> 779 </div> 780 </div>
781 <div class="row no-gutters sub-menu-more"> 782 <ul class="col-12"> 783 <h4>More:</h4> 784 <li><a href="/children-s-book-council-of-australia-awards/promo2003.html">CBCA Awards</a></li> 785 <li><a href="https://www.booktopia.com.au/blog/category/reviews/">Reviews and Staff Picks</a></li> 786 <li><a href="https://www.booktopia.com.au/blog/category/interviews/">Author Interviews</a></li> 787 <li><a href="https://www.booktopia.com.au/blog/podcasts/">Podcasts</a></li> 788 <a class="more" href="/books/kids-childrens-books/cY-p1.html">Explore All Kids & YA Books ></a> 789 </ul> 790 </div> 791 </div> 792 </li> 793 <li id="mnu-books-australian"><a href="/books/australian-authors-books/l10-p1.html">AUSTRALIAN</a></li> 794 <li id="mnu-books-schools"><a href="/school-books-textbooks/promo152.html">EDUCATION</a> 795 <div class="sub" id="schools-sub" data-mh-pe="eventOnClick" data-mh-ec="Header - BOOKS - EDUCATION" data-mh-ea="Link Click"> 796 <div class="sub-menu-container row no-gutters"> 797 <div class="col sub-menu-content"> 798 <ul class="row"> 799 <li class="col-3" data-skip-mh> 800 <ul> 801 <h4>Pre-School / Kindergarten</h4> 802 <li><a href="/books/text-books/pre-school-day-care/cXM-p1.html">Pre-School & Day-Care</a></li> 803 <li><a href="/starting-school/series3460.html?sorter=sortorder-en-dsc">Starting School </a></li> 804 <li><a href="/books/text-books/pre-school-day-care/cXM-p1.html">Early Learning</a></li> 805 <li><a href="/abc-reading-eggs-level-1-starting-out/series3784.html">ABC Reading Eggs</a></li> 806 <li><a href="/books/our-picks-for-babies-toddlers-ages-0-3/l100148-p1.html">Picks for Toddlers</a></li> 807 <li><a href="/books/our-picks-for-pre-school-ages-3-6/l100149-p1.html">Picks for Pre-school</a></li> 808 <li><a href="/picture-books-to-help-put-children-to-sleep/series6867.html">Sleeping Easy</a></li> 809 <li><a href="/managing-manners/series6868.html">Managing Manners</a></li> 810 <li><a href="/books/big-picture-books-editions-for-classroom-use/l103-p1.html">Big Picture Books</a></li> 811 <li><a href="/understanding-emotions/series6869.html">Understanding Emotions</a></li> 812 </ul> 813 </li> 814 <li class="col-3" data-skip-mh> 815 <ul> 816 <h4>Primary </h4> 817 <li><a href="/books/text-books/primary-top-sellers/cXG-p1.html">Bestselling Primary Texts</a></li> 818 <li><a href="/excel-guides-for-primary-school/series7903.html">Excel Guides for Primary</a></li> 819 <li><a href="/all-about-sport/series6877.html">All About Sport</a></li> 820 <li><a href="/books/text-books/primary-top-sellers/reading/cXGC-p1.html">Reading</a></li> 821 <li><a href="/books/text-books/primary-top-sellers/maths-reference-for-primary-school/cXGD-p1.html">Maths</a></li> 822 <li><a href="/books/text-books/primary-top-sellers/references-and-resources/cXGR-p1.html">Primary Reference</a></li> 823 <li><a href="/children-s-book-council-of-australia-awards/promo2003.html">CBCA Books</a></li> 824 </ul> 825 </li> 826 <li class="col-3" data-skip-mh> 827 <ul> 828 <h4>Secondary</h4> 829 <li><a href="/books/text-books/secondary-top-sellers/cXE-p1.html">Bestselling Secondary Texts</a></li> 830 <li><a href="/books/text-books/secondary-top-sellers/accounting-business-legal/cXEE-p1.html">Accounting Business & Legal</a></li> 831 <li><a href="/books/text-books/secondary-top-sellers/media-arts-religion/cXE
831H-p1.html">Media, Arts & Religion</a></li> 832 <li><a href="/books/text-books/secondary-top-sellers/reference-study-guides/cXED-p1.html">Reference & Study Guides</a></li> 833 <li><a href="/books/guides-to-the-school-certificates/l100321-p1.html">Guides to the School Certificates</a></li> 834 <li><a href="/books/text-books/secondary-top-sellers/biology-science/cXEF-p1.html">Biology & Science</a></li> 835 <li><a href="/books/text-books/secondary-top-sellers/english-literature-for-secondary-school/cXEA-p1.html">English & Literature</a></li> 836 <li><a href="/books/text-books/secondary-top-sellers/history-textbooks-for-secondary-school/cXEB-p1.html">History</a></li> 837 <li><a href="/books/text-books/secondary-top-sellers/language-reference-for-secondary-school/cXEC-p1.html">Languages</a></li> 838 <li><a href="/books/text-books/secondary-top-sellers/maths-reference-for-secondary-school/cXEG-p1.html">Maths</a></li> 839 </ul> 840 </li> 841 <li class="col-3" data-skip-mh> 842 <ul> 843 <h4> </h4> 844 <li><a href="/books/non-fiction-books/literature-poetry-plays/poetry/cDC-p1.html">Poetry</a></li> 845 <li><a href="/books/non-fiction-books/literature-poetry-plays/plays/cDD-p1.html">Plays</a></li> 846 <li><a href="/books/fiction-books/classic-fiction/cFC-p1.html">Classic Fiction</a></li> 847 <h4>Guides and Resources</h4> 848 <li><a href="/books/non-fiction-books/education/schools/naplan/cJNLN-p1.html?suggested=L">NAPLAN</a></li> 849 <li><a href="/books/non-fiction-books/education/schools/anti-bullying-reading-list/cJNLI-p1.html">Anti-Bullying Books</a></li> 850 <li><a href="/empowering-girls/series6866.html">Empowering Girls</a></li> 851 <li><a href="/introducing-aboriginal-torres-strait-islander-culture-to-children/series6878.html">Introducing Indigenous Culture</a></li> 852 <li><a href="/oxford-primary-school-dictionaries-thesauri/series7884.html">Oxford Dictionaries</a></li> 853 </ul> 854 </li> 855 </ul> 856 </div> 857 <div class="col-auto pl-4"> 858 <a href="/school-books-textbooks/promo152.html"><img class="lazyload" src="https://www.booktopia.com.au/images/loading-cover-150.gif" data-src="https://www.booktopia.com.au/images/navigation/education.jpg" alt="Education Central" width="172" height="418"></a> 859 </div> 860 </div>
861 <div class="row no-gutters sub-menu-more"> 862 <div class="col-12"> 863 <a class="more" href="/school-books-textbooks/promo152.html">Explore All Education ></a> 864 </div> 865 </div> 866 </div> 867 </li> 868 <li id="mnu-books-uni"><a href="/ebooks/etextbooks/l101082-p1-e.html">DIGITAL TEXTBOOKS</a></li> <li id="mnu-books-aca"><a href="/books/text-books/higher-education-vocational-textbooks/cXA-p1.html">ACADEMIC</a> 869 <div class="sub" data-mh-pe="eventOnClick" data-mh-ec="Header - BOOKS - ACADEMIC" data-mh-ea="Link Click"> 870 <div class="sub-menu-container row no-gutters"> 871 <div class="col sub-menu-content"> 872 <ul class="row"> 873 <li class="col-3" data-skip-mh> 874 <ul> 875 <h4>University</h4> 876 <li><a href="/books/text-books/higher-education-vocational-textbooks/accounting-business-finance-higher-education-textbooks/cXAA-p1.html">Accounting, Business & Finance</a></li> 877 <li><a href="/books/text-books/higher-education-vocational-textbooks/biology-and-sciences-higher-education-textbooks/cXAB-p1.html">Biology and Sciences</a></li> 878 <li><a href="/books/text-books/higher-education-vocational-textbooks/computing-programming-higher-education-textbooks/cXAC-p1.html">Computing & Programming</a></li> 879 <li><a href="/books/text-books/higher-education-vocational-textbooks/education-higher-education-textbooks/cXAD-p1.html">Education</a></li> 880 <li><a href="/books/text-books/higher-education-vocational-textbooks/engineering-physics-higher-education-textbooks/cXAE-p1.html">Engineering & Physics</a></li> 881 <li><a href="/books/text-books/higher-education-vocational-textbooks/english-literature-higher-education-textbooks/cXAF-p1.html">English & Literature</a></li> 882 <li><a href="/books/text-books/higher-education-vocational-textbooks/environment-planning-higher-education-textbooks/cXAG-p1.html">Environment & Planning</a></li> 883 <li><a href="/books/text-books/higher-education-vocational-textbooks/health-care-higher-education-textbooks/cXAI-p1.html">Health Care</a></li> 884 </ul> 885 </li> 886 <li class="col-3" data-skip-mh> 887 <ul> 888 <h4> </h4> 889 <li><a href="/books/text-books/higher-education-vocational-textbooks/history-higher-education-textbooks/cXAJ-p1.html">History</a></li> 890 <li><a href="/books/text-books/higher-education-vocational-textbooks/language-higher-education-textbooks/cXAK-p1.html">Language</a></li> 891 <li><a href="/books/non-fiction/law/cL-p1.html">Law</a></li> 892 <li><a href="/books/text-books/higher-education-vocational-textbooks/mathematics-statistics-higher-education-textbooks/cXAM-p1.html">Mathematics & Statistics</a></li> 893 <li><a href="/books/text-books/higher-education-vocational-textbooks/media-communication-arts-higher-education-textbooks/cXAO-p1.html">Media, Communication & Arts</a></li> 894 <li><a href="/books/non-fiction/medicine/cM-p1.html">Medicine</a></li> 895 <li><a href="/books/text-books/higher-education-vocational-textbooks/nursing-higher-education-textbooks/cXAP-p1.html">Nursing</a></li> 896 <li><a href="/books/text-books/higher-education-vocational-textbooks/politics-higher-education-textbooks/cXAQ-p1.html">Politics</a></li> 897 </ul> 898 </li> 899 <li class="col-3" data-skip-mh> 900 <ul> 901 <h4> </h4> 902 <li><a href="/books/text-books/higher-education-vocational-textbooks/psychology-higher-education-textbooks/cXAH-p1.html">Psychology</a></li> 903 <li><a href="/books/text-books/higher-education-vocational-textbooks/social-sciences-higher-education-textbooks/cXAR-p1.html">Social Sciences</a></li> 904 <li><a href="/books/text-books/higher-education-vocational-textbooks/study-skills-for-higher-education/cXAS-p1.html?mlk">Study Skills</a></li> 905 </ul> 906 </li> 907 <li class="col-3" data-skip-mh> 908 <ul> 909 <h4>Vocational</h4> 910 <li><a href="/vocational-trades/series7927.html">Trades</a></li> 911 <li><a href="/vocational-hospitality-tourism/series7931.html">Hospitality & Tourism</a></li> 912 <li><a href="/vocational-business-financial-management/series7929.html">Business, Financial & Management</a></li> 913 <li><a href="/vocational-nursing-health-care/series7928.html">Nursing & Health Care</a></li> 914 <li><a href="/vocational-it-networking-computer-repair/series7930.html">IT, Networking & Computer Repair</a></li> 915 <li>
915<a href="/vocational-education-early-childhood/series7932.html">Education & Early Childhood</a></li> 916 <li><a href="/vocational-social-work-counselling/series7933.html">Social Working & Counselling</a></li> 917 <li><a href="/vocational-design-art-fashion-photography/series7934.html">Design, Art, Fashion & Photography</a></li> 918 </ul> 919 </li> 920 </ul> 921 </div> 922 </div> 923 <div class="row no-gutters sub-menu-more"> 924 <div class="col-12"> 925 <a class="more" href="/books/text-books/higher-education-vocational-textbooks/cXA-p1.html">Explore All Academic ></a> 926 </div> 927 </div> 928 </div> 929 </li> 930 <li id="mnu-books-bargains"><a class="alert" href="/books/bargains/c9-p1.html">BARGAINS</a></li> 931 <li id="mnu-books-gc"><a href="/gift-certificates/cGC-p1.html">GIFT CERTIFICATES</a></li> 932</ul> 933</div> 934 </div> 935 </div> 936 <template id="sidenav-menu-templates-template" style="display: none"> 937 <div id="sidenav-menu-templates" class="b-modal side-panel-theme"> 938 <div class="b-modal-content"> 939 <div class="tabs menu-tabs"> 940 <div class="menu-top-bar"> 941 <button data-mh-ea="close" class="b-close-button b-modal-close"><i class="icon-cross"></i></button> 942 <h3>ALL CATEGORIES</h3> 943 </div> 944 <div class="menu-list"> 945 <ul> 946 <li> 947 <a href="/books/bestseller-bargains/l115-p1.html?sorter=bestsellers-dsc" class="bestseller-bargains"> 948 <div class="sidenav-link-left"> 949 <i class="icon-trophy-02"></i> 950 <span>Hot Price Bestsellers</span> 951 </div> 952 </a> 953 </li> 954 <li> 955 <a href="/bps-get-free-shipping/promo4116.html?src=bt-promo" class="books-with-free-shipping"> 956 <div class="sidenav-link-left"> 957 <i class="icon-Express-shipping"></i> 958 <span>Books with Free Shipping</span> 959 </div> 960 </a> 961 </li> 962 963 <li class="tab"> 964 <a href="javascript:;" data-tab="tab-books" onclick="switchTabs(this)"> 965 <div class="sidenav-link-left"> 966 <i class="icon-Paperback"></i> 967 <span>Books</span> 968 </div> 969 <i class="icon-arrow-right8"></i> 970 </a> 971 </li> 972 <li class="tab"> 973 <a href="javascript:;" data-tab="tab-academic" onclick="switchTabs(this)"> 974 <div class="sidenav-link-left"> 975 <i class="icon-Grade-Range"></i> 976 <span>Academic & Textbooks</span> 977 </div> 978 <i class="icon-arrow-right8"></i> 979 </a> 980 </li> 981 <li class="tab"> 982 <a href="javascript:;" data-tab="tab-ebooks" onclick="switchTabs(this)"> 983 <div class="sidenav-link-left"> 984 <i class="icon-Ebook"></i> 985 <span>eBooks</span> 986 </div> 987 <i class="icon-arrow-right8"></i> 988 </a> 989 </li> 990 <li class="tab"> 991 <a href="javascript:;" data-tab="tab-audiobooks" onclick="switchTabs(this)"> 992 <div class="sidenav-link-left"> 993 <i class="icon-Audio-Book"></i> 994 <span>Audiobooks</span> 995 </div> 996 <i class="icon-arrow-right8"></i> 997 </a> 998 </li> 999 <li class="tab"> 1000 <a href="javascript:;" data-tab="tab-games" onclick="switchTabs(this)"> 1001 <div class="sidenav-link-left"> 1002 <i class="icon-Puzzle-Piece-Number"></i> 1003 <span>Games & Puzzles</span> 1004 </div> 1005 <i class="icon-arrow-right8"></i> 1006 </a> 1007 </li> 1008 <li class="tab"> 1009 <a href="javascript:;" data-tab="tab-magazines" onclick="switchTabs(this)"> 1010 <div class="sidenav-link-left"> 1011 <i class="icon-Page-Number"></i> 1012 <span>Magazines</span> 1013 </div> 1014 <i class="icon-arrow-right8"></i> 1015 </a> 1016 </li> 1017 <li class="tab"> 1018 <a href="javascript:;" data-tab="tab-stationery" onclick="switchTabs(this)"> 1019 <div class="sidenav-link-left"> 1020 <i class="icon-stationary"></i> 1021 <span>Stationery</span> 1022 </div> 1023 <i class="icon-arrow-right8"></i> 1024 </a> 1025 </li> 1026 <li class="tab"> 1027 <a href="javascript:;" data-tab="tab-gift-ideas" onclick="switchTabs(this)"> 1028 <div class="sidenav-link-left"> 1029 <i class="icon-gift1"></i> 1030 <span>Gift Ideas</span> 1031 </div> 1032 <i class="icon-arrow-right8"> </i> 1033 </a> 1034 </li> 1035 <li> 1036 <a href="/promo3293.html"> 1037 <div class="sidenav-link-left"> 1038 <i class="icon-bargains"></i> 1039 <span>Promotions</span> 1040 </div> 1041 </a> 1042 </li> 1043 <li> 1044 <a href="/helpCentre.ep"> 1045 <div class="sidenav-link-left"> 1046 <i class="icon-info-new"></i> 1047 <span>Help Centre</span> 1048 </div> 1049 </a> 1050 </li> 1051 <li> 1052 <a href="https://www.booktopia.com.au/blog/"> 1053 <div class="sidenav-link-left"> 1054 <i class="icon-blog"></i> 1055 <span>Blog</span> 1056 </div> 1057 </a> 1058 </li> 1059 </ul> 1060 <div class="account-section"> 1061 <div id="pnl-account-signed-in" class="account clear if-signed-in" data-mh-
1061pe="eventOnClick" data-mh-ec="Navigation" data-mh-ea="Click"> 1062 <div class="title clear"> 1063 <span>Hi, </span><span id="lbl-customer-full-name" class="title"></span> 1064 </div> 1065 <ul class="account-links"> 1066 <li class="my-account"> 1067 <a id="mnu-side-manage-account" href="/manage-account.ep"> 1068 <i class="icon-user1"></i> 1069 My Account 1070 </a> 1071 </li> 1072 <li class="my-account"> 1073 <a id="mnu-side-view-wishlist" href="/view-wishlist-nocache.ep"> 1074 <i class="icon-Heart-new"></i> 1075 My Wish Lists 1076 </a> 1077 </li> 1078 <li class="my-account"> 1079 <a id="mnu-side-ebooks-bookshelf" href="/digital-library.ep"> 1080 <i class="icon-titles"></i> 1081 My Digital Library 1082 </a> 1083 </li> 1084 </ul> 1085 <a id="btn-side-sign-out" href="/sign-out-customer-session.ep" onclick="updateLocalEmptyCart();resetPostcode();googleSignOut();return true" > 1086 <i class="icon-log-out"></i> 1087 Sign Out 1088 </a> 1089 </div> 1090 1091 <div id="pnl-account-signed-out" class="account clear if-signed-out" data-mh-pe="eventOnClick" data-mh-ec="Navigation" data-mh-ea="Click"> 1092 <span class="title"><i class="icon-user1"></i> My Account</span> 1093 <div id="account-action" class="row no-gutters"> 1094 <div class="col-6 pr-2"> 1095 <a id="btn-side-sign-in" href="/sign-in.ep">Sign In</a> 1096 </div> 1097 <div class="col-6 pl-2"> 1098 <a id="btn-side-join" href="/sign-in.ep#signup">Join</a> 1099 </div> 1100 </div> 1101 </div> 1102 <div id="useful-nav-links"><a href="//www.booktopia.com.au/blog/">Blog</a> - <a href=" ?deviceType=Desktop">Full Site</a></div> 1103 <span class="copyright">© 2026 Booktopia Direct Pty Ltd. 1104</span> 1105 </div> 1106 </div> 1107 <div class="tab-content" id="tab-books"> 1108 <ul> 1109 <li class="nav-sub-link"><a href="/?books">All Books</a></li> 1110 <li class="nav-sub-link"><a href="/books/fiction-books/cF-p1.html">Fiction</a></li> 1111 <li class="nav-sub-link"><a href="/books/non-fiction-books/cN-p1.html">Non-Fiction</a></li> 1112 <li class="nav-sub-link"><a href="/books/kids-childrens-books/cY-p1.html">Kids & YA</a></li> 1113 <li class="nav-sub-link"><a href="/books/australian-authors-books/l10-p1.html">Australian Stories</a></li> 1114 <li class="nav-sub-link"><a href="/school-books-textbooks/promo152.html">Education</a></li> 1115 <li class="nav-sub-link"><a href="/books/non-fiction/biographies-true-stories/cB-p1.html">Biographies & True Stories</a></li> 1116 <li class="nav-sub-link"><a href="/books/non-fiction/cooking-food-drink/cWB-p1.html">Cooking, Food & Drink</a></li> 1117 <li class="nav-sub-link"><a href="/books/fiction-books/crime-mystery/cFF-p1.html">Crime & Mystery</a></li> 1118 <li class="nav-sub-link"><a href="/books/fiction/romance/cFR-p1.html">Romance</a></li> 1119 <li class="nav-sub-link"><a href="/books/fiction/graphic-novels/cFX-p1.html">Graphic Novels & Manga</a></li> 1120 <li class="nav-sub-link"><a href="/books/kids-childrens-books/cY-p1.html?sorter=bestsellers-dsc">Bestsellers</a></li> 1121 <li class="nav-sub-link"><a href="/books/fiction/l20-p1.html?cID=F">Signed Copies</a></li> 1122 <li class="nav-sub-link"><a href="/books/bargains/c9-p1.html">Bargains</a></li> 1123 </ul> 1124 </div> 1125 <div class="tab-content" id="tab-academic"> 1126 <ul> 1127 <li class="nav-sub-link"><a href="/books/text-books/higher-education-vocational-textbooks/cXA-p1.html">All Textbooks</a></li> 1128 <li class="nav-sub-link"><a href="/books/text-books/higher-education-vocational-textbooks/accounting-business-finance-higher-education-textbooks/cXAA-p1.html">Accounting, Business & Finance Textbooks</a></li> 1129 <li class="nav-sub-link"><a href="/books/text-books/higher-education-vocational-textbooks/law-higher-education-textbooks/cXAL-p1.html">Law Textbooks</a></li> 1130 <li class="nav-sub-link"><a href="/books/text-books/higher-education-vocational-textbooks/medicine-for-higher-education/cXAV-p1.html">Medicine Textbooks</a></li> 1131 <li class="nav-sub-link"><a href="/books/text-books/higher-education-vocational-textbooks/nursing-higher-education-textbooks/cXAP-p1.html">Nursing Textbooks</a></li> 1132 <li class="nav-sub-link"><a href="/books/text-books/higher-education-vocational-textbooks/psychology-higher-education-textbooks/cXAH-p1.html">Psychology Textbooks</a></li> 1133 <li class="nav-sub-link"><a href="/books/text-books/higher-education-vocational-textbooks/education-higher-education-textbooks/cXAD-p1.html">Education Textbooks</a></li> 1134 <li class="nav-sub-link"><a href="/books/text-books/higher-education-vocational-textbooks/biology-and-sciences-higher-education-textbooks/cXAB-p1.html">Biology & Science Textbooks</a></li> 1135 <li class="nav-sub-link"><a href="/books/text-books/higher-education-vocational-textbooks/computing-programming-higher-education-textbooks/cXAC-p1.html">Computing & Programming Textbooks</a></li> 1136 <li class="nav-sub-link"><a href="/books/text-books/higher-education-vocational-textbooks/engineering-physics-higher-education-textbooks/cXAE-p1.html">Engineering & Physics Textbooks</a></li> 1137 <li class="nav-sub-link"><a href="/books/text-books/higher-education-vocational-textbooks/history-higher-education-textbooks/cXAJ-p1.html">History Textbooks</a></li> 1138 <li class="nav-sub-link"><a href="/ebooks/etextbooks/l101082-p1-e.html">Digital Textbooks</a></li> </ul> 1139 </div> 1140 <div class="tab-content" id="tab-ebooks"> 1141 <ul> 1142 <li class="nav-sub-link"><a href="/?ebooks">All eBooks</a></li> 1143 <li class="nav-sub-link"><a href="/ebooks/etextbooks/l101082-p1-e.html">Textbooks</a></li> <li class="nav-sub-link"><a href="/ebooks/fiction/cF-p1-e.html">Fiction</a></li> 1144 <li class="nav-sub-link"><a href="/ebooks/fiction/romance/cFR-p1-e.html">Romance</a></li> 1145 <li class="nav-sub-link"><a href="/ebooks/kids-children-s-books/cY-p1-e.html">Kids & YA</a></li> 1146 <li class="nav-sub-link"><a href="/ebooks/fiction/crime-mystery-fiction/cFF-p1-e.html">Crime & Mystery</a></li> 1147 <li class="nav-sub-link"><a href="/ebooks/fiction/erotic-fiction/cFP-p1-e.html">Erotic Fiction</a></li> 1148 <li class="nav-sub-link"><a href="/ebooks/fiction/fantasy-fiction/cFM-p1-e.html">Fantasy</a></li> 1149 <li class="nav-sub-link"><a href="/ebooks/fiction/thrillers-suspense/cFH-p1-e.html">Thrillers</a></li> 1150 <li class="nav-sub-link"><a href="/ebooks/fiction/science-fiction/cFL-p1-e.html">Science Fiction</a></li> 1151 <li class="nav-sub-link"><a href="/ebooks/non-fiction/cN-p1-e.html">Non-Fiction</a></li> 1152 <li class="nav-sub-link"><a href="/ebooks/non-fiction/biographies-true-stories/cB-p1-e.html">Biographies & True Stories</a></li> 1153 <li class="nav-sub-link"><a href="/kobo-ebook-readers/promo3090.html">eReaders</a></li> 1154 <li class="nav-sub-link"><a href="/kobo-plus-ebook-subscription">Kobo Plus</a></li> 1155 </ul> 1156 </div> 1157 <div class="tab-content" id="tab-audiobooks"> 1158 <ul> 1159 <li class="nav-sub-link"><a href="/?audiobooks">All Audiobooks</a></li> 1160 <li class="nav-sub-link"><a href="/audiobooks/fiction/cF-p1-a.html">Fiction</a></li> 1161 <li class="nav-sub-link"><a href="/audiobooks/fiction/crime-mystery-fiction/cFF-p1-a.html">Crime & Mystery</a></li> 1162 <li class="nav-sub-link"><a href="/audiobooks/non-fiction/biographies-true-stories/cB-p1-a.html">Biographies & True Stories</a></li> 1163 <li class="nav-sub-link"><a href="/audiobooks/non-fiction/history/cHB-p1-a.html">History</a></li> 1164 <li class="nav-sub-link"><a href="/audiobooks/kids-children-s-books/cY-p1-a.html">Children</a></li> 1165 <li class="nav-sub-link"><a href="/?audio-cd">Audio CDs</a></li> 1166 <li class="nav-sub-link"><a href="/audio-cd/hot-prices/l13-p1-c.html?sorter=price-AUD-asc">Audio CD Bargains</a></li> 1167 <li class="nav-sub-link"><a href="/books/sony-headphones/l101461-p1.html">Sony Headphones</a></li> 1168 </ul> 1169 </div> 1170 <div class="tab-content" id="tab-games"> 1171 <ul> 1172 <li class="nav-sub-link"><a href="/books/games-and-puzzles/cGMP-p1.html">All Games & Puzzles</a></li> 1173 <li class="nav-sub-link"><a href="/books/games-and-puzzles/board-games-table-top-games/cGMPA-p1.html">Board Games</a></li> 1174 <li class="nav-sub-link"><a href="/books/games-and-puzzles/card-games/cGMPB-p1.html">Card Games</a></li> 1175 <li class="nav-sub-link"><a href="/books/games-and-puzzles/puzzles/cGMPC-p1.html">Puzzles</a></li> 1176 <li class="nav-sub-link"><a href="/books/games-and-puzzles/figurines-collectables/cGMPD-p1.html">Figurines & Collectables</a></li> 1177 <li class="nav-sub-link"><a href="/books/games-and-puzzles/activities/cGMPE-p1.html">Activities</a></li> 1178 </ul> 1179 </div> 1180 <div class="tab-content" id="tab-magazines"> 1181 <ul> 1182 <li class="nav-sub-link"><a href="/?magazines">All Magazines</a></li> 1183 <li class="nav-sub-link"><a href="/magazine-subscriptions/magazines-for-her/l59-p1-m.html">Magazines For Her</a></li> 1184 <li class="nav-sub-link"><a href="/magazine-subscriptions/magazines-for-him/l60-p1-m.html">Magazines For Him</a></li> 1185 <li class="nav-sub-link"><a href="/magazine-subscriptions/kids-teens-magazines/c4K-p1-m.html">Kids & Teens</a></li> 1186 <li class="nav-sub-link"><a href="/magazine-subscriptions/international-magazines/c4J-p1-m.html">International Magazines</a></li> 1187 <li class="nav-sub-link"><a href="/magazine-subscriptions/art-design-magazines/c4A-p1-m.html">Art & Design</a></li> 1188 <li class="nav-sub-link"><a href="/magazine-subscriptions/fashion-beauty-magazines/c4U-p1-m.html">Fashion & Beauty</a></li> 1189 <li class="nav-sub-link"><a href="/magazine-subscriptions/hobbies-puzzles-magazines/c4O-p1-m.html">Hobbies & Puzzles</a></li> 1190 <li class="nav-sub-link"><a href="/magazine-subscriptions/craft-magazines/c4R-p1-m.html">
1190Craft</a></li> 1191 <li class="nav-sub-link"><a href="/magazine-subscriptions/science-nature-magazines/c4N-p1-m.html">Science & Nature</a></li> 1192 <li class="nav-sub-link"><a href="/magazine-subscriptions/lifestyle-magazines/c4L-p1-m.html">Lifestyle</a></li> 1193 <li class="nav-sub-link"><a href="/magazine-subscriptions/health-fitness-magazines/c4H-p1-m.html">Health & Fitness</a></li> 1194 1195 </ul> 1196 </div> 1197 <div class="tab-content" id="tab-stationery"> 1198 <ul> 1199 <li class="nav-sub-link"><a href="/?stationery">All Stationery</a></li> 1200 <li class="nav-sub-link"><a href="/diaries-stationery/2024-diaries/c1E-p1-s.html">Diaries</a></li> 1201 <li class="nav-sub-link"><a href="/diaries-stationery/notebooks/c1A-p1-s.html">Notebooks</a></li> 1202 <li class="nav-sub-link"><a href="/diaries-stationery/journals/c1B-p1-s.html">Journals</a></li> 1203 <li class="nav-sub-link"><a href="/diaries-stationery/hot-prices/l13-p1-s.html?list=13">Stationery Bargains</a></li> 1204 </ul> 1205 </div> 1206 <div class="tab-content" id="tab-gift-ideas"> 1207 <ul> 1208 <li class="nav-sub-link"><a href="/books/booktopia-gift-guide/c53-p1.html">Gift Guides</a></li> 1209 <li class="nav-sub-link"><a href="/gift-certificates/cGC-p1.html">Gift Certificates</a></li> 1210 <li class="nav-sub-link"><a href="/books/booktopia-gift-guide/games-toys-and-puzzles/c53H-p1.html">Games & Puzzles</a></li> 1211 <li class="nav-sub-link"><a href="/diaries-stationery/stationery-gift-ideas/l265-p1-s.html">Stationery</a></li> 1212 <li class="nav-sub-link"><a href="/diaries-stationery/book-accessories/c1T-p1-s.html">Book Accessories</a></li> 1213 <li class="nav-sub-link"><a href="/books/booktopia-gift-guide/everything-lavish-gift-guide/c53C-p1.html">Everything Lavish</a></li> 1214 <li class="nav-sub-link"><a href="/books/booktopia-gift-guide/fiction-gift-guide/c53D-p1.html">Fiction</a></li> 1215 <li class="nav-sub-link"><a href="/books/booktopia-gift-guide/non-fiction-gift-guide/c53A-p1.html">Non-Fiction</a></li> 1216 <li class="nav-sub-link"><a href="/books/booktopia-gift-guide/just-for-kids/c53E-p1.html">Just For Kids</a></li> 1217 </ul> 1218 </div> 1219 </div> 1220 </div> 1221 </div> 1222 </template><div id="body" > 1223 1224 <div id="content"> 1225 <style> 1226 h1, h2 {font-size: 24px;} 1227 #content {padding: 15px;} 1228 #get-in-touch-links a {color:#333;text-align:center;font-weight:bold;padding-bottom:30px;} 1229 #get-in-touch-links a:hover {color:#009933;text-decoration:none;} 1230 #get-in-touch-links a:hover .icon span {background-color:#009933;} 1231 #get-in-touch-links .icon {height:60px;} 1232 #get-in-touch-links .icon span {display:inline-block;border-radius:50%;background-color:#888;padding:10px;font-size:24px;width:44px;height:44px;} 1233 #get-in-touch-links .icon span:before {color:#fff;} 1234 #get-in-touch-links .icon img {position:relative;} 1235 #what-to-read-icon {bottom:10px;right:10px;} 1236 #product-review-icon {bottom:2px;right:3px;} 1237</style> 1238<h1>What is Booktopia?</h1> 1239<p>We're Australia's biggest bookstore providing Australia’s most extensive library, giving book lovers an unrivalled choice, for whatever they are looking for. </p> 1240<p>Our award-winning store offers thousands of titles from a wide range of local Australian and international authors and publishers across a whole host of categories and interests.</p> 1241<p>In addition to books, we also sell ebooks, ereaders, audiobooks and stationery, giving you everything you need for great entertainment, great information, great content and great gifts all year round. That’s a whole lot of great!</p> 1242<p>Our store is online only and we ship orders to every corner of Australia and New Zealand from our magical Customer Fulfilment Centre in Enfield in Sydney. At a giant 27,500 sq metres—that’s about 33 football fields (!) they are able to fit millions of books at any one time—a true book lovers’ paradise!</p> 1243<p>We also have the honour of hosting hundreds of authors each year providing exclusive experiences for our customers. This includes signing thousands of copies of books and creating unique content, including participation in special events and podcast episodes.</p> 1244<p>We are the destination for all of your reading inspiration, needs and wishes. We are your ultimate book haven. We are Booktopia.</p> 1245 1246<h2>Our Promise</h2> 1247<p>We are passionate about championing Australian books, authors and publishing and have been that way ever since we launched back in 2004. It’s in our DNA.</p> 1248<p>Our customers are at the heart of everything we do. From having a huge range of thousands of in-stock items and fast delivery, to having friendly and knowledgeable customer service representatives ready to help, there is nothing more important than delivering brilliant customer service every single day.</p> 1249<p>Our mission is to make it as easy as possible for Australians to discover and buy books and meet Australians wherever and whenever they read their books.</p> 1250 1251<h2>Get In Touch</h2> 1252<p>We love to hear from our customers! Leave us a review, tell us what you’re reading, share our recommendations, give us some book tips or ask us a question—or do all of these things!</p> 1253<div id="get-in-touch-links" class="row no-gutters mt-4"> 1254 <a class="col-4 col-md" href="https://www.facebook.com/Booktopia/" target="_blank"><div class="icon"><span class="icon-facebook"></span></div>Facebook</a> 1255 <a class="col-4 col-md" href="https://www.instagram.com/booktopiabooks" target="_blank"><div class="icon"><span class="icon-instagram"></span></div>Instagram</a> 1256 <a class="col-4 col-md" href="https://www.twitter.com/booktopia" target="_blank"><div class="icon"><span class="icon-twitter"></span></div>Twitter</a> 1257 <a class="col-4 col-md" href="https://www.tiktok.com/@booktopiabooks" target="_blank"><div class="icon"><span class="icon-tiktok"></span></div>TikTok</a> 1258 <a class="col-4 col-md" href="https://au.linkedin.com/company/booktopia" target="_blank"><div class="icon"><span class="icon-linkedin2"></span></div>LinkedIn</a> 1259 <a class="col-4 col-md" href="https://www.booktopia.com.au/blog/" target="_blank"><div class="icon"><span><img id="what-to-read-icon" class="lazyload" height="45" src="#getLazyLoaderUrl()" data-src="https://images.booktopia.com.au/promotions/2022/what-is-booktopia/what-to-read.svg"></span></div>Tell Me What To Read</a> 1260 <a class="col-12 col-md" href="https://www.productreview.com.au/listings/booktopia" target="_blank"><div class="icon"><span><img id="product-review-icon" class="lazyload" height="30" src="#getLazyLoaderUrl()" data-src="https://images.booktopia.com.au/promotions/2022/what-is-booktopia/product-review.svg"></span></div>ProductReview</a> 1261</div> 1262<p>You can also listen to our <i>Tell Me What To Read</i> podcast: <a href="https://www.booktopia.com.au/blog/podcasts/" target="_blank">https://www.booktopia.com.au/blog/podcasts/</a> or from wherever you get your podcasts.</p> 1263<p>Happy reading!</p> 1264 1265<div class="productreviewwidget" data-itemid="81766" data-full-width="1" data-num-reviews="10" data-order="best"></div>
1266<script type="text/javascript"> 1267 (function () { 1268 function async_load() { 1269 var s = document.createElement("script"); 1270 s.type = "text/javascript"; 1271 s.async = true; 1272 s.src = "//www.productreview.com.au/assets/js/widget/reviews-itemid.js"; 1273 var x = document.getElementsByTagName("script")[0]; 1274 x.parentNode.insertBefore(s, x); 1275 } 1276 1277 if (window.attachEvent) { 1278 window.attachEvent("onload", async_load); 1279 } else { 1280 window.addEventListener("load", async_load, false); 1281 } 1282 })(); 1283</script>
1283 1284 </div> 1285 </div> 1286<div id="footer"> 1287 <div id="top-bar"> 1288 <div class="content"> 1289 <div class="newsletter-sign-up-holder if-signed-out"> 1290 <div id="newsletter-sign-up"> 1291 <h3>Join Our Newsletter</h3> 1292 <form id="footerNewsletterForm"> 1293 <input type="email" id="email" name="email" placeholder="Enter your email address..."> 1294 <input type="button" value="SUBSCRIBE" onclick="submitFooterNewsletterForm()" data-target="iframe"> 1295 </form> 1296 </div> 1297 </div> 1298 <div class="top-bar-right "> 1299 <ul id="social-media-tab" data-mh-pe="eventOnClick" data-mh-ec="Social Click" data-mh-ea="Click" > 1300 <li><a target="_blank" data-mh-el="Youtube" href="//www.youtube.com/user/booktopiabooks" class="youtube-icon"><span class="icon-youtube"></span></a></li> 1301 <li><a target="_blank" data-mh-el="Blog" href="//www.booktopia.com.au/blog/" class="blog-icon"><span class="icon-booktopia"></span></a></li> 1302 <li><a target="_blank" data-mh-el="Facebook" href="//www.facebook.com/pages/Booktopia/91043653859" class="facebook-icon"><span class="icon-facebook"></span></a></li> 1303 <li><a target="_blank" data-mh-el="Twitter" href="//twitter.com/booktopia" class="twitter-icon"><span class="icon-twitter"></span></a></li> 1304 <li><a target="_blank" data-mh-el="Soundcloud" href="//www.booktopia.com.au/blog/podcasts/?utm_source=booktopian_blog&utm_medium=booktopian&utm_campaign=tell_me_what_to_read" class="podcast-icon"><span class="icon-podcast"></span></a></li> 1305 <li><a target="_blank" data-mh-el="Instagram" href="//instagram.com/booktopiabooks" class="instagram-icon"><span class="icon-instagram"></span></a></li> 1306</ul> 1307 </div> 1308 </div> 1309 </div> 1310 <div id="links" class="footer-links"> 1311 <div class="content container" data-mh-pe="eventOnClick" data-mh-ec="Footer" data-mh-ea="Click"> 1312 <div class="row no-gutters info-row justify-content-between align-item-center"> 1313 1314 <div class="col"> 1315 <div class="row footer-info"> 1316 <div class="col-xl-auto col-lg-12 pr-1"> 1317 <span class="info-title">Head Office</span> 1318 </div> 1319 <div class="col"> 1320 <span class="info-content"> 1321 34-48 Cosgrove Road, South Strathfield NSW 2136 1322 <br>ABN 90 679 610 890 1323 </span> 1324 </div> 1325 </div> 1326 </div> 1327 <div class="col-auto"> 1328 <a id="btn-mobile-site" class="button" href=" ?deviceType=mobile">MOBILE SITE</a> 1329 </div> 1330 </div> 1331 <div class="row no-gutters"> 1332 <div class="col-3"> 1333 <h4><a href="/helpCentre.ep">Help Centre</a></h4> 1334 <ul> 1335 <li><a href="/helpCentre.ep?p=ordering&o=place-order#">Placing An Order</a></li> 1336 <li><a href="/helpCentre.ep?p=affiliate&o=contact-us#">Contact Booktopia</a></li> 1337 <li><a href="/helpCentre.ep?p=policies&o=terms#">Terms Of Business</a></li> 1338 <li><a href="/helpCentre.ep?p=policies&o=privacy#">Privacy Policy</a></li> 1339 <li><a href="/helpCentre.ep?p=affiliate&o=affiliates#">Become An Affiliate</a></li> 1340 <li><a href="/sitemap.ep">Sitemap</a></li> 1341 </ul> 1342 </div> 1343 <div class="col-3"> 1344 <h4><a href="/helpCentre.ep?p=shipping&o=standard-shipping#">Shipping</a></h4> 1345 <ul> 1346 <li><a href="/track-order.ep">Track My Order</a></li> 1347 <li><a href="/helpCentre.ep?p=shipping&o=standard-shipping#">Standard Shipping</a></li> 1348 <li><a href="/helpCentre.ep?p=shipping&o=express-shipping#">Express Shipping</a></li> 1349 <li><a href="/helpCentre.ep?p=shipping&o=shipping-timeframes#">Shipping Timeframes</a></li> 1350 <li><a href="/helpCentre.ep?p=shipping&o=delivering-your-order#">Delivering Your Order</a></li> 1351 <li><a href="/helpCentre.ep?p=shipping&o=new-zealand-orders#">New Zealand Orders</a></li> 1352 </ul> 1353 </div> 1354 <div class="col-3"> 1355 <h4><a href="/your-local-bookstore/news18.html">About Booktopia</a></h4> 1356 <ul> 1357 <li><a href="/your-local-bookstore/news18.html">Your Local Bookstore</a></li> 1358 <li><a href="/why-booktopia/news19.html">Why Buy From Booktopia?</a></li> 1359 <li><a href="/why-booktopia/news19.html#awards-recognition">Our Awards</a></li> 1360 <li><a href="/helpCentre.ep?p=affiliate&o=charity-book-donations#">Booktopia's Charities</a></li> 1361 <li><a href="/booktopia-ebooks-by-rakuten-kobo/promo3131.html">Booktopia eBooks</a></li> 1362 <li><a href="/work-with-us">Work With Us</a></li> 1363 </ul>
1364 </div> 1365 <div class="col-3"> 1366 <h4><a href="/bestsellers/promo294.html">Bestsellers</a></h4> 1367 <ul> 1368 <li><a href="/baby-toddler-bestsellers/promo387.html">Babies & Toddlers' Bestseller List</a></li> 1369 <li><a href="/children-s-bestsellers/promo297.html">Children's Bestseller List</a></li> 1370 <li><a href="/young-adult-bestsellers/promo298.html">Young Adults' Bestseller List</a></li> 1371 <li><a href="/fiction-bestsellers/promo296.html">Fiction Bestseller List</a></li> 1372 <li><a href="/non-fiction-bestsellers/promo656.html">Non-Fiction Bestseller List</a></li> 1373 </ul> 1374 </div> 1375 <div class="col-3"> 1376 <h4>Popular Brands</h4> 1377 <ul> 1378 <li><a href="/search.ep?keywords=abc+reading+eggs&productType=917504">ABC Reading Eggs</a></li> 1379 <li><a href="/search.ep?keywords=Australian+Women%27s+Weekly&productType=917504">Australian Women's Weekly</a></li> 1380 <li><a href="/bluey/series9222.html">Bluey</a></li> 1381 <li><a href="/search.ep?keywords=Excel&productType=917504">Excel Education</a></li> 1382 <li><a href="/search.ep?keywords=Dr+Seuss&productType=917504">Dr Seuss</a></li> 1383 <li><a href="/books/non-fiction/self-help-personal-development/how-to/for-dummies-books/cVSAD-p1.html">For Dummies</a></li> 1384 <li><a href="/search.ep?keywords=Harvard+Business+Review&productType=917504">Harvard Business Review</a></li> 1385 <li><a href="/harry-potter-at-booktopia/promo842.html">Harry Potter</a></li> 1386 <li><a href="/search.ep?keywords=lego&productType=917504">LEGO</a></li> 1387 <li><a href="/search.ep?keywords=Little+Golden+Book&productType=917504">Little Golden Books</a></li> 1388 <li><a href="/books/non-fiction/travel-holidays/lonely-planet-travel-books/cWTP-p1.html">Lonely Planet Travel Books</a></li> 1389 <li><a href="/search.ep?keywords=No+Fear+Shakespeare&productType=917504">No Fear Shakespeare</a></li> 1390 <li><a href="/books/fiction/classic-fiction/penguin-black-classics/cFCP-p1.html">Penguin Black Classics</a></li> 1391 <li><a href="/search.ep?keywords=Peppa+Pig&productType=917504">Peppa Pig</a></li> 1392 <li><a href="/books/non-fiction/self-help-personal-development/how-to/teach-yourself/cVSAT-p1.html">Teach Yourself</a></li> 1393 <li><a href="/books/fiction/classic-fiction/vintage-classics/cFCC-p1.html">Vintage Classics</a></li> 1394 <li><a href="/search.ep?keywords=where%27s+wally&productType=917504">Where's Wally</a></li> 1395 </ul> 1396 </div> 1397 <div class="col-3"> 1398 <h4>Popular Series</h4> 1399 <ul> 1400 <li><a href="/a-court-of-thorns-and-roses-paperback-by-sarah-j-maas/series9377.html">A Court of Thorns and Roses</a></li> 1401 <li><a href="/a-game-of-thrones-a-song-of-ice-and-fire-paperbacks-by-george-r-r-martin/series533.html">A Game of Thrones</a></li> 1402 <li><a href="/bridgerton-original-book-series-by-julia-quinn/series499.html">Bridgerton</a></li> 1403 <li><a href="/the-diary-of-a-wimpy-kid-series-by-jeff-kinney/series371.html">Diary of a Wimpy Kid</a></li> 1404 <li><a href="/frank-herbert-s-dune-paperbacks/series10592.html">Dune</a></li> 1405 <li><a href="/jack-reacher-by-lee-child/series92.html">Jack Reacher</a></li> 1406 <li><a href="/the-jack-west-novels-by-matthew-reilly/series6.html">Jack West</a></li> 1407 <li><a href="/little-people-big-dreams/series5274.html">Little People, Big Dreams</a></li> 1408 <li><a href="/the-lord-of-the-rings-paperbacks-by-j-r-r-tolkien/series385.html">Lord of the Rings</a></li> 1409 <li><a href="/the-nevermoor-series-paperback-editions/series671.html">Nevermoor</a></li> 1410 <li><a href="/outlander-the-original-book-series/series7433.html">Outlander</a></li> 1411 <li><a href="/the-bad-guys-by-aaron-blabey/series4747.html">The Bad Guys</a></li> 1412 <li><a href="/the-treehouse-series-by-andy-griffiths/series2785.html">The Treehouse Series</a></li> 1413 <li><a href="/the-wheel-of-time-new-editions-by-robert-jordan/series350.html">The Wheel of Time</a></li> 1414 <li><a href="/the-witcher-new-paperback-editions-by-andrzej-sapkowski/series9231.html">The Witcher</a></li> 1415 <li><a href="/the-wings-of-fire-series-by-tui-t-sutherland/series7552.html">Wings of Fire</a></li> 1416 <li><a href="/wolf-girl-by-anh-do/series9737.html">Wolf Girl</a></li> 1417 </ul>
1418 </div> 1419 <div class="col-3"> 1420 <h4>Popular Authors</h4> 1421 <ul> 1422 <li><a href="/bren-brown/author1121.html">Brene Brown</a></li> 1423 <li><a href="/bruce-pascoe/author1135.html">Bruce Pascoe</a></li> 1424 <li><a href="/david-walliams/author887.html">David Walliams</a></li> 1425 <li><a href="/di-morrissey/author148.html">Di Morrissey</a></li> 1426 <li><a href="/donna-hay/author70.html">Donna Hay</a></li> 1427 <li><a href="/fiona-mcintosh/author171.html">Fiona McIntosh</a></li> 1428 <li><a href="/helen-garner/author626.html">Helen Garner</a></li> 1429 <li><a href="/jane-harper/author144.html">Jane Harper</a></li> 1430 <li><a href="/liane-moriarty/author934.html">Liane Moriarty</a></li> 1431 <li><a href="/matthew-reilly/author3.html">Matthew Reilly</a></li> 1432 <li><a href="/peter-fitzsimons/author22.html">Peter FitzSimons</a></li> 1433 <li><a href="/sally-rooney/author1154.html">Sally Rooney</a></li> 1434 <li><a href="/sarah-j-maas/author991.html">Sarah J. Maas</a></li> 1435 <li><a href="/taylor-jenkins-reid/author1414.html">Taylor Jenkins Reid</a></li> 1436 <li><a href="/tim-winton/author46.html">Tim Winton</a></li> 1437 <li><a href="/trent-dalton/author1259.html">Trent Dalton</a></li> 1438 <li><a href="/yotam-ottolenghi/author1002.html">Yotam Ottolenghi</a></li> 1439 </ul> 1440 </div> 1441 <div class="col-3"> 1442 <h4>Popular Subjects</h4> 1443 <ul> 1444 <li><a href="/books/non-fiction/biographies-true-stories/cB-p1.html">Biographies & True Stories</a></li> 1445 <li><a href="/books/non-fiction/business-management/cKJ-p1.html">Business & Management</a></li> 1446 <li><a href="/books/non-fiction/cooking-food-drink/cWB-p1.html">Cooking, Food & Drink</a></li> 1447 <li><a href="/books/non-fiction/crafts-handiwork/cWF-p1.html">Crafts & Handiwork</a></li> 1448 <li><a href="/books/non-fiction/family-health/cVF-p1.html">Family & Health</a></li> 1449 <li><a href="/books/non-fiction/family-health/fitness-diet/cVFM-p1.html">Fitness & Diet</a></li> 1450 <li><a href="/books/non-fiction/history/cHB-p1.html">History</a></li> 1451 <li><a href="/books/non-fiction/self-help-personal-development/cVS-p1.html">Self-Help & Personal Development</a></li> 1452 <li><a href="/books/fiction/cF-p1.html?list=10">Australian Fiction</a></li> 1453 <li><a href="/books/fiction/crime-mystery/cFF-p1.html">Crime & Mystery</a></li> 1454 <li><a href="/books/fiction/classic-fiction/cFC-p1.html">Classic Fiction</a></li> 1455 <li><a href="/books/fiction/fantasy-fiction/cFM-p1.html">Fantasy Fiction</a></li> 1456 <li><a href="/books/fiction/modern-contemporary-fiction/cFA-p1.html">Modern & Contemporary Fiction</a></li> 1457 <li><a href="/books/fiction/graphic-novels/manga/cFXA-p1.html">Manga</a></li> 1458 <li><a href="/books/kids-childrens-books/picture-books-early-learning/picture-books-in-general/cYBC-p1.html">Picture Books</a></li> 1459 <li><a href="/books/kids-childrens-books/children-s-fiction/young-adult-ya-fiction/cYFY-p1.html">Young Adult Fiction</a></li> 1460 </ul> 1461 </div> 1462 </div> 1463 </div> 1464 </div> 1465 <div id="awards"> 1466 <div class="row no-gutters align-items-center"> 1467 <div class="col-auto" style="width: 120px"></div> 1468 <div class="col"> 1469 Voted Australia’s Favourite Bookstore by Australian Book Buyers 1470 </div> 1471 <div class="col-auto"> 1472 <img class="lazyload" src="https://www.booktopia.com.au/images/loading-cover-150.gif" data-src="https://www.booktopia.com.au/images/assets/footer/national-bookshop-day.png" /> 1473 </div> 1474 <div class="col-12"> 1475 <br>© 2026 Booktopia Direct Pty Ltd. 1476 </div> 1477 </div> 1478 </div> 1479 1480 1481
1481<script type="text/javascript"> 1482 history.navigationMode = 'compatible'; 1483 </script>
1483 1484 <div style="display:none;"> 1485
1485<script type="text/javascript"> 1486/* <![CDATA[ */ 1487var google_conversion_id = 1071893088; 1488var google_conversion_language = "en"; 1489var google_conversion_format = "3"; 1490var google_conversion_color = "ffffff"; 1491var google_conversion_label = "qrp2CNvw4wIQ4JSP_wM"; 1492var google_conversion_value = 0; 1493/* ]]> */ 1494</script>
vendor: 1 bytes, line 1494
1494
1495<script> 1496 lazyLoadScript("https://www.googleadservices.com/pagead/conversion.js",function(){}) 1497</script>
1497 1498<noscript> 1499<div style="display:inline;"> 1500<img height="1" width="1" style="border-style:none;" alt="" src="https://www.googleadservices.com/pagead/conversion/1071893088/?label=qrp2CNvw4wIQ4JSP_wM&guid=ON&script=0"/> 1501</div> 1502</noscript> </div> 1503</div> 1504 1505 1506 1507 1508 <!-- d8ab4c5fea9140869fe15b87eb19b959 --> 1509 <!-- Version: dev-20260911152026 -->
1510<script> 1511 lazyLoadScript("/template-resources/js/polyfills/intersection-observer.js", function(){}) 1512</script>
1512 1513
1514<script type="text/javascript" src="/wro/6199/jQuery.js?v=dev-20260911152026"></script>
vendor: 1 bytes, line 1514
1514
1515<script type="text/javascript"> 1516 !function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t=t||self).LazyLoad=n()}(this,(function(){"use strict";function t(){return(t=Object.assign||function(t){for(var n=1;n<arguments.length;n++){var e=arguments[n];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i])}return t}).apply(this,arguments)}var n="undefined"!=typeof window,e=n&&!("onscroll"in window)||"undefined"!=typeof navigator&&/(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent),i=n&&"IntersectionObserver"in window,o=n&&"classList"in document.createElement("p"),a=n&&window.devicePixelRatio>1,r={elements_selector:"img",container:e||n?document:null,threshold:300,thresholds:null,data_src:"src",data_srcset:"srcset",data_sizes:"sizes",data_bg:"bg",data_bg_hidpi:"bg-hidpi",data_bg_multi:"bg-multi",data_bg_multi_hidpi:"bg-multi-hidpi",data_poster:"poster",class_applied:"applied",class_loading:"loading",class_loaded:"loaded",class_error:"error",load_delay:0,auto_unobserve:!0,cancel_on_exit:!1,callback_enter:null,callback_exit:null,callback_applied:null,callback_loading:null,callback_loaded:null,callback_error:null,callback_finish:null,callback_cancel:null,use_native:!1},c=function(n){return t({},r,n)},l=function(t,n){var e,i=new t(n);try{e=new CustomEvent("LazyLoad::Initialized",{detail:{instance:i}})}catch(t){(e=document.createEvent("CustomEvent")).initCustomEvent("LazyLoad::Initialized",!1,!1,{instance:i})}window.dispatchEvent(e)},s=function(t,n){return t.getAttribute("data-"+n)},u=function(t,n,e){var i="data-"+n;null!==e?t.setAttribute(i,e):t.removeAttribute(i)},d=function(t){return s(t,"ll-status")},f=function(t,n){return u(t,"ll-status",n)},_=function(t){return f(t,null)},g=function(t){return null===d(t)},v=function(t){return"delayed"===d(t)},b=["loading","applied","loaded","error"],p=function(t){return b.indexOf(d(t))>-1},m=function(t,n){return u(t,"ll-timeout",n)},h=function(t){return s(t,"ll-timeout")},E=function(t,n,e,i){t&&(void 0===i?void 0===e?t(n):t(n,e):t(n,e,i))},y=function(t,n){o?t.classList.add(n):t.className+=(t.className?" ":"")+n},L=function(t,n){o?t.classList.remove(n):t.className=t.className.replace(new RegExp("(^|\\s+)"+n+"(\\s+|$)")," ").replace(/^\s+/,"").replace(/\s+$/,"")},I=function(t){return t.llTempImage},k=function(t,n,e){if(e){var i=e._observer;i&&n.auto_unobserve&&i.unobserve(t)}},A=function(t){t&&(t.loadingCount+=1)},w=function(t){for(var n,e=[],i=0;n=t.children[i];i+=1)"SOURCE"===n.tagName&&e.push(n);return e},z=function(t,n,e){e&&t.setAttribute(n,e)},C=function(t,n){t.removeAttribute(n)},O=function(t){return!!t.llOriginalAttrs},x=function(t){if(!O(t)){var n={};n.src=t.getAttribute("src"),n.srcset=t.getAttribute("srcset"),n.sizes=t.getAttribute("sizes"),t.llOriginalAttrs=n}},N=function(t){if(O(t)){var n=t.llOriginalAttrs;z(t,"src",n.src),z(t,"srcset",n.srcset),z(t,"sizes",n.sizes)}},M=function(t,n){z(t,"sizes",s(t,n.data_sizes)),z(t,"srcset",s(t,n.data_srcset)),z(t,"src",s(t,n.data_src))},R=function(t){C(t,"src"),C(t,"srcset"),C(t,"sizes")},T=function(t,n){var e=t.parentNode;e&&"PICTURE"===e.tagName&&w(e).forEach(n)},G={IMG:function(t,n){T(t,(function(t){x(t),M(t,n)})),x(t),M(t,n)},IFRAME:function(t,n){z(t,"src",s(t,n.data_src))},VIDEO:function(t,n){w(t).forEach((function(t){z(t,"src",s(t,n.data_src))})),z(t,"poster",s(t,n.data_poster)),z(t,"src",s(t,n.data_src)),t.load()}},S=function(t,n,e){var i=G[t.tagName];i&&(i(t,n),A(e),y(t,n.class_loading),f(t,"loading"),E(n.callback_loading,t,e),E(n.callback_reveal,t,e))},j=["IMG","IFRAME","VIDEO"],D=function(t){t&&(t.loadingCount-=1)},F=function(t,n){!n||n.toLoadCount||n.loadingCount||E(t.callback_finish,n)},P=function(t,n,e){t.addEventListener(n,e),t.llEvLisnrs[n]=e},V=function(t,n,e){t.removeEventListener(n,e)},U=function(t){return!!t.llEvLisnrs},$=function(t){if(U(t)){var n=t.llEvLisnrs;for(var e in n){var i=n[e];V(t,e,i)}delete t.llEvLisnrs}},q=function(t,n,e){!function(t){delete t.llTempImage}(t),D(e),L(t,n.class_loading),k(t,n,e)},H=function(t,n,e){var i=I(t)||t;if(!U(i)){!function(t,n,e){U(t)||(t.llEvLisnrs={}),P(t,"load",n),P(t,"error",e),"VIDEO"===t.tagName&&P(t,"loadeddata",n)}(i,(function(o){!function(t,n,e,i){q(n,e,i),y(n,e.class_loaded),f(n,"loaded"),E(e.callback_loaded,n,i),F(e,i)}(0,t,n,e),$(i)}),(function(o){!function(t,n,e,i){q(n,e,i),y(n,e.class_error),f(n,"error"),E(e.callback_error,n,i),F(e,i)}(0,t,n,e),$(i)}))}},B=function(t){t&&(t.toLoadCount-=1)},J=function(t,n,e){!function(t){t.llTempImage=document.createElement("img")}(t),H(t,n,e),function(t,n,e){var i=s(t,n.data_bg),o=s(t,n.data_bg_hidpi),r=a&&o?o:i;r&&(t.style.backgroundImage='url("'.concat(r,'")'),I(t).setAttribute("src",r),A(e),y(t,n.class_loading),f(t,"loading"),E(n.callback_loading,t,e),E(n.callback_reveal,t,e))}(t,n,e),function(t,n,e){var i=s(t,n.data_bg_multi),o=s(t,n.data_bg_multi_hidpi),r=a&&o?o:i;r&&(t.style.backgroundImage=r,y(t,n.class_applied),f(t,"applied"),k(t,n,e),E(n.callback_applied,t,e))}(t,n,e)},K=function(t,n,e){!function(t){return j.indexOf(t.tagName)>-1}(t)?J(t,n,e):function(t,n,e){H(t,n,e),S(t,n,e)}(t,n,e),B(e),F(n,e)},Q=function(t){var n=h(t);n&&(v(t)&&_(t),clearTimeout(n),m(t,null))},W=function(t,n,e,i){"IMG"===t.tagName&&($(t),function(t){T(t,(function(t){R(t)})),R(t)}(t),function(t){T(t,(function(t){N(t)})),N(t)}(t),L(t,e.class_loading),D(i),E(e.callback_cancel,t,n,i),setTimeout((function(){i.resetElementStatus(t,i)}),0))},X=function(t,n,e,i){E(e.callback_enter,t,n,i),p(t)||(e.load_delay?function(t,n,e){var i=n.load_delay,o=h(t);o||(o=setTimeout((function(){K(t,n,e),Q(t)}),i),f(t,"delayed"),m(t,o))}(t,e,i):K(t,e,i))},Y=function(t,n,e,i){g(t)||(e.cancel_on_exit&&function(t){return"loading"===d(t)}(t)&&W(t,n,e,i),E(e.callback_exit,t,n,i),e.load_delay&&v(t)&&Q(t))},Z=["IMG","IFRAME"],tt=function(t){return t.use_native&&"loading"in HTMLImageElement.prototype},nt=function(t,n,e){t.forEach((function(t){-1!==Z.indexOf(t.tagName)&&(t.setAttribute("loading","lazy"),function(t,n,e){H(t,n,e),S(t,n,e),B(e),f(t,"native"),F(n,e)}(t,n,e))})),e.toLoadCount=0},et=function(t){var n=t._settings;i&&!tt(t._settings)&&(t._observer=new IntersectionObserver((function(e){!function(t,n,e){t.forEach((function(t){return function(t){return t.isIntersecting||t.intersectionRatio>0}(t)?X(t.target,t,n,e):Y(t.target,t,n,e)}))}(e,n,t)}),function(t){return{root:t.container===document?null:t.container,rootMargin:t.thresholds||t.threshold+"px"}}(n)))},it=function(t){return Array.prototype.slice.call(t)},ot=function(t){return t.container.querySelectorAll(t.elements_selector)},at=function(t){return function(t){return"error"===d(t)}(t)},rt=function(t,n){return function(t){return it(t).filter(g)}(t||ot(n))},ct=function(t){var n,e=t._settings;
1516(n=ot(e),it(n).filter(at)).forEach((function(t){L(t,e.class_error),_(t)})),t.update()},lt=function(t,e){var i;this._settings=c(t),this.loadingCount=0,et(this),i=this,n&&window.addEventListener("online",(function(t){ct(i)})),this.update(e)};return lt.prototype={update:function(t){var n,o,a=this._settings,r=rt(t,a);(this.toLoadCount=r.length,!e&&i)?tt(a)?nt(r,a,this):(n=this._observer,o=r,function(t){t.disconnect()}(n),function(t,n){n.forEach((function(n){t.observe(n)}))}(n,o)):this.loadAll(r)},destroy:function(){this._observer&&this._observer.disconnect(),delete this._observer,delete this._settings,delete this.loadingCount,delete this.toLoadCount},loadAll:function(t){var n=this,e=this._settings;rt(t,e).forEach((function(t){K(t,e,n)}))},resetElementStatus:function(t){!function(t,n){p(t)&&function(t){t&&(t.toLoadCount+=1)}(n),f(t,null)}(t,this)},load:function(t){K(t,this._settings,this)}},lt.load=function(t,n){var e=c(n);K(t,e)},n&&function(t,n){if(n)if(n.length)for(var e,i=0;e=n[i];i+=1)l(t,e);else l(t,n)}(lt,window.lazyLoadOptions),lt})); 1517</script>
vendor: 1 bytes, line 1517
1517
1518<script type="text/javascript"> 1519 function getCookie(cname) { 1520 var name = cname + "="; 1521 var decodedCookie = decodeURIComponent(document.cookie); 1522 var ca = decodedCookie.split(';'); 1523 for(var i = 0; i <ca.length; i++) { 1524 var c = ca[i]; 1525 while (c.charAt(0) == ' ') { 1526 c = c.substring(1); 1527 } 1528 if (c.indexOf(name) == 0) { 1529 return c.substring(name.length, c.length); 1530 } 1531 } 1532 return null; 1533 } 1534 function enhancedEcommerceAddProduct(product) { 1535 if (product) 1536 ga('enhancedEcommerce.ec:addProduct', product); 1537 } 1538 1539 function enhancedEcommerceAddToCart(product) { 1540 if (product) { 1541 enhancedEcommerceAddProduct(product); 1542 ga('enhancedEcommerce.ec:setAction', 'add'); 1543 ga('enhancedEcommerce.send', 'event', 'UX', 'click', 'add to cart'); 1544 } 1545 } 1546 1547 function ecEventDispatch(productData) { 1548 if (productData) { 1549 enhancedEcommerceAddProduct(productData); 1550 ga('enhancedEcommerce.ec:setAction', 'click', {list: productData.list}); 1551 // Send click with an event, then send user to product page. 1552 ga('enhancedEcommerce.send', 'event', 'UX', 'click', 'Product'); 1553 } 1554 } 1555 1556 function toggleModal(target) { 1557 let templateId = target + '-template'; 1558 if (target === "#add-item-to-wishlist-modal" || target === "#create-new-wishlist-modal" || target === "#add-wishlist-templates") { 1559 templateId = "#wishlist-actions-template"; 1560 } else if (target === "#delete-wishlist-modal" || target === "#share-wishlist-modal" || target === '#share-lists-modal') { 1561 templateId = "#wishlist-popups-template"; 1562 } 1563 appendModalTemplate(target, templateId); 1564 if (target !== "#undefined-modal") { 1565 const activeModal = jQuery('.b-show-modal'), 1566 activeModalId = '#' + activeModal.attr('id'), 1567 targetSelector = $(target), 1568 targetModal = $(target + '.b-modal'); 1569 1570 if (activeModal.length && activeModalId !== target) { 1571 activeModal.trigger('b-modal-closed'); 1572 activeModal.removeClass('b-show-modal'); 1573 } 1574 1575 if (targetModal.hasClass('b-show-modal')) { 1576 targetSelector.trigger('b-modal-closed', [target]); 1577 } else { 1578 targetSelector.trigger('b-modal-opened', [target]); 1579 showModalContent(targetModal); 1580 } 1581 1582 if(window.BKT_GLOBALS.isSidePanelTheme && !window.BKT_GLOBALS.isKoboPopup && targetSelector.hasClass('side-panel-theme')) { 1583 const targetModalContent = targetModal.find('.b-modal-content'); 1584 if(targetSelector.hasClass('b-show-modal')) { 1585 targetModalContent.toggleClass('slide-side-panel'); 1586 setTimeout(function() { 1587 targetModal.toggleClass("b-show-modal"); 1588 }, 300) 1589 } else { 1590 targetModal.toggleClass("b-show-modal"); 1591 setTimeout(function() { 1592 targetModalContent.toggleClass('slide-side-panel'); 1593 }, 300) 1594 } 1595 $('.b-modal:not(.b-show-modal) .b-modal-content').removeClass('slide-side-panel'); 1596 } else { 1597 targetModal.toggleClass("b-show-modal"); 1598 } 1599 1600 lazyLoadInstance.update(); 1601 } 1602 } 1603 1604 function createModal(name, className) { 1605 if (className === undefined) className = ""; 1606 if (jQuery("#" + name + "").length == 0) { 1607 var modal = '<div id="' + name + '" class="b-modal dynamic-modal ' + className + '">\n' + 1608 '<div id="' + name + '-popup" class="b-modal-content">' + 1609 '<button class="b-close-button b-modal-close"><i class="icon-cross"></i></button>' + 1610 '<div id="' + name + '-container"><div class="loader-wrapper"><i class="icon-spinner3 loader"></i></div></div>' + 1611 '</div>' + 1612 '</div>'; 1613 jQuery("#footer").append(modal); 1614 } 1615 } 1616 1617 function windowOnClick(event) { 1618 var activeModal = jQuery('.b-show-modal'); 1619 if (activeModal[0] !== undefined && (event.target === activeModal[0] || event.target === jQuery('#paypal-terms-modal .overlay')[0]) && jQuery(activeModal[0]).find('.loader-wrapper').length === 0) { 1620 window.parent.jQuery('.b-modal-close').first().trigger('click'); 1621 } 1622 } 1623 1624 function showModalContent(target) { 1625 target.show(); 1626 target.find('.b-modal-content').show(); 1627 } 1628 1629 function openWishListDrawer() { 1630 appendModalTemplate(); 1631 var jNotificationContainer = jQuery("#product-wishlist-notification"); 1632 var jParentSelector = jQuery("#booktopia-notification-wrapper"); 1633 jParentSelector.find('#booktopia-notification > div').hide(); 1634 jNotificationContainer.show(); 1635 jParentSelector.show(); 1636 jQuery('.b-modal').hide(); 1637 jQuery('#wishlist-confirmation').hide(); 1638 showModalContent($('#add-item-to-wishlist-modal')); 1639 jQuery('#create-wishlist-form').trigger('reset'); 1640 jQuery('#add-item-to-wishlist-modal').trigger('b-modal-opened', ['#add-item-to-wishlist-modal']); 1641 setTimeout(function () { 1642 jParentSelector.addClass('active'); 1643 }, 20) 1644 } 1645 1646 1647 $(function () { 1648 $(document).on('b-modal-opened', '#add-item-to-wishlist-modal', function (e, target) { 1649 const form = $('#create-wishlist-form'); 1650 form.trigger('reset'); 1651 form.find('.input-error').remove(); 1652 form.find('.field').removeClass('error'); 1653 $.ajax({
1654 url: "/api/customer/wishlist?version=v1", 1655 method: "get", 1656 dataType: "json" 1657 }).done(function(response) { 1658 if(response.success) { 1659 const responseData = response && response.data ? response.data : null, 1660 wishListSelect = $('#wishlist-select'); 1661 if (responseData.length <= 1) { 1662 const label = wishListSelect.closest('.field').find('label'); 1663 wishListSelect.hide(); 1664 label.html('This item will be added to your Wish List (default)'); 1665 label.addClass('mb-0'); 1666 } else { 1667 let options = []; 1668 responseData.forEach(function (item) { 1669 const option = '<option value="' + item.uidPk + '">' + item.displayName + '</option>' 1670 options.push(option) 1671 }); 1672 wishListSelect.show(); 1673 wishListSelect.parents('.field').find('label').html('Select a list to add to'); 1674 wishListSelect.html(options); 1675 } 1676 } 1677 }).fail(function(response){ 1678 console.warn(response); 1679 }); 1680 }); 1681 1682 1683 jQuery(document).on('click', '.b-modal-close', function () { 1684 const activeModal = $('.b-show-modal'), 1685 modal = $(activeModal[0]); 1686 if (modal.find('.loader-wrapper').length === 0) { 1687 toggleModal('#' + modal.attr('id')); 1688 const bModal = $(this).parents('.b-modal') 1689 if(bModal.attr('id') !== 'gallery-modal') { 1690 if (bModal.hasClass('dynamic-modal') && !bModal.hasClass('google-preview')) { 1691 setTimeout(function () { 1692 bModal.remove(); 1693 }, 100) 1694 } 1695 } 1696 } 1697 }); 1698 window.addEventListener("click", windowOnClick); 1699 //------END MODAL-------- 1700 1701 jQuery(document).on('click', '#cancel-modal, .cancel-modal', function () { 1702 window.parent.jQuery('.b-modal-close').trigger('click'); 1703 }) 1704 jQuery("#reload-page").on('click', function () { 1705 parent.location.reload(); 1706 }) 1707 1708 var trigger = $('.b-trigger'); 1709 trigger.on('click', function(e) { 1710 if(trigger.data('target') === "donation") { 1711 e.preventDefault(); 1712 } 1713 }) 1714 jQuery(document).on('click', 'a[data-product-data]', function(){ 1715 if($(this).hasClass('cart-item')) return; 1716 var productData = jQuery(this).data('product-data'); 1717 if (productData) { 1718 const wo = window.google_object?window.google_object:null; 1719 productData.dimension27 = wo?wo.dimension27:''; 1720 productData.deliveryExpectation = getOccasionDeliveryExpectation(productData); 1721 dataLayer.push({ecommerce: null}); 1722 dataLayer.push({ 1723 'event': 'addToCart', 1724 'ecommerce': { 1725 'currencyCode': wo?wo.currency:'', 1726 'add': { 1727 'products': [productData] 1728 } 1729 } 1730 }) 1731 } 1732 }) 1733 1734 jQuery(document).on('click', '[data-promo-data]', function() { 1735 const wo = window.google_object?window.google_object:null, promoData = jQuery(this).data('promo-data'); 1736 if (promoData) { 1737 dataLayer.push({ ecommerce: null }); 1738 dataLayer.push({ 1739 'event': 'promotionClick', 1740 'dimension5': wo?wo.dimension5:'', 1741 'dimension6': wo?wo.dimension6:'', 1742 'ecommerce': { 1743 'promoClick': { 1744 'promotions': [ 1745 promoData 1746 ] 1747 } 1748 } 1749 }); 1750 } 1751 }); 1752 1753 $(window).on('beforeunload', function(){ 1754 if(loadedProducts.length > 0) { 1755 const wo = window.google_object?window.google_object:null; 1756 dataLayer.push({ ecommerce: null }); 1757 dataLayer.push({ 1758 'event': 'productImpression',
1759 'dimension5': wo?wo.dimension5:'', 1760 'dimension6': wo?wo.dimension6:'', 1761 'ecommerce': { 1762 'currencyCode': wo?wo.currency:'', 1763 'products': loadedProducts 1764 } 1765 }); 1766 loadedProducts = []; 1767 } 1768 }); 1769 1770 1771 }); 1772 1773 function appendModalTemplate(contentId, templateId) { 1774 const nonFooterModals = ["#zookal-study-modal","#paypal-terms-modal","#flat-rate-modal","#share-lists-modal","#etext-access-modal", "#free-shipping-modal"] 1775 if(window.BKT_GLOBALS.isMobileSession && !nonFooterModals.includes(contentId)) { 1776 const modalTemplateContainer = jQuery("#booktopia-notification"); 1777 if (modalTemplateContainer.children().length === 1) { 1778 modalTemplateContainer.append(jQuery("#footer-modal-template").html()); 1779 } 1780 } 1781 else { 1782 var desktopTemplateParent = jQuery(templateId).parent(); 1783 if(templateId === '#gallery-modal-template') desktopTemplateParent = jQuery('body'); 1784 var desktopTemplate = jQuery(templateId); 1785 var modalContent = jQuery(contentId); 1786 if (navigator.userAgent.indexOf("MSIE ") > -1 || navigator.userAgent.indexOf("Trident/") > -1) { 1787 desktopTemplate.show(); 1788 } 1789 else if (modalContent.length === 0) { 1790 desktopTemplateParent.append(desktopTemplate.html()); 1791 desktopTemplate.remove(); 1792 1793 if(contentId === "#flat-rate-modal") { 1794 getShippingFeeTable(); 1795 } 1796 } 1797 } 1798 } 1799 1800 function appendModalTemplateAfter(templateId, elementAfter) { 1801 const sharedTemplateId = $(templateId); 1802 if (typeof elementAfter !== 'undefined' && $(elementAfter).length > 0 && sharedTemplateId.length === 1) { 1803 $(sharedTemplateId.html()).insertAfter(elementAfter); 1804 } 1805 } 1806 1807 function addProductToWishListPopup() { 1808 var timeout = 0; 1809 if($('#product-browse').length > 0) { 1810 $('html, body').scrollTop($('[id*=' + $('#product-hidden-isbn').val() + ']').offset().top - 60); 1811 timeout = 300; 1812 } 1813 1814 setTimeout(function() { 1815 toggleModal("#add-item-to-wishlist-modal"); 1816 }, timeout); 1817 } 1818 function getOccasionDeliveryExpectation(productData) { 1819 return willDeliverBeforeOccasion === null ? null : (willDeliverBeforeOccasion && (productData.dimension1 ? productData.dimension1.trim() : false) === 'In-Stock'); 1820 } 1821 //Global variable for occasion delivery GA4 1822 willDeliverBeforeOccasion = null; 1823 $(function(){ 1824 $(document).on('occasionDeliveryEstimate', function(e, willArriveBeforeCutoff){ 1825 // set value for this global variable 1826 willDeliverBeforeOccasion = willArriveBeforeCutoff; 1827 }) 1828 }) 1829 1830 function getShippingFeeTable() { 1831 $.ajax({ 1832 method: "GET", 1833 url: '/news240.html' 1834 }).done(function (result) { 1835 const content = $('<div />').append(result).find('#content').html(); 1836 $('.shipping-fee-table-container').html(content); 1837 }); 1838 } 1839</script>
1839
1839<script type="text/javascript"> 1840 document.addEventListener("DOMContentLoaded", function() { 1841 $('body').addClass('side-panel-theme-active'); 1842 window.BKT_GLOBALS.isSidePanelTheme = true; 1843 }); 1844 1845 jQuery(document).on('header-version-b-loaded',function(){ 1846 jQuery('#top-nav #shopping-cart-summary').appendTo(jQuery('.main-content .content-right-section')); 1847 jQuery('#fiction-sub').appendTo(jQuery('#navlink-fiction-sub')); 1848 jQuery('#non-fiction-sub').appendTo(jQuery('#navlink-non-fiction-sub')); 1849 jQuery('#kids-sub').appendTo(jQuery('.navlink-kids-sub')); 1850 jQuery('#schools-sub').appendTo(jQuery('#navlink-schools-sub')); 1851 }); 1852 1853 function isTouchDevice() { 1854 // Workaround as `Modernizr.touch == false` on new Windows Phone and true on some Firefox desktop versions. 1855 // Also cover Opera Mini for Android 4.0. 1856 return isModernMobileUserAgent(); 1857 } 1858 1859 // Including "Windows Phone OS 7.5" and "Windows Phone 8.0" 1860 function isModernMobileUserAgent() { 1861 var ua = navigator.userAgent; 1862 return (ua.match(/(iPhone|iPod|iPad)/) || ua.match(/Android/) || ua.match(/BlackBerry/) || ua.match(/Opera Mini/) || ua.match(/Windows Phone/) ? true : false); 1863 } 1864 1865 function isOldIE() { 1866 var oldIE = (navigator.userAgent.match(/msie/i)) && parseInt(j
1866Query.browser.version, 10) < 9; 1867 return oldIE; 1868 } 1869 1870 // Toggle the floating navigation bar and quicklinks 1871 function togglePersistentNavBar() { 1872 var persistentNavBar = jQuery('.persistent-nav-bar'); 1873 if (persistentNavBar.length) { 1874 var showNavBar = jQuery(window).scrollTop() > 210; 1875 if (showNavBar) { 1876 persistentNavBar.show(); 1877 jQuery(document).trigger('persistentNavBar.shown'); 1878 if (!jQuery('.persistent-nav-bar #shopping-cart-summary').length && !jQuery('.persistent-nav-bar #searchform').length) { 1879 jQuery('#shopping-cart-summary').appendTo(jQuery('.persistent-cart-summary')); 1880 jQuery('#header #searchform').appendTo(jQuery('.persistent-search-box')); 1881 } 1882 if (jQuery('.autocomplete-suggestions').is(':visible')) { 1883 jQuery('.autocomplete-suggestions').hide(); 1884 } 1885 } else { 1886 persistentNavBar.hide(); 1887 jQuery(document).trigger('persistentNavBar.hidden'); 1888 if (!jQuery('#top-nav #shopping-cart-summary').length && !jQuery('#header #searchform').length) { 1889 if (jQuery('body').hasClass("header-version-b")) { 1890 jQuery('.persistent-nav-bar #shopping-cart-summary').appendTo(jQuery('.main-content .content-right-section')); 1891 } else { 1892 jQuery('.persistent-nav-bar #shopping-cart-summary').insertAfter('#top-nav .content > ul.header-version-default-item'); 1893 } 1894 jQuery('.persistent-nav-bar #searchform').appendTo(jQuery('#header #search')); 1895 } 1896 } 1897 } 1898 } 1899 1900 function togglePersistentNavQuicklinks(quicklinksButton) { 1901 var quicklinkList = jQuery(quicklinksButton).siblings(".persistent-quicklink-list"); 1902 if (quicklinkList.hasClass("persistent-quicklink-list-open")) { 1903 quicklinkList.removeClass("persistent-quicklink-list-open"); 1904 quicklinkList.hide(); 1905 } else { 1906 quicklinkList.addClass("persistent-quicklink-list-open"); 1907 quicklinkList.show(); 1908 } 1909 } 1910 // below function called from CMS, init 'book of the month' img 1911 function initBookOfTheMonth(productLink, productImgURL, altText) { 1912 var bookOfTheMonthHtml = "<a href='" + productLink + "'><img class='book-of-the-month-img lazyload block' src='//images.booktopia.com.au/loading-cover-150.gif' data-src='" + productImgURL + "'alt='" + altText + "'></a>"; 1913 jQuery("#book-of-the-month-section").append(bookOfTheMonthHtml); 1914 var middleTile = jQuery("#banner .banner-middle-section .tile"); 1915 if (middleTile.length == 1) { 1916 middleTile.find("img").css("max-height", "260px"); 1917 } 1918 lazyLoadInstance.update(); 1919 1920 }; 1921</script>
1921 1922
1923<script type="text/javascript" src="/template-resources/js/slick.min.js"></script>
vendor: 1 bytes, line 1923
1923
1924<script type="text/javascript"> 1925 // Excluding (true, 4) which is handled by initAddToCart (above) 1926 // and "product-carousel-priced-5" which is used for the No Products carousel 1927 function initCarousels(numResults, productType, parentSelector) { 1928 if (!parentSelector || parentSelector === "body") { 1929 if (numResults > 0) { 1930 initCarousel("small", 5, productType, parentSelector); // For categoryTemplateHead 1931 initCarousel("priced", 5, productType, parentSelector); // For categoryTemplate, categoryLandingPageTemplate, holidayHaven, clickFrenzy 1932 initCarousel("priced", 7, productType, parentSelector); // For /books-online/bargains/c9-p1.html 1933 initCarousel("", 4, productType, parentSelector); 1934 initCarousel("", 5, productType, parentSelector); // For productTemplateHead, productUnavailableTemplate 1935 initCarousel("", 7, productType, parentSelector); // For baum 1936 initCarousel("grid", 5, productType, parentSelector); 1937 } else 1938 initCarousel("priced", 5, productType, parentSelector); // For searchResultsDescription (No Results page) 1939 } 1940 } 1941 1942 // Size carousels and set animate style for the overlaid price on the main carousel. 1943 // Returns the number of carousel containers that needed initialising 1944 function initCarousel(style, scroll, productType, parentSelector) { 1945 if (!parentSelector) parentSelector = "body"; 1946 var carouselSelector = null, options = {speed: 500, slidesToShow: scroll, slidesToScroll: scroll, infinite: false}; 1947 var initCount = 0; 1948 1949 // Get common options for given carousel type 1950 if (style === "small") { // scroll will be 4 or 5 1951 carouselSelector = ".product-carousel-small-5"; 1952 } else if (style === "priced") { 1953 carouselSelector = ".product-carousel-priced-" + scroll; 1954 } else if (style === "grid") { 1955 carouselSelector = ".product-carousel-grid-6"; 1956 options['slidesToShow'] = 6 1957 options['slidesToScroll'] = 5 1958 options['variableWidth'] = true 1959 } else { 1960 options['responsive'] = [{ 1961 breakpoint: 1150,// normal number of products up until 1150 1962 settings: { 1963 slidesToShow: scroll, 1964 slidesToScroll: scroll, 1965 } 1966 },{ 1967 breakpoint: 3000,// setting this more than 1200 so the break point is never reached 1968 settings: { 1969 slidesToShow: scroll + 1, 1970 slidesToScroll: scroll + 1, 1971 } 1972 }] 1973 carouselSelector = ".product-carousel-" + scroll; 1974 } 1975 options['prevArrow'] = '<span class="slick-prev icon-arrow-left10" data-mh-ea="Arrow click" data-mh-el="Left"></span>'; 1976 options['nextArrow'] = '<span class="slick-next icon-uniE89B" data-mh-ea="Arrow click" data-mh-el="Right"></span>'; 1977 1978 var listIds = new Array(); 1979 var categoryCode = null; 1980 var batch = true; 1981 jQuery(parentSelector).find(carouselSelector).each(function (index, element) { 1982 var jqContainer = jQuery(this); 1983 if (jqContainer.attr('data-batch') === "no") { 1984 batch = false 1985 } 1986 if (jqContainer.attr('data-dynamic') === "ajax") { 1987 // For AJAX carousels, <li> items must be appended to DOM before jcarousel() is called 1988 if (jqContainer.find("na").length == 0) { 1989 categoryCode = jqContainer.attr('data-category'); 1990 if (batch) { 1991 listIds.push(jqContainer.attr('data-list')); 1992 } else { 1993 let productListUrl = '/api/product/productsInList?version=v1&productTypeId=' + productType + '&listId=' + jqContainer.attr('data-list'); 1994 if(categoryCode) productListUrl += '&categoryCode=' + categoryCode; 1995 $.ajax({ 1996 url: productListUrl, 1997 dataType: "json" 1998 }).done(function(response) { 1999 const listProducts = response.data; 2000 setCarouselProducts(listProducts, jqContainer, options, parentSelector); 2001 }).fail(function(response) { 2002 console.warn(response); 2003 }); 2004 initCount++; 2005 } 2006 } 2007 } else { 2008 if (initCarouselInstanceFromDOM(jqContainer, options, parentSelector)) 2009 initCount++; 2010 } 2011 }); 2012 2013 if (batch && listIds.length > 0) { 2014 var l = 0; 2015 let batchListUrl = '/api/product/productsInListBatch?version=v1&productTypeId=' + productType + '&listIds=' + listIds;
2016 if(categoryCode) batchListUrl += '&categoryCode=' + categoryCode; 2017 $.ajax({ 2018 url: batchListUrl, 2019 dataType: "json" 2020 }).done(function(response) { 2021 const listOfLists = response.data; 2022 jQuery(parentSelector).find(carouselSelector).each(function (index, element) { 2023 var jqContainer = jQuery(this); 2024 if (jqContainer.attr('data-dynamic') === "ajax" && l < listOfLists.length) { 2025 setCarouselProducts(listOfLists[l], jqContainer, options, parentSelector); 2026 initCount++; 2027 l++; 2028 } 2029 }); 2030 if(window.BKT_GLOBALS.isKeyboardAccessible) { 2031 initAccessibleCarousel(parentSelector); 2032 } 2033 }).fail(function(response){ 2034 console.warn(response); 2035 }); 2036 } 2037 return initCount; 2038 } 2039 2040 // Get/set memory with template html 2041 function substituteFromTemplate(selector, vars) { 2042 if (!parent.cache) 2043 parent.cache = {}; 2044 if (!parent.cache[selector]) { 2045 var jTemplate = jQuery(selector); 2046 if (jTemplate.length === 0) { 2047 if (window.console && console.warn) 2048 console.warn("Template not found: " + selector); 2049 return ""; 2050 } 2051 var html = jTemplate.html().trim(); 2052 if (!html || html === "") { 2053 if (window.console && console.warn) 2054 console.warn("Template empty: " + selector); 2055 return ""; 2056 } 2057 parent.cache[selector] = html; 2058 } 2059 return substitute(parent.cache[selector], vars); 2060 } 2061 2062 // Simple template substitution. If array passed in, assume pattern has format "Var1: {0} Var2: {1}". 2063 // If object passed in, assume pattern has Velocity-style format "Var1: ${var1} Var2: ${var2}". 2064 function substitute(pattern, vars) { 2065 var substitution; 2066 if (!vars) 2067 return pattern; 2068 else if (jQuery.isArray(vars)) { 2069 return pattern.replace(/{([0-9]+)}/g, function (match, key, value) { 2070 substitution = vars[key]; 2071 return (substitution ? substitution : ""); 2072 }); 2073 } else { 2074 return pattern.replace(/\${([A-Za-z0-9\.]+)}/g, function (match, key, value) { 2075 substitution = vars[key]; 2076 return (substitution ? substitution : ""); 2077 }); 2078 } 2079 } 2080 2081 function setCarouselProducts(listProducts, jqContainer, options, parentSelector) { 2082 var fullTemplate = jqContainer.attr('data-details') === "full"; 2083 var isGridCarousel = jqContainer.hasClass('product-carousel-grid-6'); 2084 if (listProducts && listProducts.length > 0) { 2085 for (var i in listProducts) { 2086 if (listProducts[i] != null) { 2087 var itemHtml = carouselComposeItemHTML(listProducts[i], fullTemplate, isGridCarousel, i); 2088 jqContainer.find('.jcarousel-skin-booktopia').append('<li>' + itemHtml + '</li>'); 2089 } 2090 } 2091 options['lazyLoad'] = 'ondemand'; 2092 initCarouselInstanceFromDOM(jqContainer, options, parentSelector); 2093 //update lazy loading once the carousel is loaded in DOM 2094 lazyLoadInstance.update(); 2095 if (isTouchDevice()) { 2096 jQuery(parentSelector).find(".product-carousel-7 .jcarousel-skin-booktopia .product .sale-price, .product-carousel-small-5 .jcarousel-skin-booktopia .product .sale-price, .product-carousel-grid-6 .jcarousel-skin-booktopia .product .sale-price").animate({"opacity": 1.0}, 300); 2097 jQuery(parentSelector).find(".button").animate({"opacity": 1.0}, 300); 2098 } 2099 // //update the delivery icon for dynamic carousel 2100 if(localStorage.getItem('inStockDeliveryForPostcode') === "1") 2101 displayDeliveryIcon(); 2102 } else 2103 jqContainer.hide(); 2104 } 2105 2106 // Initialise a specific carousel
2107 function initCarouselInstanceFromDOM(jqContainer, options, parentSelector) { 2108 var instanceOptions = carouselGetInstanceOptions(jqContainer, options); 2109 instanceOptions['_parentSelector'] = parentSelector; 2110 if (instanceOptions['visibleSize'] > 0 || instanceOptions['invisibleSize'] > 0) { 2111 var carouselRoot = jqContainer.find(".jcarousel-skin-booktopia"); 2112 if (carouselRoot.length > 0) { 2113 carouselRoot.slick(instanceOptions) 2114 // Add numbers to carousel images, similar to Bestsellers carousel 2115 try { 2116 if (jqContainer.parent().hasClass("carousel-grid-1-4-layout") && jqContainer.hasClass("product-rankings")) { 2117 // E.g. Carousel style used on eBook Fiction landing page 2118 jqContainer.find(".slick-slide").each(function (iCounter) { 2119 if (!jQuery(this).find(".ranking").length) { 2120 var iRanking = iCounter + 1; 2121 jQuery(this).find("div.image").append('<span class="ranking">' + iRanking + '</span>'); 2122 } 2123 }); 2124 } 2125 } catch (e) {} 2126 return true; 2127 } else 2128 return false; 2129 } else { 2130 if (window.console && console.warn) 2131 console.warn("Carousel data not found: " + parentSelector + " > " + jqContainer.attr('id') + " " + instanceOptions['size'] + " " + instanceOptions['visibleSize'] + " " + instanceOptions['invisibleSize']); 2132 return false; 2133 } 2134 } 2135 2136 // Inspect a specific carousel to count the number of items to be added to it 2137 function carouselGetInstanceOptions(jqContainer, options) { 2138 var instanceOptions = jQuery.extend(true, {}, options); // clone 2139 var dynamic = false; 2140 var visibleSize = 0; 2141 var invisibleSize = 0; 2142 2143 try { 2144 dynamic = jqContainer.attr("data-dynamic") || false; 2145 if ("domUpdate" == dynamic) { 2146 invisibleSize = jqContainer.find(".image img[src='']").parent().parent().length; // product.image count 2147 visibleSize = jqContainer.find("li").length - invisibleSize; 2148 } else { 2149 invisibleSize = jqContainer.find("na").length; 2150 visibleSize = jqContainer.find("li").length; // static/added carousel items 2151 } 2152 } catch (e) { 2153 } 2154 instanceOptions['visibleSize'] = visibleSize; 2155 instanceOptions['invisibleSize'] = invisibleSize; 2156 return instanceOptions; 2157 } 2158 2159 //Generate stars sprite Y position from rounded rating (dynamic carousel helper) 2160 function getStarsSpriteY(rating, imageOffset) { 2161 var r = Number(rating); 2162 if (r === NaN || r <= 0.0) 2163 return -200; 2164 return -36.0 * rating + 2 + imageOffset; 2165 } 2166 2167 // Item HTML creation helper 2168 function carouselComposeItemHTML(vars, fullTemplate, isGridCarousel, index) { 2169 // Alt text should NOT display as tooltips (that's what title is for), this was only fixed in IE8 2170 if (!vars.altText || isOldIE()) 2171 vars.altText = ""; 2172 if (vars.formattedDateIfInFuture == "null" || typeof vars.formattedDateIfInFuture === "undefined") { 2173 vars.formattedDateIfInFuture = ''; 2174 } 2175 // Replaces image URL width parameter to 200 and 100 for grid carousels 2176 if (isGridCarousel && index % 5 == 0) { 2177 vars.imageUrl = vars.imageUrl.replace("/150/", "/200/"); 2178 } else { 2179 vars.imageUrl = vars.imageUrl.replace("/150/", "/110/"); 2180 } 2181 vars.productTypeTagClass = getProductTypeTagClass(vars.binding); 2182 vars.rating = vars.rating || 0.0; 2183 vars.starsSpriteY = getStarsSpriteY(vars.rating, 0); 2184 // ISBN and CODE can be used interchangeablely but template is using: data-code="${isbn}" 2185 if (vars.code && !vars.isbn) { 2186 vars.isbn = vars.code; 2187 } 2188 var itemHtml = substituteFromTemplate((fullTemplate ? "#carousel-item-buy-now-full-template" : "#carousel-item-buy-now-s
2188hort-template"), vars, false); 2189 if (itemHtml) { 2190 if (document.getElementById('ec_enabled') && document.getElementById('ec_enabled').getAttribute('content') == 'true') { 2191 var ecData = jQuery("<div></div>").append(itemHtml), 2192 buyButton = ecData.find(".buy-button > a"), 2193 enhancedEcommerceData = { 2194 'id': vars.uidPk.toString(), 2195 'name': vars.displayName, 2196 'category': buyButton.data('category'), 2197 'brand': vars.altText.split(' - ')[1], 2198 'variant': vars.defaultSupplierVitalSource ? "eText" : vars.fmtBinding, 2199 'price': vars.fmtSalePrice.replace('$', ''), 2200 'quantity': 1, 2201 'dimension1': vars.hasStockAvailable ? 'In-Stock' : 'Not in Stock', 2202 'list': 'Dynamic Carousel', 2203 'position': index 2204 }; 2205 buyButton.attr('data-product-data', JSON.stringify(enhancedEcommerceData)); 2206 itemHtml = ecData.html(); 2207 } 2208 itemHtml = itemHtml.replace('data-src=""', 'data-src="' + vars.imageUrl + '"').replace('data-ll-status', 'data'); 2209 if (vars.hasStockAvailable && vars.binding !== "MAG") { 2210 itemHtml = itemHtml.replace('<img', '<span class="special-occasion-icon" title="This item will arrive by Christmas"></span><img'); 2211 itemHtml = itemHtml.replace('class="delivery">', 'class="delivery"><div class="in-stock"></div>'); 2212 } 2213 if (vars.fmtBinding === "eBook") { 2214 itemHtml = itemHtml.replace('buy-now button', 'buy-now ebook button'); 2215 itemHtml = itemHtml.replace('>BUY NOW<', '>BUY EBOOK<'); 2216 itemHtml = itemHtml.replace('icon-cart', 'icon-download'); 2217 } else if (vars.availability == "PREORDER") { 2218 itemHtml = itemHtml.replace('buy-now button', 'pre-order button'); 2219 itemHtml = itemHtml.replace('>BUY NOW<', '>PREORDER<'); 2220 } else if (vars.availability == "BACKORDER") { 2221 itemHtml = itemHtml.replace('buy-now button', 'back-order button'); 2222 itemHtml = itemHtml.replace('>BUY NOW<', '>BACKORDER<'); 2223 } 2224 if (vars.bundledProduct || vars.signed || vars.displayProductBadge || vars.productTypeTagClass) { 2225 var productBadge = ""; 2226 if (vars.bundledProduct) 2227 productBadge += '<span class="bundle-badge" title="This product belongs to a bundle"></span>'; 2228 if (vars.signed) 2229 productBadge += '<span class="signed-copy-sticker"></span>'; 2230 if (vars.displayProductBadge) {
2231 var badgeBgColor = vars.badgeBackgroundColor; 2232 if (!badgeBgColor || badgeBgColor == "") { 2233 badgeBgColor = "#009933"; 2234 } 2235 productBadge += '<div class="campaign-badge-wrapper"><div style="background-color: ' + badgeBgColor + '" class="campaign-badge-background"><div class="campaign-badge-text" style="color: ' + badgeBgColor + ';">' + vars.displayProductBadge + '</div></div></div>' 2236 var campaignBorder = '<div class="image" style="outline: 1px solid rgba(255,255,255,0.5); box-shadow: 0 0 0 1px ' + badgeBgColor + ';"'; 2237 itemHtml = itemHtml.replace('<div class="image"', campaignBorder); 2238 } 2239 if (vars.productTypeTagClass) 2240 productBadge += '<div class="' + vars.productTypeTagClass + '"></div>'; 2241 itemHtml = itemHtml.replace('<div class="product-badges-empty">', '<div class="product-badges">' + productBadge); 2242 } 2243 if (vars.adultCover) { 2244 itemHtml = itemHtml.replace('<img class="lazyload "', '<img class="lazyload blur"'); // Other browsers 2245 } 2246 } 2247 return itemHtml; 2248 } 2249 2250 // Product type identifier overlaid on product images (dynamic carousel helper) 2251 function getProductTypeTagClass(binding) { 2252 if (!binding || binding === "") 2253 return ""; 2254 2255 var tagClass = ""; 2256 if (binding === "DG_EPUB_PDF" || binding === "DG_PDF" || binding === "DG_EPUB") 2257 tagClass = "product-type-tag-ebook"; 2258 else if (binding === "AA" || binding === "RI" || binding === "AZ" || binding === "AJ" || binding === "C3" || binding === "CD" || binding === "CX" || binding === "DA" || binding === "M3" || binding === "MP3") 2259 tagClass = "product-type-tag-audio"; 2260 else if (binding === "DR" || binding === "CR" || binding === "DH" || binding === "DZ") 2261 tagClass = "product-type-tag-cd-dvd"; 2262 else if (binding === "BLR") 2263 tagClass = "product-type-tag-blu-ray"; 2264 else if (binding === "DAB") 2265 tagClass = "product-type-tag-audio-digital"; 2266 return tagClass; 2267 } 2268</script>
2268<script type="text/javascript" src="/wro/6199/booktopia.desktop.js?v=dev-20260911152026"></script>
2268 2269 2270
2270<script type="text/javascript"> 2271 var _gaq = _gaq || []; 2272 _gaq.push(['_setAccount', "UA-413837-1"]); 2273 _gaq.push(['_trackPageview']); 2274 _gaq.push(['_setCustomVar', 1, 'Site', "PC", 2]); 2275 (function() { 2276 var ga = document.createElement('script'); 2277 ga.type = 'text/javascript'; 2278 ga.async = true; 2279 ga.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'stats.g.doubleclick.net/dc.js'; 2280 var s = document.getElementsByTagName('script')[0]; 2281 s.parentNode.insertBefore(ga, s); 2282 })(); 2283 </script>
2283 2284
2284<script>
vendor: 344 bytes, lines 2284-2289
2284 2285 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 2286 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 2287 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 2288 })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 2289 ga('create', "
2289UA-413837-3
vendor: 46 bytes, lines 2289-2291
2289", 'auto'); 2290 ga('send', 'pageview'); 2291
2291ga('create', 'UA-413837-4', 'auto', 'enhancedEcommerce'); 2292 ga('enhancedEcommerce.require', 'ec'); 2293 ga('enhancedEcommerce.set', 'currencyCode', 'AUD'); 2294 ga('create', "UA-413837-1", 'auto', 'MHEnhancedEcommerce'); 2295 ga('MHEnhancedEcommerce.require', 'ec'); 2296 ga('MHEnhancedEcommerce.set', 'currencyCode', 'AUD'); 2297 var ecPageViewSent; 2298 window.onbeforeunload = function(){ 2299 if(ecPageViewSent !== true) { 2300 ga('enhancedEcommerce.send', 'pageview'); 2301 ga('MHEnhancedEcommerce.send', 'pageview'); 2302 return null; 2303 } 2304 }; 2305 </script>
vendor: 1 bytes, line 2305
2305
2306<script type="text/javascript" src="/Ns7aBMIv/init.js" async></script>
vendor: 1 bytes, line 2306
2306
2307<script type="text/javascript"> 2308 var advertTrackerRaw = localStorage.getItem('advertTracker') 2309 var advertTracker = JSON.parse(advertTrackerRaw) 2310 if(advertTrackerRaw && window.location.pathname != advertTracker.pathname){ 2311 localStorage.removeItem('advertTracker') 2312 } 2313</script>
2313 2314 2315
2315<script type="text/javascript"> 2316 (function (a, b, c, d, e, f, g) { 2317 e['ire_o'] = c; 2318 e[c] = e[c] || function () { 2319 (e[c].a = e[c].a || []).push(arguments) 2320 }; 2321 f = d.createElement(b); 2322 g = d.getElementsByTagName(b)[0]; 2323 f.async = 1; 2324 f.src = a; 2325 g.parentNode.insertBefore(f, g); 2326 })('//d.impactradius-event.com/A1393524-e137-4555-83c9-d01ef05ce3901.js', 'script', 'ire', document, window); 2327 </script>
2327 2328 2329
2329<script> 2330 window.addEventListener('load', function() { 2331 lazyLoadScript('https://apis.google.com/js/platform.js?onload=initGoogleAuth', function(){}); 2332 }); 2333 </script>
2333 2334
2335<script type="text/javascript"> 2336 var advertTrackerRaw = localStorage.getItem('advertTracker') 2337 var advertTracker = JSON.parse(advertTrackerRaw) 2338 if(advertTrackerRaw && window.location.pathname != advertTracker.pathname){ 2339 localStorage.removeItem('advertTracker') 2340 } 2341</script>
2341 2342 <div id="freshbot-initiator-mock" style="bottom:30px; right:30px; display: none;"> 2343 <div id="chat-bubble"> 2344 <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 30 30"><path d="M13.5 0h-9C2.016 0 0 1.99 0 4.44v7.565A1 1 0 001.008 13H13.5c2.484 0 4.5-1.99 4.5-4.44V4.44C18 1.99 15.984 0 13.5 0zm-3.24 9.52H3.744a.87.87 0 01-.864-.853.87.87 0 01.864-.853h6.516a.87.87 0 01.864.853.87.87 0 01-.864.852zm3.996-4.228H3.744a.87.87 0 01-.864-.852.87.87 0 01.864-.853h10.512a.87.87 0 01.864.853c0 .462-.36.852-.864.852z" fill="#fff" fill-rule="nonzero"/></svg> 2345 </div> 2346 </div> 2347
2347<script> 2348 window.addEventListener('load', function() { 2349 if(!isBotUserAgent()) { 2350 isFClicked = false; 2351 var freshBotCookie = getCookie('initiateFreshBotOnLoad'); 2352 if (freshBotCookie === 'true') { 2353 initiateFreshService(freshBotCookie); 2354 return true; 2355 } 2356 $('#freshbot-initiator-mock').show(); 2357 $('#freshbot-initiator-mock').one('click', function () { 2358 isFClicked = true; 2359 initiateFreshService(freshBotCookie); 2360 }); 2361 } 2362 }); 2363 2364 function initFcWidget(cookie = null) { 2365 window.fcWidget.init({ 2366 token: "650540ae-cdd9-4b5e-9933-1035f1ff2c4e", 2367 host: "https://wchat.freshchat.com", 2368 tags:["chatbot"] 2369 }); 2370 2371 window.fcWidget.on('widget:loaded', function() { 2372 if (isFClicked) { 2373 $('#freshbot-initiator-mock').hide(); 2374 window.fcWidget.open(); 2375 isFClicked = false; 2376 } 2377 }) 2378 window.fcWidget.on('widget:opened', function() { 2379 if(cookie === null) { 2380 setCookie('initiateFreshBotOnLoad', true, 1); 2381 } 2382 }); 2383 } 2384 2385 function initiateFreshService(cookie){ 2386 var i = document, t = 'Freshchat-js-sdk', e; 2387 i.getElementById(t) ? 2388 initFcWidget(cookie) : ((e = i.createElement("script")).id = t, e.async = !0, e.src = "https://wchat.freshchat.com/js/widget.js", e.onload = function(){ 2389 initFcWidget(cookie); 2390 }, i.head.appendChild(e)) 2391 } 2392 </script>
2392 2393 2394
2395<script> 2396 window.insider_object= { 2397 "page": { 2398 "type": "Books" 2399 }, 2400 }; 2401 </script>
2401 2402 2403 2404
2405<script> 2406 var breadcrumbs = $('#breadcrumbs'), 2407 nav = "books", 2408 category = "", 2409 genre = "", 2410 subGenre = ""; 2411 if(breadcrumbs.length > 0){ 2412 let crumbs = breadcrumbs.text().split('>'); 2413 category = crumbs.shift().trim(); 2414 genre = crumbs.length > 0 ? crumbs[0].trim() : ""; 2415 subGenre = crumbs.length > 1 ? crumbs[crumbs.length - 1].trim(): ""; 2416 } else if (nav === "Gift Certificates") { 2417 category = nav; 2418 } 2419 window.google_object = { 2420 "page": { 2421 "type": "books" }, 2422 currency: "AUD", 2423 dimension27: "CC|PayPal|Afterpay|Bank Transfer|Visa Checkout", 2424 dimension5: getCookie('gaUniqueIdentifier') || "", 2425 dimension6: getCookie('customerUid') || "", 2426 dimension12: getCookie('__utmz')?getCookie('__utmz').indexOf('emarsys') >= -1 : "", dimension13: getCookie('insdrSubsId') || "", dimension14: "", dimension15: getCookie('irclickid') || "", dimension16: category, 2427 dimension17: genre, 2428 dimension18: subGenre, 2429 } 2430</script>
vendor: 1 bytes, line 2430
2430
2431<script> 2432 var lazyLoadInstance = new LazyLoad({ 2433 elements_selector: ".lazyload", 2434 callback_loaded: function(el){ 2435 var promoItem = $(el).parents('[data-promo-data]'); 2436 if(promoItem.length) { 2437 handlePromoImpression(promoItem.data('promo-data')); 2438 return; 2439 } 2440 2441 const elem = $(el), 2442 wishlistItem = elem.parents('.wishlist-item'); 2443 2444 let productData; 2445 2446 const searchAndCarouselItem = elem.parents('.product'), 2447 bestsellingItem = elem.parents('.bestselling-product'); 2448 if(wishlistItem.length > 0){ 2449 productData = wishlistItem.find('.wishlist-unit-cost > a').data('product-data'); 2450 }else if (searchAndCarouselItem.length > 0){ 2451 productData = searchAndCarouselItem.find('.buy-button > a').data('product-data'); 2452 }else if (bestsellingItem.length > 0){ 2453 productData = bestsellingItem.data('product-data'); 2454 } 2455 2456 if(productData){ 2457 const wo = window.google_object ? window.google_object : null; 2458 let extendedProductData = { 2459 deliveryExpectation: getOccasionDeliveryExpectation(productData) 2460 }, 2461 paymentType = {dimension27: wo?wo.dimension27:''}; 2462 Object.assign(extendedProductData, productData, paymentType); 2463 var MHExtendedProductData = {}, 2464 additionalParams = { 2465 currency: wo?wo.currency:'', 2466 dimension5: wo?wo.dimension5:'', 2467 dimension6: wo?wo.dimension6:'', 2468 dimension12: wo?wo.dimension12:'', 2469 dimension13: wo?wo.dimension13:'', 2470 dimension14: wo?wo.dimension14:'', 2471 dimension27: wo?wo.dimension27:'', 2472 "eventCategory": "Enhanced Ecommerce", 2473 "eventAction": "Product Impressions", 2474 "eventLabel": "", 2475 deliveryExpectation: getOccasionDeliveryExpectation(productData) 2476 }; 2477 Object.assign(MHExtendedProductData, productData, additionalParams); 2478 if(isCustomerSessionLoaded) { 2479 extendedProductData.dimension2 = sessionDataAccountType; 2480 ga('enhancedEcommerce.ec:addImpression', MHExtendedProductData); 2481 ga('MHEnhancedEcommerce.ec:addImpression', MHExtendedProductData); 2482 MHLoadedCount++; } else { 2483 MHProductQueue.push(MHExtendedProductData); 2484 } 2485 if(MHLoadedCount > 9) { 2486 ga('enhancedEcommerce.send', 'event', 'Scroll Tracking', 'scroll', window.location.href); 2487 ga('MHEnhancedEcommerce.send', 'event', 'Scroll Tracking', 'scroll', window.location.href); 2488 MHLoadedCount = 0; 2489 } 2490 2491 // Add product data to data layer 2492 loadedProducts.push(extendedProductData); 2493 if(loadedProducts.length > 9){ 2494 if(!isCustomerSessionLoaded) { 2495 productEventQueue.push(loadedProducts); 2496 loadedProducts = []; 2497 return; 2498 } 2499 addProductImpressions(loadedProducts); 2500 loadedProducts = []; 2501 } 2502 } 2503 } 2504 }); 2505 2506 let loadedProducts = []; 2507 let MHLoadedCount = 0; 2508 let MHProductQueue = []; 2509 2510 let productEventQueue = [], promoEventQueue = [], isCustomerSessionLoaded = false, sessionDataAccountType = ""; 2511 $(document).on("customerSessionLoaded", function(event, customerSessionData) { 2512 isCustomerSessionLoaded = true, sessionDataAccountType = customerSessionData.accountType; 2513 let sessionDataCustomerUid = customerSessionData.customerUid; 2514 2515 MHProductQueue.forEach(function(extendedProductData) { 2516 extendedProductData.dimension2 = sessionDataAccountType, extendedProductData.dimension6 = sessionDataCustomerUid;
2517 ga('enhancedEcommerce.ec:addImpression', extendedProductData); 2518 ga('MHEnhancedEcommerce.ec:addImpression', extendedProductData); 2519 MHLoadedCount++; 2520 if(MHLoadedCount > 9) { 2521 ga('enhancedEcommerce.send', 'event', 'Scroll Tracking', 'scroll', window.location.href); 2522 ga('MHEnhancedEcommerce.send', 'event', 'Scroll Tracking', 'scroll', window.location.href); 2523 MHLoadedCount = 0; 2524 } 2525 }); 2526 2527 productEventQueue.forEach(function(event) { 2528 addProductImpressions(event); 2529 }); 2530 promoEventQueue.forEach(function(event) { 2531 addPromoImpression(event); 2532 }); 2533 }); 2534 2535 function handlePromoImpression(promoData) { 2536 if(!isCustomerSessionLoaded) { 2537 promoEventQueue.push(promoData); 2538 return; 2539 } 2540 addPromoImpression(promoData); 2541 } 2542 2543 function addPromoImpression(promoData) { 2544 const wo = window.google_object?window.google_object:null; 2545 if(promoData.creative === "Citrus") { 2546 const productType = "Books"; 2547 if(productType.length) { 2548 promoData.creative += " " + productType; 2549 } 2550 } 2551 dataLayer.push({ecommerce: null}); 2552 dataLayer.push({ 2553 'event': 'promotionImpression', 2554 'dimension5': wo?wo.dimension5:'', 2555 'dimension6': wo?wo.dimension6:'', 2556 'ecommerce': { 2557 'promoView': { 2558 'promotions': [ 2559 promoData 2560 ] 2561 } 2562 } 2563 }); 2564 } 2565 2566 function addProductImpressions(productsData) { 2567 const wo = window.google_object?window.google_object:null; 2568 dataLayer.push({ecommerce: null}); 2569 dataLayer.push({ 2570 'event': 'productImpression', 2571 'dimension5': wo?wo.dimension5:'', 2572 'dimension6': wo?wo.dimension6:'', 2573 'ecommerce': { 2574 'currencyCode': wo?wo.currency:'', 2575 'products': productsData 2576 } 2577 }); 2578 } 2579 </script>
2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600
2601<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"errorBeacon":"bam.nr-data.net","licenseKey":"18e954a8c4","agent":"","beacon":"bam.nr-data.net","applicationTime":25,"applicationID":"457372","transactionName":"Z1FVY0FZXEZQBUEKCl4bZEdBUVxScglbFxdfWFtSQRdcUEYVWQYRRFFFGVZIEh12I2FK","queueTime":0}</script>
2601 2602 <!-- Emarsys JavaScript API Header code. Loads the scarab-v2.js -->
2603<script type="text/javascript"> 2604 var ScarabQueue = ScarabQueue || []; 2605 (function(id) { 2606 if(isBotUserAgent()) return; 2607 if (document.getElementById(id)) return; 2608 var js = document.createElement('script'); js.id = id; 2609 js.src = '//cdn.scarabresearch.com/js/189BDB0239BB84D9/scarab-v2.js'; 2610 var fs = document.getElementsByTagName('script')[0]; 2611 fs.parentNode.insertBefore(js, fs); 2612 })('scarab-js-api'); 2613</script>
2613 2614 <!-- [WEB-1422] Emarsys JavaScript API code. See booktopia.common.js --> 2615
2615<script type="text/javascript"> 2616 window.addEventListener('emarsysTracking', function(customerSession) { 2617 emarsysInit(customerSession.detail); 2618 }) 2619 var emarsysEnabled = true; 2620 function emarsysInit(ajaxCustomerSession){ 2621 pushEmarsysData(ajaxCustomerSession) 2622 } 2623 function pushEmarsysData(ajaxCustomerSession) { 2624 emarsysPushDefault(ajaxCustomerSession.emarsysCustomerUid,'false','false'); 2625 } 2626 </script>
2626 2627 2628 2629 2630 2631 2632 <div class="persistent-nav-bar"> 2633 <div class="persistent-nav-bar-inner"> 2634 <button class="sidenav-menu-switch"> 2635 <i class="icon-menu-new"></i> 2636 <span>ALL CATEGORIES</span> 2637 </button> 2638 <div class="persistent-search-box"></div> 2639 <div class="persistent-cart-summary"></div> 2640 </div> 2641</div>
2641<script type="text/javascript"> 2642 if (!isTouchDevice()) { jQuery(window).on('scroll', function() {togglePersistentNavBar();}); } 2643</script>
2643 2644 </body> 2645</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.