CINXE.COM

Just a moment...

<!DOCTYPE html><html lang="en-US"><head><title>Just a moment...</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=Edge"><meta name="robots" content="noindex,nofollow"><meta name="viewport" content="width=device-width,initial-scale=1"><style>*{box-sizing:border-box;margin:0;padding:0}html{line-height:1.15;-webkit-text-size-adjust:100%;color:#313131;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}body{display:flex;flex-direction:column;height:100vh;min-height:100vh}.main-content{margin:8rem auto;max-width:60rem;padding-left:1.5rem}@media (width <= 720px){.main-content{margin-top:4rem}}.h2{font-size:1.5rem;font-weight:500;line-height:2.25rem}@media (width <= 720px){.h2{font-size:1.25rem;line-height:1.5rem}}#challenge-error-text{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI0IyMEYwMyIgZD0iTTE2IDNhMTMgMTMgMCAxIDAgMTMgMTNBMTMuMDE1IDEzLjAxNSAwIDAgMCAxNiAzbTAgMjRhMTEgMTEgMCAxIDEgMTEtMTEgMTEuMDEgMTEuMDEgMCAwIDEtMTEgMTEiLz48cGF0aCBmaWxsPSIjQjIwRjAzIiBkPSJNMTcuMDM4IDE4LjYxNUgxNC44N0wxNC41NjMgOS41aDIuNzgzem0tMS4wODQgMS40MjdxLjY2IDAgMS4wNTcuMzg4LjQwNy4zODkuNDA3Ljk5NCAwIC41OTYtLjQwNy45ODQtLjM5Ny4zOS0xLjA1Ny4zODktLjY1IDAtMS4wNTYtLjM4OS0uMzk4LS4zODktLjM5OC0uOTg0IDAtLjU5Ny4zOTgtLjk4NS40MDYtLjM5NyAxLjA1Ni0uMzk3Ii8+PC9zdmc+);background-repeat:no-repeat;background-size:contain;padding-left:34px}@media (prefers-color-scheme:dark){body{background-color:#222;color:#d9d9d9}}</style><meta http-equiv="refresh" content="390"></head><body class="no-js"><div class="main-wrapper" role="main"><div class="main-content"><noscript><div class="h2"><span id="challenge-error-text">Enable JavaScript and cookies to continue</span></div></noscript></div></div><script>(function(){window._cf_chl_opt={cvId: '3',cZone: "bookshop.org",cType: 'managed',cRay: '917cfb6e3dbafdf8',cH: 'XdJSBspczmATkNRAwYFosKSv3uuXxJsNheP5QnjaPXE-1740541944-1.2.1.1-hSuGEVenHkJ2LKsX4De7lQ1xzDrTuZw0sMzrwnx436.0316QhrvRuIsarJCm8KFF',cUPMDTk: "\/a\/1688\/9781982112790?__cf_chl_tk=aVqSpgXBMg49E9VVklwxAVfjFr7_sPCXOFtPlo3Ckbc-1740541944-1.0.1.1-xDuu_rLEoHyHd8iPc7iWLpoh9KQR1c1vOIbGtBMycHw",cFPWv: 'b',cITimeS: '1740541944',cTTimeMs: '1000',cMTimeMs: '390000',cTplC: 0,cTplV: 5,cTplB: 'cf',cK: "",fa: "\/a\/1688\/9781982112790?__cf_chl_f_tk=aVqSpgXBMg49E9VVklwxAVfjFr7_sPCXOFtPlo3Ckbc-1740541944-1.0.1.1-xDuu_rLEoHyHd8iPc7iWLpoh9KQR1c1vOIbGtBMycHw",md: "p6NK_3p7eN3QMX6LqMBjnq61eTWw8KQTasB4wNn8gtI-1740541944-1.2.1.1-tp_x_hWawHywQuUdyTjx6M_jjxXzSC71p.X6a1ExidJa.M98AFDKSQ7PnoriHtGQbjtZhnVwEDuVKYMjoS7GVj8HzIo5QdKqndabWzenSdfGauK9QfPVY1FRjErpWQdCc1A766Hyfi9joFNEd7XsopQ77Oeizt.WAJL7U738CmZD9kkW2mVIGxi24lLod3clomdYOhb5QljEXHzdi29Vz6bmLBdrn.EPoQYSFmD9UDNHITjrUeQsZru8Ydwjo1syQq8F1rPPSvLw6wQGw14l2wGi_EmLxDYRDBzpJqnpDy2AHtTwkNoCedVEI3JLuKjnhvQgDXICPgU.nXEYnqwZRQe1uy0HpQXKTnyQH4CCG.2cquH5h1zBGc5ks3wEqZjVSH9e4.f_OZHnjpuKzY5gPj_6zP7iDOCqI.lF9KB4SvJ8yOQo_6o4r_oPyzEtUuVDp9mYXrrU4in3HJMSjLVqX3I.y6ndB.CZ9TBxRpNlzr5k_NzsDMnwCcmHpAIaUuCIciCyDrlRR.ANJiOlykfpyGUwbHOKx0AuDMh0hiUs6Cyt10m8SFvB.dTUfpuj1srgN.Ws5FaPosmCatW2n_NhL_yYBRyyjnhwOQuJop3Eoh44FKClkRlQ_zWlyaW.I_YMmIoxQw4WSAw7.WgnXgx0X4YLiAm7RPHb3dzCQTMTbqdLemEfPk8.gWPqX3HFw4m75dE7_LUkQ.ayAKcvDzdCZHNXyyRKw2fnsiJVLsH3RV0DRd.8iicSy.oS4r7KYOeL1ys38tDVPUp8kBfeogoHrnjiqGyreRQOy4r3V1_z55AMPA67.bgtCRHvJUs27C_HzRZxGGfGZuXB5iTjHbLNMEF_vAPMS7UMRofWjWTBErWw3xr5QsSQsNXpJ37WjsUFmOXVDtaQmi80IpRzFBGn3.qB.mjNdwlgWmIngNUMXnHNboaOIu81UmMbqFQxj7VsSmOumAcx860sMbvhcXzFjHRpWdVTq7q2lf2A11JsoSvTgLXugDH7TZg9Ht8M9gU7.iWqjYW1BSSyoxi4tD8fPkLWuRzppWW8joCltjNV6fkYRXKD.Ro2On10XDqAiR_56mriLfn6ctmhJuFHcdvSSccBw8v9oLmYskfw3k_rbgFQrXvrJGhFaeCUg9A22SGb0toamY2q_p2DQUcP0RV7lZkYCeb8Qu8QEpHAU7gf59ZCMbIrUwm5xRZVtIxeO.KxEJD6PyhiW3qkfUT7EsGR_BIde3eb19SBxBxw1at3fPLVPLuddi1vzWI4c_HlTayWMXUh0qnf82M45daB62Mo769RvJq0O.cAX2NfahrHvNfoXh6ivtwO6SA.MhkEqUI2DirfD0_tCbBbeNgAYFNC76Lt4PDzFy1W5hU7kasHkoBWQi02CIVLAHvWBDEmquqwNqAM5qRcQhKEw1bOfuAldYifXP7EOsYTt7yb0JyNG_1DUTfAoX2a2bKqg.EQCe8gsgydg8TnvBzxqhL_TOOb9zet5wBmU0GXgCcIruj0jx.BXgQBFnbgEAtDCj07ocZ7VaB5ovycPvn7R0AUEXJ.ocRnbm9QzJrQb7CAny6tVzmVB4.AO2j4N6mOgx76b7MGfjH7I1903z3O4fuJcMpt4iE6nkZLMT_O3tH6fqjwKrqomL9_GlvBy2F1RZKWhN9Gt9DIcBXQBFhkWs5HCQKFovGcyrp6rh7i6P._jzLOkSJ1ztue77iCiT6Katf7m658tWG6UU3ogo9Bj8BbFCtjTFBMnJkF6uRK4CDzqf2tlkK6Epu2uYOypG0P8Ie.TnW2faHEEPT6A_V1xJddw0t2c1ATORhEqjYtpsTtkyAuWGkJUmR.SO.slt8pMvZ4.l4cdV5MxijbgheBvFKcomd7G1H1gJFpGDWXurxpz5xJEUqGPhn_1dbcylW3CxJwcrKyEk_LISWqUnCpW2oVFm6gVEEzRhUoepl0BfgmhhNjloAECMJVCl2r3aSxyTMsifo5XwesKwsYxywPdDuUE2t_LBtX4xWaJ4c5mX2vvCS215D6MynaMGPofwteLppdtobEbDemKXoUNQh_Vf7hvJWgsruYuC4_3Qm4g75xypxtpsV9S0S_miLHDQ007IHkp1c9q757aUtNh2SVBDeTHNi4NvG0F2pmyeTsHnKXHNP.CP9Qe_z.eHme5B0B7KEZP7YGloCsaboaOSGyUhSm2nqItxF7Z6ypNdJ6ERSsjJhXFmRdSEjLyr4D7nQl8_JrZi2mUrd4RWhcOhKbvZw7U2r2__heEVLgndD8jXcOS1NcjAhwOIZxRzlNJwxlBWzAFiSU4GSTNlHbMFyyjOLnCZSoqaXQikGN475KHCKduAkkXrUyKvWiGhyQN_rigqGsjHN2VaNNGDmwPsqTE_f375WLpK1FyVyWD7OiJ3DdRfjlrBzOqu4H3hTOrYrqXXUh4wyxlBXXMbgOfm6odCCLZk5O9ZEwDt6BhgpjDzSVytZ119d8PlzX8_UN9_qnrERSW83yNEfQA11p6ZrpPA1i7aV1j1l64MvG49ltRsVf4Q_6mdw",mdrd: "U61yAwiBLYcJ2voekfsDPszOTxrAnbpfzpwgQE9.s.o-1740541944-1.2.1.1-VzpcLgUncdneAMilHdKyFqQE3TRuW8bpMz_ZPr7pO465hXuYWQgWFE1Pjyjh02vHWVTM9OFTPQJzWj6VIqrAJA0ya93NHU6vsAg3KW6qrOrzPMZ2Oa8CUZKceMUtuSty3IIdpedF1e7U_YI9gpRfCmfvJSvxTlkkctYdMzWRJ1EhTTDHpmDl390JuCC8UsudYPdcXKzpiWfOTfvCeGHr9R2njWuPqHwy.8SD4goxspBZWrVe7TxKSLGzgExUEjXTY1GfeGNqeaeYwTAq2JaO9CbGDXTpo3YiaIYdo9RucyZa69Sy0CC1kxo4htfiluSJAWbj2AwhSOogwqmFSXoNREQ2a.5cDocj2j28VMNRQ_3KpxntVKtuwPpMmObvPWFjEyLfmP9j_b2hbtdC8zsLjYuoYA6jklQN5.1WXOHWJsb2PN61yfQauH65t1pqgNlLwzneOY0VH0vZYgXiNwn39JutH_mCClO9DpX_lGd5G5Rxen6.X08J8vLghPZJAhBOpvkieWX1L4KrplAd7s6nO7faGU_HNEJOJUwzzysdZK4Vtm4O_ZTgox21OTDRhN49ZU9GyQ3tabGMDAFSIggPKPyZA04wbGmTjy6R31NFnyuF5N2Vzw4Jo2uUBfGGNf9n5zp46FrN5HFSTKC8Rw_ktic0Ve7SdcJdi8T4oPXfbpC8F4AvIjV2PJk9c1mwuSLd1aeWhzIoWkCBJjcYhqvTtmddrI4L2_pKmKsxaL4RBL91jj1DFQkNCvvZDNh6Yta9ef68zcN0B4apACBgYWfnyKl96BLAGOf4csI2azwSkJjGLp3uNazaeRxLPgkWin2pbw1MiiHsNT9ltrNICueq7KCj_1sDwN0MhRSdYTLPFFoKzmzC_MIg19W0WX7kmkD7sEiXHkIOGSoSqRvt1Ytl_zdrqWVUkh.Jd1Ugv.5M3BSawIyMki2UKdOkAnz5y3Y8DOawkdvHDULKFaR3JDfpczgDkk4L5kKXwAPfTy7mGaiY8Q9bpw7NieBeu5BFIM4iqwc2yMA6tIsigFvWRquzMmRtOWPACJQ205mPfiM2Hr7pM2Z8pNk5kIK0LPSZh9hbjAEE3UQTU9vR0T4ZIBodlCUhQwb7eTZXtMf1L0QgExGu9HYsSQs2bKxelXi7gJqu7uyWP3G8XswslT7W3c9E864ZanFq6Sc_v2lblNQjZyrEu0UMievY04QkRESIvBpxsns0lBM6pd6zBaHU2Bzl_cs8JMKwPVogK_2xVo1MpF.Be9BnC3zdWIlJe1aLFptBvtb5fi2nnaVj5JcOumr10bn1bBU1unLi9a47ST7eB9CXlUsJcQUcDPq9.y3psOxFefkfupbYX6xYzK72AoB.yNSQcqfKEyq2.nFRRbga3S4759TdrP6dkB3RI2.JUJo6iGNwhacCG0U0gziWin.EYNpvQjCfbw9xU9bEI_LXcvUlnj3PiaLUaRuZqtTC0A3OmxHoSL9AZSUXvYMGSVcyEcUR0CFkUaLPwHSAhNDkzXYV2qKKtRJ_bfTE276TSg0DLNQGgcvtOlbv0MO9SqLJvOybtDhJylFH2M6zca_qbq3dHN48Qe7q4MPHaajpiNtsuQ73Es.Px5dqa1.WkckCXvpu8sHN1q3Z23Rgcnd672TXJBhqAsrmL6AZ3UexyuEvfuX24BOALwXB_eDX_hxeFLXpHfF3zTk08yDCNM6H11gJgCsYabRgqDu50TpGeFEXJd5N22iZXxKEQJOvFSbELrFoWdw3HiIKME68.l4uKYSIvxDJj0vJjT0CD08T5YoKIe9DLiEHhLSTOmuaMzqMulXsEJOPFmfi02_bEWqy.n6PyUv9Y8gC_TxLt1ZugvI5sDxStyQYz3LVlD9fmWzXnZDBalFmuPhEDXaBbkWMolc950SIHFdPw3Q4P_ua3JJW9V7tt3MHrV3xwJVi31wTBdmn8QSprEvxeI2Jo0jucE4"};var cpo = document.createElement('script');cpo.src = '/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=917cfb6e3dbafdf8';window._cf_chl_opt.cOgUHash = location.hash === '' && location.href.indexOf('#') !== -1 ? '#' : location.hash;window._cf_chl_opt.cOgUQuery = location.search === '' && location.href.slice(0, location.href.length - window._cf_chl_opt.cOgUHash.length).indexOf('?') !== -1 ? '?' : location.search;if (window.history && window.history.replaceState) {var ogU = location.pathname + window._cf_chl_opt.cOgUQuery + window._cf_chl_opt.cOgUHash;history.replaceState(null, null, "\/a\/1688\/9781982112790?__cf_chl_rt_tk=aVqSpgXBMg49E9VVklwxAVfjFr7_sPCXOFtPlo3Ckbc-1740541944-1.0.1.1-xDuu_rLEoHyHd8iPc7iWLpoh9KQR1c1vOIbGtBMycHw" + window._cf_chl_opt.cOgUHash);cpo.onload = function() {history.replaceState(null, null, ogU);}}document.getElementsByTagName('head')[0].appendChild(cpo);}());</script></body></html>