0% found this document useful (0 votes)
52 views84 pages

Instant Cloudflare Starter

Uploaded by

Jordan4444409
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
52 views84 pages

Instant Cloudflare Starter

Uploaded by

Jordan4444409
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 84

<!

doctype html>
<html lang="en">
<head>
<script>
var BASE_URL = 'https://www.packtpub.com/';
var require = {
"baseUrl":
"https://www.packtpub.com/static/version1607340419/frontend/Packt/default/en_GB"
};
</script>
<meta charset="utf-8" /><script type="text/javascript">(window.NREUM||
(NREUM={})).loader_config={licenseKey:"NRJS-
0f4d86b78cc0c8047b9",applicationID:"475968873"};window.NREUM||
(NREUM={}),__nr_require=function(e,t,n){function r(n){if(!t[n]){var
i=t[n]={exports:{}};e[n][0].call(i.exports,function(t){var i=e[n][1][t];return
r(i||t)},i,i.exports)}return t[n].exports}if("function"==typeof __nr_require)return
__nr_require;for(var i=0;i<n.length;i++)r(n[i]);return r}({1:[function(e,t,n)
{function r(){}function i(e,t,n){return function(){return o(e,
[u.now()].concat(c(arguments)),t?null:this,n),t?void 0:this}}var
o=e("handle"),a=e(6),c=e(7),f=e("ee").get("tracer"),u=e("loader"),s=NREUM;"undefine
d"==typeof window.newrelic&&(newrelic=s);var
d=["setPageViewName","setCustomAttribute","setErrorHandler","finished","addToTrace"
,"inlineHit","addRelease"],p="api-",l=p+"ixn-";a(d,function(e,t){s[t]=i(p+t,!
0,"api")}),s.addPageAction=i(p+"addPageAction",!
0),s.setCurrentRouteName=i(p+"routeName",!
0),t.exports=newrelic,s.interaction=function(){return(new r).get()};var
m=r.prototype={createTracer:function(e,t){var n={},r=this,i="function"==typeof
t;return o(l+"tracer",[u.now(),e,n],r),function(){if(f.emit((i?"":"no-")+"fn-
start",[u.now(),r,i],n),i)try{return t.apply(this,arguments)}catch(e){throw
f.emit("fn-err",[arguments,this,e],n),e}finally{f.emit("fn-end",
[u.now()],n)}}}};a("actionText,setName,setAttribute,save,ignore,onEnd,getContext,en
d,get".split(","),function(e,t){m[t]=i(l+t)}),newrelic.noticeError=function(e,t)
{"string"==typeof e&&(e=new Error(e)),o("err",[e,u.now(),!1,t])}},{}],2:
[function(e,t,n){function r(){return c.exists&&performance.now?
Math.round(performance.now()):(o=Math.max((new Date).getTime(),o))-a}function i()
{return o}var o=(new
Date).getTime(),a=o,c=e(8);t.exports=r,t.exports.offset=a,t.exports.getLastTimestam
p=i},{}],3:[function(e,t,n){function r(e,t){var
n=e.getEntries();n.forEach(function(e){"first-paint"===e.name?d("timing",
["fp",Math.floor(e.startTime)]):"first-contentful-paint"===e.name&&d("timing",
["fcp",Math.floor(e.startTime)])})}function i(e,t){var
n=e.getEntries();n.length>0&&d("lcp",[n[n.length-1]])}function o(e)
{e.getEntries().forEach(function(e){e.hadRecentInput||d("cls",[e])})}function a(e)
{if(e instanceof m&&!g){var t=Math.round(e.timeStamp),n={type:e.type};t<=p.now()?
n.fid=p.now()-t:t>p.offset&&t<=Date.now()?(t-=p.offset,n.fid=p.now()-
t):t=p.now(),g=!0,d("timing",["fi",t,n])}}function c(e){d("pageHide",
[p.now(),e])}if(!("init"in NREUM&&"page_view_timing"in NREUM.init&&"enabled"in
NREUM.init.page_view_timing&&NREUM.init.page_view_timing.enabled===!1)){var
f,u,s,d=e("handle"),p=e("loader"),l=e(5),m=NREUM.o.EV;if("PerformanceObserver"in
window&&"function"==typeof window.PerformanceObserver){f=new
PerformanceObserver(r);try{f.observe({entryTypes:["paint"]})}catch(v){}u=new
PerformanceObserver(i);try{u.observe({entryTypes:["largest-contentful-
paint"]})}catch(v){}s=new PerformanceObserver(o);try{s.observe({type:"layout-
shift",buffered:!0})}catch(v){}}if("addEventListener"in document){var g=!
1,y=["click","keydown","mousedown","pointerdown","touchstart"];y.forEach(function(e
){document.addEventListener(e,a,!1)})}l(c)}},{}],4:[function(e,t,n){function r(e,t)
{if(!i)return!1;if(e!==i)return!1;if(!t)return!0;if(!o)return!1;for(var
n=o.split("."),r=t.split("."),a=0;a<r.length;a++)if(r[a]!==n[a])return!1;return!
0}var i=null,o=null,a=/Version\/(\S+)\s+Safari/;if(navigator.userAgent){var
c=navigator.userAgent,f=c.match(a);f&&c.indexOf("Chrome")===-
1&&c.indexOf("Chromium")===-
1&&(i="Safari",o=f[1])}t.exports={agent:i,version:o,match:r}},{}],5:
[function(e,t,n){function r(e){function t(){e(a&&document[a]?
document[a]:document[i]?"hidden":"visible")}"addEventListener"in
document&&o&&document.addEventListener(o,t,!1)}t.exports=r;var i,o,a;"undefined"!
=typeof document.hidden?
(i="hidden",o="visibilitychange",a="visibilityState"):"undefined"!=typeof
document.msHidden?(i="msHidden",o="msvisibilitychange"):"undefined"!=typeof
document.webkitHidden&&(i="webkitHidden",o="webkitvisibilitychange",a="webkitVisibi
lityState")},{}],6:[function(e,t,n){function r(e,t){var n=[],r="",o=0;for(r in
e)i.call(e,r)&&(n[o]=t(r,e[r]),o+=1);return n}var
i=Object.prototype.hasOwnProperty;t.exports=r},{}],7:[function(e,t,n){function
r(e,t,n){t||(t=0),"undefined"==typeof n&&(n=e?e.length:0);for(var r=-1,i=n-t||
0,o=Array(i<0?0:i);++r<i;)o[r]=e[t+r];return o}t.exports=r},{}],8:[function(e,t,n)
{t.exports={exists:"undefined"!=typeof
window.performance&&window.performance.timing&&"undefined"!=typeof
window.performance.timing.navigationStart}},{}],ee:[function(e,t,n){function r()
{}function i(e){function t(e){return e&&e instanceof r?e:e?f(e,c,o):o()}function
n(n,r,i,o){if(!p.aborted||o){e&&e(n,r,i);for(var
a=t(i),c=v(n),f=c.length,u=0;u<f;u++)c[u].apply(a,r);var d=s[w[n]];return
d&&d.push([b,n,r,a]),a}}function l(e,t){h[e]=v(e).concat(t)}function m(e,t){var
n=h[e];if(n)for(var r=0;r<n.length;r++)n[r]===t&&n.splice(r,1)}function v(e){return
h[e]||[]}function g(e){return d[e]=d[e]||i(n)}function y(e,t){u(e,function(e,n)
{t=t||"feature",w[n]=t,t in s||(s[t]=[])})}var
h={},w={},b={on:l,addEventListener:l,removeEventListener:m,emit:n,get:g,listeners:v
,context:t,buffer:y,abort:a,aborted:!1};return b}function o(){return new r}function
a(){(s.api||s.feature)&&(p.aborted=!0,s=p.backlog={})}var
c="nr@context",f=e("gos"),u=e(6),s={},d={},p=t.exports=i();p.backlog=s},{}],gos:
[function(e,t,n){function r(e,t,n){if(i.call(e,t))return e[t];var
r=n();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,
{value:r,writable:!0,enumerable:!1}),r}catch(o){}return e[t]=r,r}var
i=Object.prototype.hasOwnProperty;t.exports=r},{}],handle:[function(e,t,n){function
r(e,t,n,r){i.buffer([e],r),i.emit(e,t,n)}var
i=e("ee").get("handle");t.exports=r,r.ee=i},{}],id:[function(e,t,n){function r(e)
{var t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===window?
0:a(e,o,function(){return i++})}var i=1,o="nr@id",a=e("gos");t.exports=r},
{}],loader:[function(e,t,n){function r(){if(!E++){var
e=b.info=NREUM.info,t=p.getElementsByTagName("script")
[0];if(setTimeout(u.abort,3e4),!(e&&e.licenseKey&&e.applicationID&&t))return
u.abort();f(h,function(t,n){e[t]||(e[t]=n)});var n=a();c("mark",
["onload",n+b.offset],null,"api"),c("timing",["load",n]);var
r=p.createElement("script");r.src="https://"+e.agent,t.parentNode.insertBefore(r,t)
}}function i(){"complete"===p.readyState&&o()}function o(){c("mark",
["domContent",a()+b.offset],null,"api")}var
a=e(2),c=e("handle"),f=e(6),u=e("ee"),s=e(4),d=window,p=d.document,l="addEventListe
ner",m="attachEvent",v=d.XMLHttpRequest,g=v&&v.prototype;NREUM.o={ST:setTimeout,SI:
d.setImmediate,CT:clearTimeout,XHR:v,REQ:d.Request,EV:d.Event,PR:d.Promise,MO:d.Mut
ationObserver};var y=""+location,h={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-
data.net",agent:"js-agent.newrelic.com/nr-1184.min.js"},w=v&&g&&g[l]&&!/
CriOS/.test(navigator.userAgent),b=t.exports={offset:a.getLastTimestamp(),now:a,ori
gin:y,features:{},xhrWrappable:w,userAgent:s};e(1),e(3),p[l]?(p[l]
("DOMContentLoaded",o,!1),d[l]("load",r,!1)):(p[m]("onreadystatechange",i),d[m]
("onload",r)),c("mark",["firstbyte",a.getLastTimestamp()],null,"api");var E=0},
{}],"wrap-function":[function(e,t,n){function r(e){return!(e&&e instanceof
Function&&e.apply&&!e[a])}var
i=e("ee"),o=e(7),a="nr@original",c=Object.prototype.hasOwnProperty,f=!
1;t.exports=function(e,t){function n(e,t,n,i){function nrWrapper(){var
r,a,c,f;try{a=this,r=o(arguments),c="function"==typeof n?n(r,a):n||{}}catch(u)
{p([u,"",[r,a,i],c])}s(t+"start",[r,a,i],c);try{return f=e.apply(a,r)}catch(d)
{throw s(t+"err",[r,a,d],c),d}finally{s(t+"end",[r,a,f],c)}}return r(e)?e:(t||
(t=""),nrWrapper[a]=e,d(e,nrWrapper),nrWrapper)}function u(e,t,i,o){i||(i="");var
a,c,f,u="-"===i.charAt(0);for(f=0;f<t.length;f++)c=t[f],a=e[c],r(a)||(e[c]=n(a,u?
c+i:i,o,c))}function s(n,r,i){if(!f||t){var o=f;f=!0;try{e.emit(n,r,i,t)}catch(a)
{p([a,n,r,i])}f=o}}function d(e,t){if(Object.defineProperty&&Object.keys)try{var
n=Object.keys(e);return n.forEach(function(n){Object.defineProperty(t,n,
{get:function(){return e[n]},set:function(t){return e[n]=t,t}})}),t}catch(r)
{p([r])}for(var i in e)c.call(e,i)&&(t[i]=e[i]);return t}function p(t)
{try{e.emit("internal-error",t)}catch(n){}}return e||
(e=i),n.inPlace=u,n.flag=a,n}},{}]},{},["loader"]);</script>
<meta name="title" content="Packt | Programming Books, eBooks &amp; Videos for
Developers" />
<meta name="description" content="Packt is the online library and learning platform
for professional developers. Learn Python, JavaScript, Angular and more with
eBooks, videos and courses" />
<meta name="robots" content="INDEX,FOLLOW" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-
scale=1, user-scalable=1, shrink-to-fit=no" />
<meta name="" content="charset=utf-8" />
<title>Packt | Programming Books, eBooks &amp; Videos for Developers</title>
<link rel="stylesheet" type="text/css" media="all"
href="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/mage/calendar.min.css" />
<link rel="stylesheet" type="text/css" media="all"
href="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/css/styles.min.css" />
<link rel="stylesheet" type="text/css" media="all"
href="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/css/custom.min.css" />
<link rel="stylesheet" type="text/css" media="all"
href="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/Amasty_Base/vendor/slick/amslick.min.css" />
<link rel="stylesheet" type="text/css" media="all"
href="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/Packt_Gdpr/css/cookie.min.css" />
<link rel="stylesheet" type="text/css" media="all"
href="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/Packt_GeoIP/css/geoip-banner.min.css" />
<link rel="stylesheet" type="text/css" media="all"
href="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/Packt_LandingPage/css/owl.carousel.min.css" />
<link rel="stylesheet" type="text/css" media="all"
href="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/Packt_LandingPage/css/packtlandingpage.min.css" />
<link rel="stylesheet" type="text/css" media="all"
href="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/Packt_Ves/css/font-awesome.min.css" />
<link rel="stylesheet" type="text/css" media="all"
href="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/Packt_Ves/css/animate.min.css" />
<link rel="stylesheet" type="text/css" media="all"
href="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/Packt_Ves/css/bootstrap-tiny.min.css" />
<link rel="stylesheet" type="text/css" media="all"
href="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/Packt_Ves/css/styles-m.min.css" />
<link rel="stylesheet" type="text/css" media="all"
href="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/Amasty_Mostviewed/css/amrelated.min.css" />
<link rel="stylesheet" type="text/css" media="all"
href="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/Algolia_AlgoliaSearch/internals/algoliasearch.min.css" />
<link rel="stylesheet" type="text/css" media="all"
href="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/Packt_AlgoliasearchCustom/customalgolia.min.css" />
<link rel="stylesheet" type="text/css" media="print"
href="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/css/print.min.css" />
<link rel="stylesheet" type="text/css" media="screen and (min-width: 768px)"
href="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/Packt_Ves/css/styles-l.min.css" />
<script type="text/javascript"
src="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/requirejs/require.js"></script>
<script type="text/javascript"
src="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/mage/requirejs/mixins.js"></script>
<script type="text/javascript"
src="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/requirejs-config.js"></script>
<script type="text/javascript"
src="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/mage/polyfill.js"></script>
<script type="text/javascript"
src="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/Packt_ReviewsFeefo/js/feefo-reviews.js"></script>
<script type="text/javascript"
src="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/js/mobile-search.js"></script>
<script type="text/javascript"
src="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/Packt_Gdpr/js/cookie.js"></script>
<script type="text/javascript"
src="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/Algolia_AlgoliaSearch/internals/common.js"></script>
<script type="text/javascript"
src="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/Algolia_AlgoliaSearch/autocomplete.js"></script>
<script type="text/javascript"
src="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/Packt_AlgoliasearchCustom/hooks.js"></script>
<script type="text/javascript"
src="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/Packt_AlgoliasearchCustom/ajax_categorylisting.js"></script>
<script type="text/javascript"
src="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/js/responsive-results-page.js"></script>
<script type="text/javascript"
src="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/Packt_AlgoliasearchCustom/instantsearch-mixin.js"></script>
<script type="text/javascript"
src="https://www.packtpub.com/static/version1607340419/frontend/Packt/default/
en_GB/Algolia_AlgoliaSearch/click_conversion_analytics.js"></script>
<script type="text/javascript"
src="//service.maxymiser.net/api/eu/packtpub.com/51f3ef/mmapi.js"></script>
<script type="text/javascript"
src="https://storage.googleapis.com/prshim/v1/payment-shim.js"></script>
<link rel="icon" type="image/x-icon"
href="https://www.packtpub.com/media/favicon/stores/1/favicon.ico" />
<link rel="shortcut icon" type="image/x-icon"
href="https://www.packtpub.com/media/favicon/stores/1/favicon.ico" />
<meta name="google-site-verification"
content="CGEyu7dKgqkqBrxdainq9bY0WowOCMOdZ1nKVzzvYJg" />

<link rel="alternate" hreflang="x-default" href="https://www.packtpub.com/" />


<link rel="alternate" hreflang="en-US" href="https://www.packtpub.com/" />
<link rel="alternate" hreflang="en-GB" href="https://www.packtpub.com/gb/" />
<link rel="alternate" hreflang="en-AU" href="https://www.packtpub.com/au/" />
<link rel="alternate" hreflang="en-IN" href="https://www.packtpub.com/in/" />
<link rel="alternate" hreflang="en-at" href="https://www.packtpub.com/eu/" />
<link rel="alternate" hreflang="en-be" href="https://www.packtpub.com/eu/" />
<link rel="alternate" hreflang="en-cy" href="https://www.packtpub.com/eu/" />
<link rel="alternate" hreflang="en-ee" href="https://www.packtpub.com/eu/" />
<link rel="alternate" hreflang="en-fi" href="https://www.packtpub.com/eu/" />
<link rel="alternate" hreflang="en-fr" href="https://www.packtpub.com/eu/" />
<link rel="alternate" hreflang="en-de" href="https://www.packtpub.com/eu/" />
<link rel="alternate" hreflang="en-gr" href="https://www.packtpub.com/eu/" />
<link rel="alternate" hreflang="en-ie" href="https://www.packtpub.com/eu/" />
<link rel="alternate" hreflang="en-it" href="https://www.packtpub.com/eu/" />
<link rel="alternate" hreflang="en-lv" href="https://www.packtpub.com/eu/" />
<link rel="alternate" hreflang="en-mt" href="https://www.packtpub.com/eu/" />
<link rel="alternate" hreflang="en-nl" href="https://www.packtpub.com/eu/" />
<link rel="alternate" hreflang="en-pt" href="https://www.packtpub.com/eu/" />
<link rel="alternate" hreflang="en-sk" href="https://www.packtpub.com/eu/" />
<link rel="alternate" hreflang="en-si" href="https://www.packtpub.com/eu/" />
<link rel="alternate" hreflang="en-es" href="https://www.packtpub.com/eu/" />
<link rel="alternate" hreflang="en" href="https://www.packtpub.com/" />

<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var
f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?
id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-KHLZ7JF');</script>

<script type="text/javascript">
(function (url) {
/*Tracking Bootstrap
Set Up DataLayer objects/properties here*/
if(!window.DataLayer){
window.DataLayer = {};
}
if(!DataLayer.events){
DataLayer.events = {};
}

DataLayer.events.SPIVersion = DataLayer.events.SPIVersion || "3.4";


DataLayer.events.SiteSection = "1";

var loc, ct = document.createElement("script");


ct.type = "text/javascript";
ct.async = true;
ct.src = url;
loc = document.getElementsByTagName("script")[0];
loc.parentNode.insertBefore(ct, loc);
}(document.location.protocol + '//tag.rmp.rakuten.com/120495.ct.js'));
/*Do Not Edit Beneath This Line*/
function getRMParameterByName(ranParam) {
ranParam = ranParam.replace(/[\[]/, "\[").replace(/[\]]/, "\]");
var regex = new RegExp("[\?&]" + ranParam + "=([^&#]*)"),
results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\
+/g, " "));
}

function formatDate(ranDate) {
var dd = ranDate.getDate()
if (dd < 10) { dd = "0" + dd; } else { dd = dd.toString(); }
var mm = ranDate.getMonth() + 1
if (mm < 10) { mm = "0" + mm; } else { mm = mm.toString(); }
var yyyy = ranDate.getFullYear()
if (yyyy < 10) { yyyy = "0" + yyyy; } else { yyyy = yyyy.toString(); }
var hr = ranDate.getHours()
if (hr < 10) { hr = "0" + hr; } else { hr = hr.toString(); }
var mn = ranDate.getMinutes()
if (mn < 10) { mn = "0" + mn; } else { mn = mn.toString(); }
return yyyy + mm + dd + "_" + hr + mn;
}

var __createRMCookie = function(name, value, days) {


var expires = "";
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toGMTString();
} else {
expires = "";
}
document.cookie = name + "=" + value + expires + "; path=/;
domain=packtpub.com";
}

var ranMID = getRMParameterByName("ranMID");


var ranSiteID = getRMParameterByName("ranSiteID");

if (ranMID != "") {
__createRMCookie("ranMID", ranMID, 30);
}

if (ranSiteID != "") {
__createRMCookie("ranSiteID", ranSiteID, 30);
var ranLandDateTime = formatDate(new Date());
__createRMCookie("ranLandDateTime", ranLandDateTime, 30);
}
</script>
<link rel="canonical" href="https://www.packtpub.com/?___store=us"
src_type="url" /><script src="https://polyfill.io/v3/polyfill.min.js?
features=default%2CArray.prototype.includes%2CPromise"
crossorigin="anonymous"></script>
<script>

window.algoliaConfig = {"instant":
{"enabled":true,"selector":".columns","isAddToCartEnabled":true,"addToCartParams":
{"action":"https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/checkout\/cart\/add\/uenc\/
aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw%2C
%2C\/","formKey":"H4bQXnxg6SLLbdi4"},"infiniteScrollEnabled":false,"urlTrackedParam
eters":["query","attribute:*","index","page"]},"autocomplete":
{"enabled":true,"selector":".algolia-search-input","sections":
[],"nbOfProductsSuggestions":8,"nbOfCategoriesSuggestions":3,"nbOfQueriesSuggestion
s":0,"isDebugEnabled":false},"landingPage":
{"query":"","configuration":"[]"},"extensionVersion":"1.13.1","applicationId":"VIVZ
ZXFQG1","indexName":"store_prod_us","apiKey":"MjBiNTIwZWM0MmE4MWQ0MDQwNzIxY2Q5ZTQ0Z
jE0ZDNkMzI4ZDVkZWJiYzcxNGI1NjA2MWYzNmUyNTQxY2ViZnRhZ0ZpbHRlcnM9","attributeFilter":
[],"facets":
[{"attribute":"product_type_filter","type":"disjunctive","label":"Product
Type","searchable":"2","create_rule":"2"},
{"attribute":"released","type":"disjunctive","label":"Released","searchable":"2","c
reate_rule":"2"},
{"attribute":"language","type":"disjunctive","label":"Language","searchable":"1","c
reate_rule":"1"},
{"attribute":"categories","type":"disjunctive","label":"Categories","searchable":"2
","create_rule":"2"},
{"attribute":"concept","type":"disjunctive","label":"Concept","searchable":"1","cre
ate_rule":"1"},
{"attribute":"tool","type":"disjunctive","label":"Tool","searchable":"1","create_ru
le":"1"},
{"attribute":"vendor","type":"disjunctive","label":"Vendor","searchable":"1","creat
e_rule":"1"}],"areCategoriesInFacets":true,"hitsPerPage":24,"sortingIndices":
[{"attribute":"packt_rank","sort":"asc","sortLabel":"Relevance","name":"store_prod_
us_products_packt_rank_asc","label":"Relevance","ranking":
["asc(packt_rank)","typo","geo","words","filters","proximity","attribute","exact","
custom"]},{"attribute":"date_of_publication","sort":"desc","sortLabel":"Date of
Publication","name":"store_prod_us_products_date_of_publication_desc","label":"Date
of Publication","ranking":
["desc(date_of_publication)","typo","geo","words","filters","proximity","attribute"
,"exact","custom"]},{"attribute":"price","sort":"asc","sortLabel":"Lowest
price","name":"store_prod_us_products_price_default_asc","label":"Lowest
price","ranking":
["asc(price.USD.default)","typo","geo","words","filters","proximity","attribute","e
xact","custom"]},{"attribute":"price","sort":"desc","sortLabel":"Highest
price","name":"store_prod_us_products_price_default_desc","label":"Highest
price","ranking":
["desc(price.USD.default)","typo","geo","words","filters","proximity","attribute","
exact","custom"]},
{"attribute":"name","sort":"asc","sortLabel":"Title","name":"store_prod_us_products
_name_asc","label":"Title","ranking":
["asc(name)","typo","geo","words","filters","proximity","attribute","exact","custom
"]}],"isSearchPage":false,"isCategoryPage":false,"isLandingPage":false,"removeBrand
ing":true,"productId":null,"priceKey":".USD.default","currencyCode":"USD","currency
Symbol":"$","priceFormat":{"pattern":"$
%s","precision":2,"requiredPrecision":2,"decimalSymbol":".","groupSymbol":",","grou
pLength":3,"integerRequired":false},"maxValuesPerFacet":10,"autofocus":true,"reques
t":
{"query":"","refinementKey":"","refinementValue":"","categoryId":"","landingPageId"
:"","path":"","level":""},"showCatsNotIncludedInNavigation":true,"showSuggestionsOn
NoResultsPage":true,"baseUrl":"https:\/\/fanyv88.com:443\/https\/www.packtpub.com","popularQueries":
["python","Tuning Apache spark","angular","react","Rust","aws","C+
+","azure","kubernetes"],"useAdaptiveImage":false,"urls":{"logo":"https:\/\/
www.packtpub.com\/static\/version1607340419\/frontend\/Packt\/default\/en_GB\/
Algolia_AlgoliaSearch\/images\/search-by-algolia.svg"},"ccAnalytics":
{"ISSelector":".ais-hits--item a.result, .ais-infinite-hits--item
a.result","conversionAnalyticsMode":"place_order","addToCartSelector":".action.prim
ary.tocart","orderedProductIds":[]},"analytics":
{"enabled":true,"delay":"3000","triggerOnUiInteraction":"1","pushInitialSearch":"0"
},"now":1609459200,"translations":
{"to":"to","or":"or","go":"Go","popularQueries":"You can try one of the popular
search queries","seeAll":"See all products","allDepartments":"All
departments","seeIn":"See products in","orIn":"or in","noProducts":"No products for
query","noResults":"No results","refine":"Refine","selectedFilters":"Selected
Filters","clearAll":"Clear all","previousPage":"Previous page","nextPage":"Next
page","searchFor":"Search for
products","relevance":"Relevance","categories":"Categories","products":"Products","
searchBy":"Search by","searchForFacetValuesPlaceholder":"Search for
other ...","showMore":"Show more products"},"defaultSort":"relevance"};
</script>
<!--[if lte IE 9]>
<script>
document.addEventListener("DOMContentLoaded", function() {
algoliaBundle.$(function () {
window.algoliaConfig.autofocus = false;
});
});
</script>
<![endif]-->
</head>
<body data-container="body" data-mage-init='{"loaderAjax": {}, "loader": { "icon":
"https://www.packtpub.com/static/version1607340419/frontend/Packt/default/en_GB/
images/loader-2.gif"}}' class="cms-home cms-index-index page-layout-1column">
<script type="text/x-magento-init">
{
"*": {
"Magento_PageBuilder/js/widget-initializer": {
"config": {"[data-content-type=\"slider\"][data-
appearance=\"default\"]":{"Magento_PageBuilder\/js\/content-type\/slider\/
appearance\/default\/widget":false},"[data-content-type=\"map\"]":
{"Magento_PageBuilder\/js\/content-type\/map\/appearance\/default\/
widget":false},"[data-content-type=\"row\"]":{"Magento_PageBuilder\/js\/content-
type\/row\/appearance\/default\/widget":false},"[data-content-type=\"tabs\"]":
{"Magento_PageBuilder\/js\/content-type\/tabs\/appearance\/default\/
widget":false},"[data-content-type=\"slide\"]":{"Magento_PageBuilder\/js\/widget\/
show-on-hover":{"buttonSelector":".pagebuilder-slide-
button","showOverlay":"hover","dataRole":"slide"}},"[data-content-
type=\"banner\"]":{"Magento_PageBuilder\/js\/widget\/show-on-hover":
{"buttonSelector":".pagebuilder-banner-
button","showOverlay":"hover","dataRole":"banner"}},"[data-content-
type=\"buttons\"]":{"Magento_PageBuilder\/js\/content-type\/buttons\/appearance\/
inline\/widget":false},"[data-content-type=\"products\"][data-
appearance=\"carousel\"]":{"Magento_PageBuilder\/js\/content-type\/products\/
appearance\/carousel\/widget":false}},
"breakpoints": {"desktop":{"conditions":{"min-
width":"1024px"},"options":{"products":{"default":{"slidesToShow":"5"}}}},"tablet":
{"conditions":{"max-width":"1024px","min-width":"768px"},"options":{"products":
{"default":{"slidesToShow":"4"},"continuous":{"slidesToShow":"3"}}}},"mobile":
{"conditions":{"max-width":"768px","min-width":"640px"},"options":{"products":
{"default":{"slidesToShow":"3"}}}},"mobile-small":{"conditions":{"max-
width":"640px"},"options":{"products":{"default":{"slidesToShow":"2"},"continuous":
{"slidesToShow":"1"}}}}} }
}
}
</script>
<script type="text/x-magento-init">
{
"*": {
"mage/cookies": {
"expires": null,
"path": "\u002F",
"domain": ".packtpub.com",
"secure": false,
"lifetime": "3600"
}
}
}
</script>
<noscript>
<div class="message global noscript">
<div class="content">
<p>
<strong>JavaScript seems to be disabled in your
browser.</strong>
<span>For the best experience on our site, be sure to turn on
Javascript in your browser.</span>
</p>
</div>
</div>
</noscript>
<script>
require.config({
map: {
'*': {
wysiwygAdapter: 'mage/adminhtml/wysiwyg/tiny_mce/tinymce4Adapter'
}
}
});
</script>
<script>
window.cookiesConfig = window.cookiesConfig || {};
window.cookiesConfig.secure = false;
</script>
<script>
require.config({
paths: {
googleMaps: 'https\u003A\u002F\u002Fmaps.googleapis.com\u002Fmaps\
u002Fapi\u002Fjs\u003Fv\u003D3\u0026key\u003D'
},
config: {
'Magento_PageBuilder/js/utils/map': {
style: ''
},
'Magento_PageBuilder/js/content-type/map/preview': {
apiKey: '',
apiKeyErrorMessage: 'You\u0020must\u0020provide\u0020a\u0020valid\
u0020\u003Ca\u0020href\u003D\u0027https\u003A\u002F\u002Fwww.packtpub.com\
u002Fadminhtml\u002Fsystem_config\u002Fedit\u002Fsection\u002Fcms\u002F\
u0023cms_pagebuilder\u0027\u0020target\u003D\u0027_blank\u0027\u003EGoogle\
u0020Maps\u0020API\u0020key\u003C\u002Fa\u003E\u0020to\u0020use\u0020a\u0020map.'
},
'Magento_PageBuilder/js/form/element/map': {
apiKey: '',
apiKeyErrorMessage: 'You\u0020must\u0020provide\u0020a\u0020valid\
u0020\u003Ca\u0020href\u003D\u0027https\u003A\u002F\u002Fwww.packtpub.com\
u002Fadminhtml\u002Fsystem_config\u002Fedit\u002Fsection\u002Fcms\u002F\
u0023cms_pagebuilder\u0027\u0020target\u003D\u0027_blank\u0027\u003EGoogle\
u0020Maps\u0020API\u0020key\u003C\u002Fa\u003E\u0020to\u0020use\u0020a\u0020map.'
},
}
});
</script>
<script>
require.config({
shim: {
'Magento_PageBuilder/js/utils/map': {
deps: ['googleMaps']
}
}
});
</script>

<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KHLZ7JF"
height="0" width="0"
style="display:none;visibility:hidden"></iframe></noscript>

<div class="page-wrapper"><header class="page-header"><div id="pk--locale-


switcher"><div id="geoip-modal-content-wrapper" data-bind="scope:'geoip-store-
select'">
<!-- ko template: getTemplate() --><!-- /ko -->
<script type="text/x-magento-init">
{
"*": {
"Magento_Ui/js/core/app": {
"components": {
"geoip-store-select": {
"component": "Packt_GeoIP/js/geoip_banner",
"template" : "Packt_GeoIP/ko/geoip_banner",
"dataUrl" : "https://www.packtpub.com/",
"buttonLabel" : "Continue >",
"contentText": "Choose another country or region to see
content specific to your location"
}
}
}
}
}
</script>
</div>
</div><div class="panel wrapper"><div class="panel header"><span class="hidden-xs
hidden-sm>">
<strong class="logo hidden-xs hidden-sm">
<img src="https://www.packtpub.com/media/logo/stores/1/logo.png" title="Packt Logo"
alt="Packt Logo" width="135" height="64" class="hidden-xs hidden-sm" />
</strong>
</span>
<div class="block block-search algolia-search-block">
<div class="block block-title"><strong>Search</strong></div>
<div class="block block-content">
<form id="search_mini_form" action="https://www.packtpub.com/catalogsearch/result/"
method="get">
<div id="algolia-searchbox">
<label for="search">Search:</label>
<input id="search" type="text" name="q" class="input-text algolia-search-input"
autocomplete="off" spellcheck="false" autocorrect="off" autocapitalize="off"
placeholder="Search..." />
<span class="clear-cross clear-query-autocomplete"></span>
<button class="magnifying-glass">
<i aria-hidden="true" class="fa fa-search"></i>
</button>
</div>
</form>
</div>
</div>
<div class="mobile-search-icon hidden-sm hidden-xs">
<button class="mobile-magnifying-glass">
<i aria-hidden="true" class="fa fa-search searchmobile">
</i>
<i aria-hidden="true" class="fa fa-close closemobile">
</i>
</button>
</div>
<a class="action skip contentarea" href="#contentarea">
<span>
Skip to Content </span>
</a>
<ul class="header links"></ul><style>
.menurow {
width:1200px;
}

.navbar .dropdown-toggle,
.navbar .dropdown-menu a {
cursor: pointer;
}

.navbar .dropdown-item.active,
.navbar .dropdown-item:active {
color: inherit;
text-decoration: none;
background-color: inherit;
background-color: #3c3c3b;
font-size: 14px;
}

.navbar .dropdown-item:focus,
.navbar .dropdown-item:hover {
color: #16181b;
text-decoration: none;
background-color: #3c3c3b;
font-size: 14px;
}

.subscribe_cta {
margin: 6px 0 0 20px;
}

.subscribe_cta:hover {
background-color : #ec6611;
border-color : #ec6611;
color : #ffffff;
text-decoration : underline;
}

.subscribe_cta:focus {
background-color : #ec6611;
border-color : #ec6611;
color : #ffffff;
text-decoration : underline;
}

#mobile {
position: absolute;
}

#navbarContent {
margin-left: -25px;
background-color: #3c3c3b;
width: 350px;
padding: 10px;
overflow-y : scroll;
}

.authlink {
width: 50%;
text-align: center;
margin-top:25px;
}

.sub_ctalink {
width: 50%;
margin-top: 4px;
}

.navbar a:link {
color: #ffffff;
text-decoration: none;
}

.navbar a:visited {
color: #ffffff;
text-decoration: none;
}

.navbar a:hover {
color: #ec6611;
text-decoration: none;
}
.navbar a:active {
color: #ec6611;
text-decoration: none;
}

.dropdown-menu {
border: none;
background-color: #3c3c3b;
}

.dropdown-toggle {
color: white;
font-size : 14px;
}

.dropdown-item {
font-size: 14px;
}

hr {
background-color: #ffffff;
}

@media only screen and (min-width: 992px) {


.navbar{
padding : 1px 0 0 0;
}

.navbar-expand-lg .navbar-nav .dropdown-menu {


width: max-content;
background-color: #3c3c3b;
}

.navbar .dropdown-toggle {
color: white;
padding-right: 10px;
text-decoration: none;
}

#mobile {
display: none;
}

.class123 {
width: 50% !important;
}

.navbar .row {
margin-left: 0 !important;
margin-right: 0 !important;
max-width: 1200px;
}

.dropdown-menu {
left: 25%;
margin-top: 25px;
transform: translate(-63%, 0);
}
.dropdown-items {
margin-top: 0 !important;
margin: auto;
width:380px;
float:left;
}

.cat-title {
font-size: 16px;
color: #ffffff;
text-decoration: none;
padding-top: 10px;
padding-bottom: 10px;
font-weight: bold;
}

.categorys {
padding-top: 10px;
padding-bottom: 10px;
}

.category {
font-size: 14px;
color: #ffffff;
}

.navbar a:link {
color: #ffffff;
text-decoration: none;
}

.navbar a:visited {
color: #ffffff;
text-decoration: none;
}

.navbar a:hover {
color: #ec6611;
text-decoration: none;
}

.navbar a:active {
color: #ec6611;
text-decoration: none;
}
}

@media (max-width: 991px) and (min-width: 767px) {


.navbar .dropdown-toggle:not(.nav-link)::after {
display: inline-block;
width: 0;
height: 0;
margin-left: .5em;
vertical-align: 0;
border-bottom: .3em solid transparent;
border-top: .3em solid transparent;
border-left: .3em solid;
}
#desktop {
display: none;
}

.navbar a:link {
color: #ffffff;
text-decoration: none;
}

.navbar a:visited {
color: #ffffff;
text-decoration: none;
}

.navbar a:hover {
color: #ec6611;
text-decoration: none;
}

.navbar a:active {
color: #ec6611;
}

header.page-header .logo {
position:absolute;
left:10%;
}

.block-search {
position:absolute;
right:50%;
}

}
</style>
<nav class="navbar navbar-expand-lg" id="desktop">
<div id="navbarContent-desk" class="collapse navbar-collapse">
<div class=" navbar-nav mx-auto">
<div class=" dropdown dropdown-desktop">
<a href="https://www.packtpub.com/#" class="dropdown-toggle" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false"> Browse All</a>
<div class="dropdown-menu">
<div class="menurow row">
<div data-content-type="row" data-appearance="contained" data-element="main"><div
data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}"
data-element="inner" style="justify-content: flex-start; display: flex; flex-
direction: column; background-position: left top; background-size: cover;
background-repeat: no-repeat; background-attachment: scroll; border-style: none;
border-width: 1px; border-radius: 0px; margin: 0px 0px 10px; padding: 10px;"><div
data-content-type="text" data-appearance="default" data-element="main"
style="border-style: none; border-width: 1px; border-radius: 0px; margin: 0px;
padding: 0px;">
<div class="dropdown-items col-md-4 row hidden-xs hidden-sm">
<div class="col-md-12 cat-title">
Browse Categories </div>
<div class="col-md-6">
<div class="categorys"> <a class="category" href="https://www.packtpub.com/web-
development">
Web Development </a>
</div>
<div class="categorys"> <a class="category"
href="https://www.packtpub.com/programming">
Programming </a>
</div>
<div class="categorys"> <a class="category" href="https://www.packtpub.com/data">
Data </a>
</div>
<div class="categorys"> <a class="category" href="https://www.packtpub.com/cloud-
networking">
Cloud &amp; Networking </a>
</div>
</div>
<div class="col-md-6">
<div class="categorys"> <a class="category" href="https://www.packtpub.com/mobile">
Mobile </a>
</div>
<div class="categorys"> <a class="category"
href="https://www.packtpub.com/security">
Security </a>
</div>
<div class="categorys"> <a class="category" href="https://www.packtpub.com/iot-
hardware">
IOT &amp; Hardware </a>
</div>
<div class="categorys"> <a class="category"
href="https://www.packtpub.com/business-other">
Business </a>
</div>
</div>
</div>
<li class="dropdown-item dropdown hidden-lg hidden-md">
<a class="dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-
expanded="true">
Browse Categories </a>
<ul class="dropdown-menu">
<li class="dropdown-item">
<a href="https://www.packtpub.com/web-development"> Web Development </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/programming"> Programming </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/data"> Data </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/cloud-networking"> Cloud &amp; Networking </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/mobile"> Mobile </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/security"> Security </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/iot-hardware"> IOT &amp; Hardware </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/business-other"> Business </a>
</li>
</ul>
</li>
<div class="dropdown-items col-md-4 row hidden-xs hidden-sm">
<div class="col-md-12 cat-title">
Browse By </div>
<div class="col-md-6">
<div class="categorys"> <a class="category" href="https://www.packtpub.com/all-
products">
All Products </a>
</div>
<div class="categorys"> <a class="category" href="https://www.packtpub.com/all-
products?product_type_filter=Book&amp;released=Available">
All Books </a>
</div>
<div class="categorys"> <a class="category" href="https://www.packtpub.com/all-
products?product_type_filter=Video&amp;released=Available">
All Videos </a>
</div>
<div class="categorys"> <a class="category" href="https://www.packtpub.com/best-
sellers">
Best Sellers </a>
</div>
<div class="categorys"> <a class="category" href="https://www.packtpub.com/new-
ebooks-videos">
Latest Releases </a>
</div>
</div>
</div>
<li class="dropdown-item dropdown hidden-lg hidden-md">
<a class="dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-
expanded="true">
Browse By </a>
<ul class="dropdown-menu">
<li class="dropdown-item">
<a href="https://www.packtpub.com/all-products"> All Products </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/all-products?
product_type_filter=Book&amp;released=Available"> All Books </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/all-products?
product_type_filter=Video&amp;released=Available"> All Videos </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/best-sellers"> Best Sellers </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/new-ebooks-videos"> Latest Releases </a>
</li>
</ul>
</li>
<div class="dropdown-items col-md-4 row hidden-xs hidden-sm">
<div class="col-md-12 cat-title">
Trending </div>
<div class="col-md-6">
<div class="categorys"> <a class="category"
href="https://www.packtpub.com/tech/python">
Python </a>
</div>
<div class="categorys"> <a class="category" href="https://www.packtpub.com/tech/c-
sharp">
C# </a>
</div>
<div class="categorys"> <a class="category" href="https://www.packtpub.com/tech/c-
plus-plus">
C++ </a>
</div>
<div class="categorys"> <a class="category"
href="https://www.packtpub.com/tech/javascript">
Javascript </a>
</div>
<div class="categorys"> <a class="category"
href="https://www.packtpub.com/tech/java">
Java </a>
</div>
</div>
<div class="col-md-6">
<div class="categorys"> <a class="category"
href="https://www.packtpub.com/tech/aws">
AWS </a>
</div>
<div class="categorys"> <a class="category"
href="https://www.packtpub.com/tech/react">
React </a>
</div>
<div class="categorys"> <a class="category"
href="https://www.packtpub.com/tech/azure">
Azure </a>
</div>
<div class="categorys"> <a class="category"
href="https://www.packtpub.com/tech/angular">
Angular </a>
</div>
<div class="categorys"> <a class="category"
href="https://www.packtpub.com/tech/php">
PHP </a>
</div>
</div>
</div>
<li class="dropdown-item dropdown hidden-lg hidden-md">
<a class="dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-
expanded="true">
Trending </a>
<ul class="dropdown-menu">
<li class="dropdown-item">
<a href="https://www.packtpub.com/tech/python"> Python </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/tech/c-sharp"> C# </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/tech/c-plus-plus"> C++ </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/tech/javascript"> Javascript </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/tech/java"> Java </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/tech/aws"> AWS </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/tech/react"> React </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/tech/azure"> Azure </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/tech/angular"> Angular </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/tech/php"> PHP </a>
</li>
</ul>
</li></div></div></div> </div>
</div>
</div>
<div class=" dropdown dropdown-desktop">
<a href="https://www.packtpub.com/free-learning"> Free Learning</a>
</div>
</div>
</div>
</nav>
<nav class="navbar navbar-expand-lg" id="mobile">
<button type="button" data-toggle="collapse" data-target="#navbarContent" aria-
controls="navbars" aria-expanded="false" aria-label="Toggle navigation"
class="buttonnav navbar-toggler">
<span class="navbar-toggler-icon">
<img src="https://img.icons8.com/ios-filled/50/ffffff/menu.png" />
</span>
</button>
<div id="navbarContent" class="collapse navbar-collapse">
<div class="hidden-lg hidden-md row navrow" data-label="or">
<div class="authlink">
<a class="signed-out"
href="https://www.packtpub.com/customer/account/login/referer/aHR0cHM6Ly93d3cucGFja
3RwdWIuY29tLz9fX19zdG9yZT11cw%2C%2C/">
Sign In </a>
</div>
<div class=" sub_ctalink">
<a href="https://subscribe.packtpub.com/" target="_blank"
class="subscribe_cta_link">
<button class="subscribe_cta">
Subscribe </button>
</a>
</div>
</div>
<hr>
<ul class="navbar-nav mr-auto">
<li class="nav-item dropdown">
<a href="https://www.packtpub.com/#" class="nav-link dropdown-toggle" data-
toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Browse All</a>
<ul class="dropdown-menu">
<div data-content-type="row" data-appearance="contained" data-element="main"><div
data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}"
data-element="inner" style="justify-content: flex-start; display: flex; flex-
direction: column; background-position: left top; background-size: cover;
background-repeat: no-repeat; background-attachment: scroll; border-style: none;
border-width: 1px; border-radius: 0px; margin: 0px 0px 10px; padding: 10px;"><div
data-content-type="text" data-appearance="default" data-element="main"
style="border-style: none; border-width: 1px; border-radius: 0px; margin: 0px;
padding: 0px;">
<div class="dropdown-items col-md-4 row hidden-xs hidden-sm">
<div class="col-md-12 cat-title">
Browse Categories </div>
<div class="col-md-6">
<div class="categorys"> <a class="category" href="https://www.packtpub.com/web-
development">
Web Development </a>
</div>
<div class="categorys"> <a class="category"
href="https://www.packtpub.com/programming">
Programming </a>
</div>
<div class="categorys"> <a class="category" href="https://www.packtpub.com/data">
Data </a>
</div>
<div class="categorys"> <a class="category" href="https://www.packtpub.com/cloud-
networking">
Cloud &amp; Networking </a>
</div>
</div>
<div class="col-md-6">
<div class="categorys"> <a class="category" href="https://www.packtpub.com/mobile">
Mobile </a>
</div>
<div class="categorys"> <a class="category"
href="https://www.packtpub.com/security">
Security </a>
</div>
<div class="categorys"> <a class="category" href="https://www.packtpub.com/iot-
hardware">
IOT &amp; Hardware </a>
</div>
<div class="categorys"> <a class="category"
href="https://www.packtpub.com/business-other">
Business </a>
</div>
</div>
</div>
<li class="dropdown-item dropdown hidden-lg hidden-md">
<a class="dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-
expanded="true">
Browse Categories </a>
<ul class="dropdown-menu">
<li class="dropdown-item">
<a href="https://www.packtpub.com/web-development"> Web Development </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/programming"> Programming </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/data"> Data </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/cloud-networking"> Cloud &amp; Networking </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/mobile"> Mobile </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/security"> Security </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/iot-hardware"> IOT &amp; Hardware </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/business-other"> Business </a>
</li>
</ul>
</li>
<div class="dropdown-items col-md-4 row hidden-xs hidden-sm">
<div class="col-md-12 cat-title">
Browse By </div>
<div class="col-md-6">
<div class="categorys"> <a class="category" href="https://www.packtpub.com/all-
products">
All Products </a>
</div>
<div class="categorys"> <a class="category" href="https://www.packtpub.com/all-
products?product_type_filter=Book&amp;released=Available">
All Books </a>
</div>
<div class="categorys"> <a class="category" href="https://www.packtpub.com/all-
products?product_type_filter=Video&amp;released=Available">
All Videos </a>
</div>
<div class="categorys"> <a class="category" href="https://www.packtpub.com/best-
sellers">
Best Sellers </a>
</div>
<div class="categorys"> <a class="category" href="https://www.packtpub.com/new-
ebooks-videos">
Latest Releases </a>
</div>
</div>
</div>
<li class="dropdown-item dropdown hidden-lg hidden-md">
<a class="dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-
expanded="true">
Browse By </a>
<ul class="dropdown-menu">
<li class="dropdown-item">
<a href="https://www.packtpub.com/all-products"> All Products </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/all-products?
product_type_filter=Book&amp;released=Available"> All Books </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/all-products?
product_type_filter=Video&amp;released=Available"> All Videos </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/best-sellers"> Best Sellers </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/new-ebooks-videos"> Latest Releases </a>
</li>
</ul>
</li>
<div class="dropdown-items col-md-4 row hidden-xs hidden-sm">
<div class="col-md-12 cat-title">
Trending </div>
<div class="col-md-6">
<div class="categorys"> <a class="category"
href="https://www.packtpub.com/tech/python">
Python </a>
</div>
<div class="categorys"> <a class="category" href="https://www.packtpub.com/tech/c-
sharp">
C# </a>
</div>
<div class="categorys"> <a class="category" href="https://www.packtpub.com/tech/c-
plus-plus">
C++ </a>
</div>
<div class="categorys"> <a class="category"
href="https://www.packtpub.com/tech/javascript">
Javascript </a>
</div>
<div class="categorys"> <a class="category"
href="https://www.packtpub.com/tech/java">
Java </a>
</div>
</div>
<div class="col-md-6">
<div class="categorys"> <a class="category"
href="https://www.packtpub.com/tech/aws">
AWS </a>
</div>
<div class="categorys"> <a class="category"
href="https://www.packtpub.com/tech/react">
React </a>
</div>
<div class="categorys"> <a class="category"
href="https://www.packtpub.com/tech/azure">
Azure </a>
</div>
<div class="categorys"> <a class="category"
href="https://www.packtpub.com/tech/angular">
Angular </a>
</div>
<div class="categorys"> <a class="category"
href="https://www.packtpub.com/tech/php">
PHP </a>
</div>
</div>
</div>
<li class="dropdown-item dropdown hidden-lg hidden-md">
<a class="dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-
expanded="true">
Trending </a>
<ul class="dropdown-menu">
<li class="dropdown-item">
<a href="https://www.packtpub.com/tech/python"> Python </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/tech/c-sharp"> C# </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/tech/c-plus-plus"> C++ </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/tech/javascript"> Javascript </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/tech/java"> Java </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/tech/aws"> AWS </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/tech/react"> React </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/tech/azure"> Azure </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/tech/angular"> Angular </a>
</li>
<li class="dropdown-item">
<a href="https://www.packtpub.com/tech/php"> PHP </a>
</li>
</ul>
</li></div></div></div> </ul>
<hr>
<a href="https://www.packtpub.com/free-learning"> Free Learning</a>
<ul class="dropdown-menu">
</ul>
<hr>
</li>
</ul>
</div>
</nav>
<script>
require(
['jquery'], function ($) {
$(function () {
$(document).ready(function () {

$('.navbar .dropdown-item.dropdown').on('click', function


(e) {
var $el = $(this).children('.dropdown-toggle');
if ($el.length > 0 && $(e.target).hasClass('dropdown-
toggle')) {
var $parent = $el.offsetParent(".dropdown-menu");
$(this).parent("li").toggleClass('open');

if (!$parent.parent().hasClass('navbar-nav')) {
if ($parent.hasClass('show')) {
$parent.removeClass('show');
$el.next().removeClass('show');
} else {

$parent.parent().find('.show').removeClass('show');
$parent.addClass('show');
$el.next().addClass('show');
}
e.preventDefault();
e.stopPropagation();
}
return;
}
});

$('.navbar .dropdown').on('hidden.bs.dropdown', function ()


{
$(this).find('li.dropdown').removeClass('show open');
$(this).find('ul.dropdown-menu').removeClass('show
open');
});

$('.navbar .dropdown-items.dropdown').on('click', function


(e) {
var $el = $(this).children('.dropdown-toggle');
var $parent = $el.offsetParent(".dropdown-menu");

if (!$parent.parent().hasClass('navbar-nav')) {
if ($parent.hasClass('show')) {
$parent.removeClass('show');
$el.next().removeClass('show');
} else {

$parent.parent().find('.show').removeClass('show');
$parent.addClass('show');
$el.next().addClass('show');
}
e.preventDefault();
e.stopPropagation();
}
return;
});

$(document).click(function (event) {
var clickover = $(event.target);
var _opened = $(".navbar-collapse").hasClass("navbar-
collapse collapse show");
if (_opened === true && !clickover.hasClass("navbar-
toggler")) {
$("button.navbar-toggler").click();
}
});
});
});
});
</script>
<span class="hidden-lg hidden-md>">
<strong class="logo hidden-lg hidden-md ">
<img src="https://www.packtpub.com/media/logo/stores/1/logo.png" title="Packt Logo"
alt="Packt Logo" width="135" class="hidden-lg hidden-md" />
</strong>
</span>
<div class="mobile-search-icon hidden-lg hidden-md">
<button class="mobile-magnifying-glass">
<i aria-hidden="true" class="fa fa-search searchmobile">
</i>
<i aria-hidden="true" class="fa fa-close closemobile">
</i>
</button>
</div>
<div class="authorization-link" data-label="or">
<a class="signed-out"
href="https://www.packtpub.com/customer/account/login/referer/aHR0cHM6Ly93d3cucGFja
3RwdWIuY29tLz9fX19zdG9yZT11cw%2C%2C/">
Sign In </a>
</div>
<div data-block="minicart" class="minicart-wrapper">
<a class="action showcart" href="https://www.packtpub.com/checkout/cart/" data-
bind="scope: 'minicart_content'">
<span class="text">My Cart</span>
<span class="counter qty empty" data-bind="css: { empty: !!
getCartParam('summary_count') == false && !isLoading() }, blockLoader: isLoading">
<span class="counter-number"><!-- ko text: getCartParam('summary_count') --><!--
/ko --></span>
<span class="counter-label">
<!-- ko if: getCartParam('summary_count') -->
<!-- ko text: getCartParam('summary_count') --><!-- /ko -->
<!-- ko i18n: 'items' --><!-- /ko -->
<!-- /ko -->
</span>
</span>
</a>
<div class="block block-minicart" data-role="dropdownDialog" data-mage-
init='{"dropdownDialog":{
"appendTo":"[data-block=minicart]",
"triggerTarget":".showcart",
"timeout": "2000",
"closeOnMouseLeave": false,
"closeOnEscape": true,
"triggerClass":"active",
"parentClass":"active",
"buttons":[]}}'>
<div id="minicart-content-wrapper" data-bind="scope: 'minicart_content'">
<!-- ko template: getTemplate() --><!-- /ko -->
</div>
</div>
<script>
window.checkout =
{"shoppingCartUrl":"https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/checkout\/cart\/","checkoutUrl":"ht
tps:\/\/www.packtpub.com\/checkout\/","updateItemQtyUrl":"https:\/\/
www.packtpub.com\/checkout\/sidebar\/updateItemQty\/","removeItemUrl":"https:\/\/
www.packtpub.com\/checkout\/sidebar\/
removeItem\/","imageTemplate":"Magento_Catalog\/product\/
image_with_borders","baseUrl":"https:\/\/
www.packtpub.com\/","minicartMaxItemsVisible":2,"websiteId":"1","maxItemsToDisplay"
:10,"storeId":"1","customerLoginUrl":"https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/customer\/
account\/login\/referer\/aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw%2C
%2C\/","isRedirectRequired":false,"autocomplete":"off","captcha":{"user_login":
{"isCaseSensitive":false,"imageHeight":50,"imageSrc":"","refreshUrl":"https:\/\/
www.packtpub.com\/captcha\/refresh\/","isRequired":false,"timestamp":1609514047}}};
</script>
<script type="text/x-magento-init">
{
"[data-block='minicart']": {
"Magento_Ui/js/core/app": {"components":{"minicart_content":
{"children":{"subtotal.container":{"children":{"subtotal":{"children":
{"subtotal.totals":{"config":
{"display_cart_subtotal_incl_tax":1,"display_cart_subtotal_excl_tax":0,"template":"
Magento_Tax\/checkout\/minicart\/subtotal\/totals"},"component":"Magento_Tax\/js\/
view\/checkout\/minicart\/subtotal\/totals","children":{"subtotal.totals.msrp":
{"component":"Magento_Msrp\/js\/view\/checkout\/minicart\/subtotal\/
totals","config":{"displayArea":"minicart-subtotal-
hidden","template":"Magento_Msrp\/checkout\/minicart\/subtotal\/
totals"}}}}},"component":"uiComponent","config":{"template":"Magento_Checkout\/
minicart\/subtotal"}}},"component":"uiComponent","config":
{"displayArea":"subtotalContainer"}},"item.renderer":
{"component":"uiComponent","config":
{"displayArea":"defaultRenderer","template":"Magento_Checkout\/minicart\/item\/
default"},"children":{"item.image":{"component":"Magento_Catalog\/js\/view\/
image","config":{"template":"Magento_Catalog\/product\/
image","displayArea":"itemImage"}},"checkout.cart.item.price.sidebar":
{"component":"uiComponent","config":{"template":"Magento_Checkout\/minicart\/
item\/price","displayArea":"priceSidebar"}}}},"extra_info":
{"component":"uiComponent","config":{"displayArea":"extraInfo"}},"promotion":
{"component":"uiComponent","config":{"displayArea":"promotion"}}},"config":
{"itemRenderer":
{"default":"defaultRenderer","simple":"defaultRenderer","virtual":"defaultRenderer"
},"template":"Magento_Checkout\/minicart\/
content"},"component":"Magento_Checkout\/js\/view\/minicart"}},"types":
[]} },
"*": {
"Magento_Ui/js/block-loader": "https\u003A\u002F\u002Fwww.packtpub.com\
u002Fstatic\u002Fversion1607340419\u002Ffrontend\u002FPackt\u002Fdefault\
u002Fen_GB\u002Fimages\u002Floader\u002D1.gif"
}
}
</script>
</div>
<a href="https://subscribe.packtpub.com/" target="_blank" class="subscribe_cta_link
hidden-xs hidden-sm">
<button class="subscribe_cta">
Subscribe </button>
</a>
</div></div><div class="header content">
<script type="text/javascript">
window.ChromepayButtonName = '';
window.ChromepayEnabled = '0';
window.ChromePaymentMode = 'direct';</script>
<script>
//Global variables
var carrierCode;
var token = 'Bearer 88zhz037daqiv583ft8mh0zgmlpf9649';
var cardType;
var totalAmount;
var baseUrl = 'https://www.packtpub.com/';
var baseCurrency = '';
var orderCode;
var reqShipping = '';
function initPaymentRequest() {

const networks = [
"amex", "mastercard", "visa"
];
const types = ['credit'];
const supportedInstruments = [{
supportedMethods: 'basic-card',
data: {
supportedNetworks: networks,
supportedTypes: types
}
}];
var isCustomerLoggedIn = window.checkoutConfig.isCustomerLoggedIn;
var guestMaskedQuoteId = window.checkoutConfig.quoteData.entity_id;
var isDownlodable = false;
const details = {
displayItems: [

{
label: 'Subtotal',
amount: { currency: '', value: '0' }
},
{
label: 'Shipping',
amount: {currency: '', value: ''},
pending: true,
},
{
label: 'Tax',
amount: {currency: '', value: '0'},
pending: true,
},
],
total: {
label: 'Total',
amount: { currency: '', value: '' }
},
};
var options = {
requestShipping: reqShipping,
requestPayerEmail: true,
requestPayerPhone: true,
requestPayerName: true
};
/**
* Updates the shipping price and the total based on the shipping address.
*
* @private
* @param {PaymentDetails} details The line items and shipping options.
* @param {PaymentAddress} shippingAddress User's preferred shipping address to
* use for shipping price calculations.
* @param {function} callback The callback to invoke with updated line items
and
* shipping options.
*/
//ajax req for available shipping method

function updateDetails(details, shippingOption, shippingAddress, resolve,


reject) {
var k;
var selectedOptIndex;
for (k = 0; k < details.shippingOptions.length; k++) {
if (details.shippingOptions[k].id == shippingOption) {
selectedOptIndex = k;
break;
}
}

carrierCode = details.shippingOptions[selectedOptIndex].carrier;
var newShippingAmount =
Number(details.shippingOptions[selectedOptIndex].amount.value);
var newTotal = Number(0) + newShippingAmount;
selectedShippingOption = details.shippingOptions[selectedOptIndex];
var productCount = Number(0);
var shippingPosition = Number(productCount + 1);
details.total.amount.value = newTotal;
totalAmount = newTotal;
details.displayItems[shippingPosition].amount.value = newShippingAmount;
selectedShippingOption.selected = true;
var totals = updateTotals(carrierCode, shippingAddress);
if(totals){
var taxPosition = Number(productCount + 2);
details.displayItems[taxPosition].amount.value =
totals.base_tax_amount;
// Update total after tax
details.total.amount.value = totals.base_grand_total;
}
resolve(details);
} // end of updateDetails fn

function updateTotals(carrierCode, shippingAddress){


var countryCode = shippingAddress.country;
var req = {
'addressInformation' : {
'address' : {
'countryId' : countryCode,
'region':"",
'postcode':null
},
'shipping_method_code' : carrierCode,
'shipping_carrier_code' : carrierCode
}
}
var jsonReq = JSON.stringify(req);
var totalsUrl;
if (isCustomerLoggedIn) { //Api for logged inb customer
totalsUrl = baseUrl + 'rest/default/V1/carts/mine/totals-information';
} else { // Api for guest customer
totalsUrl = baseUrl + 'rest/default/V1/guest-carts/' +
guestMaskedQuoteId + '/totals-information';
}
var xhttp = new XMLHttpRequest();
xhttp.open("POST", totalsUrl, false);
xhttp.setRequestHeader("Content-type", "application/json");
if (isCustomerLoggedIn) {
xhttp.setRequestHeader("Authorization", token);
}
xhttp.send(jsonReq);
var totals = JSON.parse(xhttp.responseText);
return totals;
} //--------------end of updateTotals fn -----------

function updateDetailsAddress(details, request, resolve, reject) {


var countryCode = request.country;
var req = {
'address' : {
'country_id' : ''
}
};
req.address.country_id = request.country;
var jsonReq = JSON.stringify(req);
var apiUrl;
if (isCustomerLoggedIn) { //Api for logged inb customer
apiUrl = baseUrl + 'rest/default/V1/carts/mine/estimate-shipping-
methods';
} else { // Api for guest customer
apiUrl = baseUrl + 'rest/default/V1/guest-carts/' + guestMaskedQuoteId
+ '/estimate-shipping-methods';
}
var xhttp = new XMLHttpRequest();
xhttp.open("POST", apiUrl, false);
xhttp.setRequestHeader("Content-type", "application/json");
if (isCustomerLoggedIn) {
xhttp.setRequestHeader("Authorization", token);
}
xhttp.send(jsonReq);
var shippindMethods = JSON.parse(xhttp.responseText);
var shippingOptionsNew = [];
for (i = 0; i < shippindMethods.length; i++) {
shippingOptionsNew.push({
id: shippindMethods[i].method_code,
label: shippindMethods[i].carrier_title,
carrier: shippindMethods[i].carrier_code,
amount: {currency: '', value: shippindMethods[i].amount},
selected: false,
});
}
details.shippingOptions = shippingOptionsNew;
resolve(details);
} //--------------- end of updateDetailsAddress -------------

// Initialization
var request = new PaymentRequest(supportedInstruments, details, options);
request.addEventListener('shippingaddresschange', function(evt) {
evt.updateWith(new Promise(function(resolve, reject) {
updateDetailsAddress(details, request.shippingAddress, resolve,
reject);
}));
});
//Update shipping rate by selected shipping method
request.addEventListener('shippingoptionchange', function(evt) {
evt.updateWith(new Promise(function(resolve, reject) {
updateDetails(details, request.shippingOption, request.shippingAddress,
resolve, reject);
}));
});
return request;
} // ------------- End of initPaymentRequest fn ---------------

/**
* Invokes PaymentRequest for credit cards.
*
* @param {PaymentRequest} request The PaymentRequest object.
*/
function onBuyClicked(request) {

var isCustomerLoggedIn = window.checkoutConfig.isCustomerLoggedIn;


var isDownlodable = false;
if (isCustomerLoggedIn == false && isDownlodable == true) {
var error = 'Please log in to continue';
alert(error);
throw(error);
}

request.show().then(function(instrumentResponse) {
orderCode = createOrder(instrumentResponse);
//console.log('order created');
//console.log(orderCode);
//console.log('REDIRECTING');
if (instrumentResponse && orderCode){
// window.location.href = baseUrl + 'checkout/onepage/success';
window.location.href = baseUrl + 'worldpay/threedsecure/auth';
}
}).catch(function(err) {
throw(err);
});
} // ----------------- End of onBuyClicked fn --------------------

/**
* Simulates processing the payment data on the server.
*
* @param {instrumentResponse} instrumentResponse The payment information to
* process.
*/
function createOrder(instrumentResponse) {
var guestMaskedQuoteId = window.checkoutConfig.quoteData.entity_id;
var apiUrl;
var orderResponse;
if (isCustomerLoggedIn) { //Api for logged in customer
apiUrl = baseUrl + 'rest/default/V1/carts/mine/shipping-information';
} else { // Api for guest customer
apiUrl = baseUrl + 'rest/default/V1/guest-carts/' + guestMaskedQuoteId +
'/shipping-information';
}

var fullName = instrumentResponse.details.billingAddress.recipient;


var strArray = fullName.split(" ");
var firstName = strArray[0];
var lastName;
//firstname will be used as lastname incase user dont have lastname (Magento
validation)
if (strArray[1]) {
lastName = strArray[1];
} else {
lastName = firstName;
}

//Add shipping information to the cart


// region id will be used as 0 as default (Magento validation)
var customerDetails = { "addressInformation": {
"shipping_address": {
"region": "",
"region_id": 0,
"region_code": "",
"country_id": "",
"street": [
""
],
"postcode": "",
"city": "",
"firstname": "",
"lastname": "",
"email": "",
"telephone": ""
},
"billing_address": {
"email": instrumentResponse.payerEmail,
"region": instrumentResponse.details.billingAddress.city,
"region_id": 0,
"region_code":
instrumentResponse.details.billingAddress.region,
"country_id":
instrumentResponse.details.billingAddress.country,
"street":
instrumentResponse.details.billingAddress.addressLine,
"postcode":
instrumentResponse.details.billingAddress.postalCode,
"city": instrumentResponse.details.billingAddress.city,
"telephone": instrumentResponse.details.billingAddress.phone,
"firstname": firstName,
"lastname": lastName
},
"shipping_carrier_code": "",
"shipping_method_code": ""
}
}

if (instrumentResponse.shippingAddress) {
//shipping information
customerDetails.addressInformation.shipping_address.region =
instrumentResponse.shippingAddress.city;
customerDetails.addressInformation.shipping_address.region_id = 0;
customerDetails.addressInformation.shipping_address.region_code =
instrumentResponse.shippingAddress.region;
customerDetails.addressInformation.shipping_address.country_id =
instrumentResponse.shippingAddress.country;
customerDetails.addressInformation.shipping_address.street =
instrumentResponse.shippingAddress.addressLine;
customerDetails.addressInformation.shipping_address.postcode =
instrumentResponse.shippingAddress.postalCode;
customerDetails.addressInformation.shipping_address.city =
instrumentResponse.shippingAddress.city;
customerDetails.addressInformation.shipping_address.telephone =
instrumentResponse.shippingAddress.phone;
customerDetails.addressInformation.shipping_address.firstname = firstName;
customerDetails.addressInformation.shipping_address.lastname = lastName;
}

//Shipping information
customerDetails.addressInformation.shipping_carrier_code = carrierCode;
customerDetails.addressInformation.shipping_method_code =
instrumentResponse.shippingOption;

var jsonCustomerDetails = JSON.stringify(customerDetails);


let cardNo = instrumentResponse.details.cardNumber;
//Get the card type
cardType = getCardType(cardNo);

if (instrumentResponse.shippingAddress) {
var xhttp = new XMLHttpRequest();
xhttp.open("POST", apiUrl, false);
xhttp.setRequestHeader("Content-type", "application/json");
xhttp.setRequestHeader("Authorization", token);
xhttp.send(jsonCustomerDetails);
}

//card details
let cardNumber = instrumentResponse.details.cardNumber;
let cvc = instrumentResponse.details.cardSecurityCode;
let cardholderName = instrumentResponse.details.cardholderName;
let expiryMonth = instrumentResponse.details.expiryMonth;
let expiryYear = instrumentResponse.details.expiryYear;
//Add payment information and place the order
var paymentDetails = {
"paymentMethod": {
"method": "worldpay_cc",
"additional_data": {
"cc_cid" : cvc,
"cc_type" : cardType,
"cc_exp_year" : expiryYear,
"cc_exp_month" : expiryMonth,
"cc_number" : cardNumber,
"cc_name" : cardholderName,
"save_my_card" : false,
"cse_enabled" : false,
"encryptedData" : null,
"tokenCode" : null,
"isSavedCardPayment" : false,
"isChromePay" : "1"
}
},
"billing_address": {
"email": instrumentResponse.payerEmail,
"region": instrumentResponse.details.billingAddress.city,
"region_id": 0,
"region_code":
instrumentResponse.details.billingAddress.region,
"country_id":
instrumentResponse.details.billingAddress.country,
"street":
instrumentResponse.details.billingAddress.addressLine,
"postcode":
instrumentResponse.details.billingAddress.postalCode,
"city": instrumentResponse.details.billingAddress.city,
"telephone": instrumentResponse.details.billingAddress.phone,
"firstname": firstName,
"lastname": lastName
}
};
var jsonPaymentDetails = JSON.stringify(paymentDetails);
var orderApiUrl;
if (isCustomerLoggedIn) { //Api for logged in customer
orderApiUrl = baseUrl + 'rest/default/V1/carts/mine/payment-information';
} else { // Api for guest customer
orderApiUrl = baseUrl + 'rest/default/V1/guest-carts/' + guestMaskedQuoteId +
'/order';
}

var xhttp = new XMLHttpRequest();


if (isCustomerLoggedIn) {
xhttp.open("POST", orderApiUrl, false);
} else {
xhttp.open("PUT", orderApiUrl, false);
}
xhttp.setRequestHeader("Content-type", "application/json");
xhttp.setRequestHeader("Authorization", token);
xhttp.send(jsonPaymentDetails);
var orderResponse = JSON.parse(xhttp.responseText);
//console.log(orderResponse);

if(isNaN(orderResponse)){
window.location.href = baseUrl + 'checkout/cart?error=true';
exit;
}

return orderResponse;
}// --------------------- end of createOrder ----------------

function getCardType(cardNumber) {
// visa
var re = new RegExp("^4");
if (cardNumber.match(re) != null)
return "VISA-SSL";
// Mastercard
// Updated for Mastercard 2017 BINs expansion
if (/^(5[1-5][0-9]{14}|2(22[1-9][0-9]{12}|2[3-9][0-9]{13}|[3-6][0-9]{14}|7[0-1]
[0-9]{13}|720[0-9]{12}))$/.test(cardNumber))
return "ECMC-SSL";
// AMEX
re = new RegExp("^3[47]");
if (cardNumber.match(re) != null)
return "AMEX-SSL";
// Discover
re = new RegExp("^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-
5]|64[4-9])|65)");
if (cardNumber.match(re) != null)
return "DISCOVER-SSL";
// Diners
re = new RegExp("^36");
if (cardNumber.match(re) != null)
return "DINERS-SSL";
// Diners - Carte Blanche
re = new RegExp("^30[0-5]");
if (cardNumber.match(re) != null)
return "DINERS-SSL";
// JCB
re = new RegExp("^35(2[89]|[3-8][0-9])");
if (cardNumber.match(re) != null)
return "JCB-SSL";
// Visa Electron
re = new RegExp("^(4026|417500|4508|4844|491(3|7))");
if (cardNumber.match(re) != null)
return "VISA-SET";
re = new RegExp("^62|88");
if (cardNumber.match(re) != null)
return "CHINAUNIONPAY-SSL";
return "";
} //end of getCardType
</script>
</div></header> <div class="sections nav-sections">
<div class="nav-actions">
<a href="https://www.packtpub.com/customer/account/login/" class="nav-action
primary login">
Sign In </a>
<a href="https://www.packtpub.com/customer/account/create/" class="nav-action
register">
Register </a>
</div>
<div class="section-items nav-sections-items" data-mage-init='{"tabs":
{"openedState":"active"}}'>
<div class="section-item-title nav-sections-item-title" data-role="collapsible">
<a class="nav-sections-item-switch" data-toggle="switch"
href="#store.links">Menu</a>
</div>
<div class="section-item-content nav-sections-item-content" id="store.links" data-
role="content"></div>
</div>
</div>
<main id="maincontent" class="page-main"><div id="algolia-autocomplete-
container"></div><a id="contentarea" tabindex="-1"></a>
<div class="page messages"><div data-placeholder="messages"></div>
<div data-bind="scope: 'messages'">
<!-- ko if: cookieMessages && cookieMessages.length > 0 -->
<div role="alert" data-bind="foreach: { data: cookieMessages, as: 'message' }"
class="messages">
<div data-bind="attr: {
class: 'message-' + message.type + ' ' + message.type + ' message',
'data-ui-id': 'message-' + message.type
}">
<div data-bind="html: message.text"></div>
</div>
</div>
<!-- /ko -->
<!-- ko if: messages().messages && messages().messages.length > 0 -->
<div role="alert" data-bind="foreach: { data: messages().messages, as: 'message' }"
class="messages">
<div data-bind="attr: {
class: 'message-' + message.type + ' ' + message.type + ' message',
'data-ui-id': 'message-' + message.type
}">
<div data-bind="html: message.text"></div>
</div>
</div>
<!-- /ko -->
</div>
<script type="text/x-magento-init">
{
"*": {
"Magento_Ui/js/core/app": {
"components": {
"messages": {
"component": "Magento_Theme/js/view/messages"
}
}
}
}
}
</script>
</div><div class="columns"><div class="column main"><input name="form_key"
type="hidden" value="H4bQXnxg6SLLbdi4" /><div id="authenticationPopup" data-
bind="scope:'authenticationPopup'" style="display: none;">
<script>
window.authenticationPopup =
{"autocomplete":"off","customerRegisterUrl":"https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/
customer\/account\/create\/","customerForgotPasswordUrl":"https:\/\/
www.packtpub.com\/customer\/account\/forgotpassword\/","baseUrl":"https:\/\/
www.packtpub.com\/"};
</script>
<!-- ko template: getTemplate() --><!-- /ko -->
<script type="text/x-magento-init">
{
"#authenticationPopup": {
"Magento_Ui/js/core/app": {"components":{"authenticationPopup":
{"component":"Magento_Customer\/js\/view\/authentication-popup","children":
{"messages":{"component":"Magento_Ui\/js\/view\/
messages","displayArea":"messages"},"captcha":{"component":"Magento_Captcha\/js\/
view\/checkout\/loginCaptcha","displayArea":"additional-login-form-
fields","formId":"user_login","configSource":"checkout"}}}}} },
"*": {
"Magento_Ui/js/block-loader": "https\u003A\u002F\
u002Fwww.packtpub.com\u002Fstatic\u002Fversion1607340419\u002Ffrontend\u002FPackt\
u002Fdefault\u002Fen_GB\u002Fimages\u002Floader\u002D1.gif"
}
}
</script>
</div>
<script type="text/x-magento-init">
{
"*": {
"Magento_Customer/js/section-config": {
"sections":
{"stores\/store\/switch":"*","stores\/store\/switchrequest":"*","directory\/
currency\/switch":"*","*":["messages"],"customer\/account\/logout":
["recently_viewed_product","recently_compared_product","persistent"],"customer\/
account\/loginpost":"*","customer\/account\/createpost":"*","customer\/account\/
editpost":"*","customer\/ajax\/login":["checkout-
data","cart","captcha"],"catalog\/product_compare\/add":["compare-
products"],"catalog\/product_compare\/remove":["compare-products"],"catalog\/
product_compare\/clear":["compare-products"],"sales\/guest\/reorder":
["cart"],"sales\/order\/reorder":["cart"],"checkout\/cart\/add":["cart","directory-
data","magepal-gtm-jsdatalayer"],"checkout\/cart\/delete":["cart","magepal-gtm-
jsdatalayer"],"checkout\/cart\/updatepost":["cart","magepal-gtm-
jsdatalayer"],"checkout\/cart\/updateitemoptions":["cart","magepal-gtm-
jsdatalayer"],"checkout\/cart\/couponpost":["cart","magepal-gtm-
jsdatalayer"],"checkout\/cart\/estimatepost":["cart","magepal-gtm-
jsdatalayer"],"checkout\/cart\/estimateupdatepost":["cart","magepal-gtm-
jsdatalayer"],"checkout\/onepage\/saveorder":["cart","checkout-data","last-ordered-
items","magepal-gtm-jsdatalayer","checkout-fields"],"checkout\/sidebar\/
removeitem":["cart","magepal-gtm-jsdatalayer"],"checkout\/sidebar\/updateitemqty":
["cart","magepal-gtm-jsdatalayer"],"rest\/*\/v1\/carts\/*\/payment-information":
["cart","last-ordered-items","instant-purchase","magepal-gtm-jsdatalayer"],"rest\/
*\/v1\/guest-carts\/*\/payment-information":["cart","magepal-gtm-
jsdatalayer"],"rest\/*\/v1\/guest-carts\/*\/selected-payment-method":
["cart","checkout-data","magepal-gtm-jsdatalayer"],"rest\/*\/v1\/carts\/*\/
selected-payment-method":["cart","checkout-data","instant-purchase","magepal-gtm-
jsdatalayer"],"authorizenet\/directpost_payment\/place":["cart","checkout-
data"],"wishlist\/index\/add":["wishlist"],"wishlist\/index\/remove":
["wishlist"],"wishlist\/index\/updateitemoptions":["wishlist"],"wishlist\/index\/
update":["wishlist"],"wishlist\/index\/cart":["wishlist","cart"],"wishlist\/
index\/fromcart":["wishlist","cart"],"wishlist\/index\/allcart":
["wishlist","cart"],"wishlist\/shared\/allcart":["wishlist","cart"],"wishlist\/
shared\/cart":["cart"],"customer_order\/cart\/updatefaileditemoptions":
["cart"],"checkout\/cart\/updatefaileditemoptions":["cart"],"customer_order\/
cart\/advancedadd":["cart"],"checkout\/cart\/advancedadd":["cart"],"checkout\/
cart\/removeallfailed":["cart"],"customer_order\/cart\/addfaileditems":
["cart"],"checkout\/cart\/addfaileditems":["cart"],"customer_order\/sku\/
uploadfile":["cart"],"paypal\/express\/placeorder":["cart","checkout-
data"],"paypal\/payflowexpress\/placeorder":["cart","checkout-data"],"paypal\/
express\/onauthorization":["cart","checkout-data"],"customer\/address\/*":
["instant-purchase"],"customer\/account\/*":["instant-purchase"],"vault\/cards\/
deleteaction":["instant-purchase"],"wishlist\/index\/copyitem":
["wishlist"],"wishlist\/index\/copyitems":["wishlist"],"wishlist\/index\/
deletewishlist":["wishlist","multiplewishlist"],"wishlist\/index\/createwishlist":
["multiplewishlist"],"wishlist\/index\/moveitem":["wishlist"],"wishlist\/index\/
moveitems":["wishlist"],"wishlist\/search\/addtocart":
["cart","wishlist"],"multishipping\/checkout\/overviewpost":
["cart"],"giftregistry\/index\/cart":["cart"],"giftregistry\/view\/addtocart":
["cart"],"braintree\/paypal\/placeorder":["cart","checkout-data"],"persistent\/
index\/unsetcookie":["persistent"],"review\/product\/post":
["review"],"ammostviewed\/cart\/add":["cart","messages"],"packt\/index\/index":
["cart","checkout-data"]},
"clientSideSections": ["checkout-data","cart-data","chatData"],
"baseUrls":
["https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/","https:\/\/fanyv88.com:443\/http\/www.packtpub.com\/"],
"sectionNames": ["messages","customer","compare-products","last-
ordered-items","cart","directory-data","captcha","wishlist","instant-
purchase","multiplewishlist","persistent","review","chatData","recently_viewed_prod
uct","recently_compared_product","product_data_storage","paypal-billing-
agreement","magepal-gtm-jsdatalayer","checkout-fields","collection-point-
result","pickup-location-result"] }
}
}
</script>
<script type="text/x-magento-init">
{
"*": {
"Magento_Customer/js/customer-data": {
"sectionLoadUrl": "https\u003A\u002F\u002Fwww.packtpub.com\
u002Fcustomer\u002Fsection\u002Fload\u002F",
"expirableSectionLifetime": 60,
"expirableSectionNames": ["cart","persistent"],
"cookieLifeTime": "3600",
"updateSessionUrl": "https\u003A\u002F\u002Fwww.packtpub.com\
u002Fcustomer\u002Faccount\u002FupdateSession\u002F"
}
}
}
</script>
<script type="text/x-magento-init">
{
"*": {
"Magento_Customer/js/invalidation-processor": {
"invalidationRules": {
"website-rule": {
"Magento_Customer/js/invalidation-rules/website-rule": {
"scopeConfig": {
"websiteId": "1"
}
}
}
}
}
}
}
</script>
<script type="text/x-magento-init">
{
"body": {
"pageCache":
{"url":"https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/page_cache\/block\/render\/?
___store=us","handles":
["default","cms_index_index","cms_page_view","cms_index_index_id_home","algolia_sea
rch_handle","algolia_search_handle_with_topsearch","algolia_search_handle_click_con
version_analytics"],"originalRequest":
{"route":"cms","controller":"index","action":"index","uri":"\/?
___store=us"},"versionCookieName":"private_content_version"} }
}
</script>
<script type="text/x-magento-init">
{
"*": {
"Magento_Banner/js/model/banner":

{"sectionLoadUrl":"https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/banner\/ajax\/load\/","cacheTtl":300
00} }
}
</script>
<script>
window.customConfig = window.customConfig || {};
window.customConfig.isCartInterruptEnabled = false;
window.customConfig.cartInterruptKey = 'checkout-subscription'
</script>
<script type="text/x-magento-init">
{
"*": {
"Magento_Ui/js/core/app": {
"components": {
"gtm-customer": {
"component": "Packt_GoogleTagManager/js/customer-object",
"ajaxUrl":
"https://www.packtpub.com/packtgtm/ajax/customer/"
}
}
}
}
}
</script>
<div data-content-type="row" data-appearance="full-bleed" data-enable-parallax="0"
data-parallax-speed="0.5" data-background-images="{}" data-element="main"
style="justify-content: flex-start; display: flex; flex-direction: column;
background-position: left top; background-size: cover; background-repeat: no-
repeat; background-attachment: scroll; border-style: none; border-width: 1px;
border-radius: 0px; margin: 0px 0px 10px; padding: 10px;"><div data-content-
type="block" data-appearance="default" data-element="main" style="border-style:
none; border-width: 1px; border-radius: 0px; margin: 0px; padding: 0px;"><div
class="widget block block-static-block">
<div data-content-type="row" data-appearance="full-bleed" data-enable-parallax="0"
data-parallax-speed="0.5" data-background-images="{}" data-element="main"
style="justify-content: flex-start; display: flex; flex-direction: column;
background-position: left top; background-size: cover; background-repeat: no-
repeat; background-attachment: scroll; border-style: none; border-width: 1px;
border-radius: 0px; margin: 0px 0px 10px; padding: 10px;"><div data-content-
type="html" data-appearance="default" data-element="main" style="border-style:
none; border-width: 1px; border-radius: 0px; margin: 0px; padding: 0px;" data-
decoded="true"><style>
@media screen and (max-width: 600px) {

#home_banner_five_dollars{
margin-top:60px;
margin-bottom:-60px;
}
}
</style><a href="https://www.packtpub.com/all-products"> <img
src="https://www.packtpub.com/media/wysiwyg/_5-banner_homepage-no-date.png" alt="$5
sale"></a></div></div></div>
</div></div><div data-content-type="row" data-appearance="full-width" data-enable-
parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-
element="main" style="justify-content: flex-start; display: flex; flex-direction:
column; background-position: left top; background-size: cover; background-repeat:
no-repeat; background-attachment: scroll; border-style: none; border-width: 1px;
border-radius: 0px; margin: 0px 0px 10px; padding: 10px;"><div class="row-full-
width-inner" data-element="inner"><div data-content-type="block" data-
appearance="default" data-element="main" style="border-style: none; border-width:
1px; border-radius: 0px; display: none; margin: 0px; padding: 0px;"><div
class="widget block block-static-block">
<div data-content-type="row" data-appearance="contained" data-element="main"><div
data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}"
data-element="inner" style="justify-content: flex-start; display: flex; flex-
direction: column; background-position: left top; background-size: contain;
background-repeat: no-repeat; background-attachment: scroll; border-style: none;
border-width: 1px; border-radius: 0px; min-height: 400px; margin: 0px 0px 10px;
padding: 10px;"><div class="pagebuilder-column-group" style="display: flex;" data-
content-type="column-group" data-grid-size="12" data-element="main"><div
class="pagebuilder-column background-image-5fef3c3f85a00 background-image-
5fef3c405bed1" data-content-type="column" data-appearance="align-center" data-
background-images='{\"desktop_image\":\"https://www.packtpub.com/media/
undefined\"}' data-element="main" style="justify-content: flex-start; display:
flex; flex-direction: column; background-position: left top; background-size:
cover; background-repeat: no-repeat; background-attachment: scroll; border-style:
none; border-width: 1px; border-radius: 0px; min-height: 500px; width: 100%;
margin: 0px; padding: 10px; align-self: center;"><div data-content-type="text"
data-appearance="default" data-element="main" style="border-style: none; border-
width: 1px; border-radius: 0px; margin: 0px; padding: 0px;"><p style="text-align:
center;">&nbsp;</p>
<p style="text-align: center;"><span style="color: #ffffff; font-size:
38px;">Advance your knowledge in tech</span></p>
<p style="text-align: center;">&nbsp;</p>
<p style="text-align: center;"><span style="color: #ffffff;">Get all the quality
content you'll ever need to stay ahead </span><span style="color: #ffffff;">with a
</span><span style="color: #ffffff;">Packt subscription &ndash;
unlimited</span></p>
<p style="text-align: center;"><span style="color: #ffffff;"> access </span><span
style="color: #ffffff;">to over 8,000 online books and videos </span><span
style="color: #ffffff;">on everything in tech for just &pound;9.99</span></p>
<p style="text-align: center;">&nbsp;</p></div><div data-content-type="html" data-
appearance="default" data-element="main" style="text-align: center; border-style:
none; border-width: 1px; border-radius: 0px; margin: 0px; padding: 0px;" data-
decoded="true">
<style>
.button {
border: none;
color: white;
padding: 16px 32px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
margin: 4px 2px;
transition-duration: 0.4s;
cursor: pointer;
}

.button1 {
background-color:#ec6611;
color: white;
}

.button1:hover {
background-color: #ffffff;
color: #ec6611;
}

.button2 {
background-color: #ec6611;
color: white;

}
.button2:hover {
background-color: #ffffff;
color: #ec6611;
}

</style><a href="https://subscribe.packtpub.com/"><button class="button


button1">Unlock for just $9.99</button>
</a>
</div></div><style type="text/css">.background-image-5fef3c3f85a00 {background-
image: url(https://www.packtpub.com/media/undefined);}</style><style
type="text/css">.background-image-5fef3c405bed1 {background-image:
url(https://www.packtpub.com/media/undefined);}</style></div></div></div></div>
</div></div></div><div data-content-type="row" data-appearance="contained" data-
element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-
background-images="{}" data-element="inner" style="justify-content: flex-start;
display: flex; flex-direction: column; background-position: left top; background-
size: cover; background-repeat: no-repeat; background-attachment: scroll; border-
style: none; border-width: 1px; border-radius: 0px; margin: 0px 0px 10px; padding:
10px;"><div data-content-type="text" data-appearance="default" data-element="main"
style="border-style: none; border-width: 1px; border-radius: 0px; margin: 0px;
padding: 0px;"><p></p><div class="pack-landing-page category-container">
<div class="block">
<div class="block-title title">
<strong id="block-widget widget-product-grid-heading" role="heading" aria-
level="2">
Most Popular eBooks </strong>
</div>
<div class=" tombstone-container " aria-labelledby="block-widget widget-product-
grid-heading">
<div class="tombstone">
<a href="https://www.packtpub.com/game-development/learning-c-by-developing-games-
with-unity-2020-fifth-edition">
<span class="product-image-container" style="width:240px;">
<span class="product-image-wrapper" style="padding-bottom: 125%;">
<img class="product-image-photo"
src="https://www.packtpub.com/media/catalog/product/cache/abd628df6af33f734d5662422
3a191f5/9/7/9781800207806-original_131.jpeg" max-width="240" max-height="300"
alt="Learning C# by Developing Games with Unity 2020 - Fifth Edition"></span>
</span>
</a>
<div class="tombstone-main">
<a title="Learning C# by Developing Games with Unity 2020 - Fifth Edition"
href="https://www.packtpub.com/game-development/learning-c-by-developing-games-
with-unity-2020-fifth-edition">
<p class="tombstone-name">
Learning C# by Developing Games with Unity... </p>
</a>
<div class="price">
$ 5.00 </div>
<div>
</div>
<a class="btn btn-secondary"
href="https://www.packtpub.com/game-development/learning-c-by-developing-games-
with-unity-2020-fifth-edition">
View Details </a>
</div>
</div>
<div class="tombstone">
<a href="https://www.packtpub.com/mobile/c-9-and-net-5-modern-cross-platform-
development-fifth-edition">
<span class="product-image-container" style="width:240px;">
<span class="product-image-wrapper" style="padding-bottom: 125%;">
<img class="product-image-photo"
src="https://www.packtpub.com/media/catalog/product/cache/abd628df6af33f734d5662422
3a191f5/9/7/9781800568105-original_190.jpeg" max-width="240" max-height="300"
alt="C# 9 and .NET 5 &ndash; Modern Cross-Platform Development - Fifth
Edition"></span>
</span>
</a>
<div class="tombstone-main">
<a title="C# 9 and .NET 5 &ndash; Modern Cross-Platform Development - Fifth
Edition" href="https://www.packtpub.com/mobile/c-9-and-net-5-modern-cross-platform-
development-fifth-edition">
<p class="tombstone-name">
C# 9 and .NET 5 &ndash; Modern Cross-Platform... </p>
</a>
<div class="price">
$ 5.00 </div>
<div>
</div>
<a class="btn btn-secondary" href="https://www.packtpub.com/mobile/c-9-and-net-5-
modern-cross-platform-development-fifth-edition">
View Details </a>
</div>
</div>
<div class="tombstone">
<a href="https://www.packtpub.com/security/aws-penetration-testing">
<span class="product-image-container" style="width:240px;">
<span class="product-image-wrapper" style="padding-bottom: 125%;">
<img class="product-image-photo"
src="https://www.packtpub.com/media/catalog/product/cache/abd628df6af33f734d5662422
3a191f5/9/7/9781839216923-original_46.png" max-width="240" max-height="300"
alt="AWS Penetration Testing"></span>
</span>
</a>
<div class="tombstone-main">
<a title="AWS Penetration Testing" href="https://www.packtpub.com/security/aws-
penetration-testing">
<p class="tombstone-name">
AWS Penetration Testing </p>
</a>
<div class="price">
$ 5.00 </div>
<div>
</div>
<a class="btn btn-secondary" href="https://www.packtpub.com/security/aws-
penetration-testing">
View Details </a>
</div>
</div>
<div class="tombstone">
<a href="https://www.packtpub.com/data/machine-learning-for-algorithmic-trading-
second-edition">
<span class="product-image-container" style="width:240px;">
<span class="product-image-wrapper" style="padding-bottom: 125%;">
<img class="product-image-photo"
src="https://www.packtpub.com/media/catalog/product/cache/abd628df6af33f734d5662422
3a191f5/9/7/9781839217715-original_31.png" max-width="240" max-height="300"
alt="Machine Learning for Algorithmic Trading - Second Edition"></span>
</span>
</a>
<div class="tombstone-main">
<a title="Machine Learning for Algorithmic Trading - Second Edition"
href="https://www.packtpub.com/data/machine-learning-for-algorithmic-trading-
second-edition">
<p class="tombstone-name">
Machine Learning for Algorithmic Trading -... </p>
</a>
<div class="price">
$ 5.00 </div>
<div>
</div>
<a class="btn btn-secondary" href="https://www.packtpub.com/data/machine-learning-
for-algorithmic-trading-second-edition">
View Details </a>
</div>
</div>
<div class="tombstone">
<a href="https://www.packtpub.com/programming/40-algorithms-every-programmer-
should-know">
<span class="product-image-container" style="width:240px;">
<span class="product-image-wrapper" style="padding-bottom: 125%;">
<img class="product-image-photo"
src="https://www.packtpub.com/media/catalog/product/cache/abd628df6af33f734d5662422
3a191f5/9/7/9781789801217-original_41.jpeg" max-width="240" max-height="300"
alt="40 Algorithms Every Programmer Should Know"></span>
</span>
</a>
<div class="tombstone-main">
<a title="40 Algorithms Every Programmer Should Know"
href="https://www.packtpub.com/programming/40-algorithms-every-programmer-should-
know">
<p class="tombstone-name">
40 Algorithms Every Programmer Should Know </p>
</a>
<div class="price">
$ 5.00 </div>
<div>
</div>
<a class="btn btn-secondary" href="https://www.packtpub.com/programming/40-
algorithms-every-programmer-should-know">
View Details </a>
</div>
</div>
</div>
</div>
<script type="text/x-magento-init">
{
"[data-role=tocart-form], .form.map.checkout": {
"catalogAddToCart": {
"bindSubmit": true
}
}
}
</script></div>
</div><div data-content-type="text" data-appearance="default" data-element="main"
style="border-style: none; border-width: 1px; border-radius: 0px; margin: 0px;
padding: 0px;"><p></p><div class="pack-landing-page category-container">
<div class="block">
<div class="block-title title">
<strong id="block-widget widget-product-grid-heading" role="heading" aria-
level="2">
Trending eBooks &amp; videos </strong>
</div>
<div class=" tombstone-container " aria-labelledby="block-widget widget-product-
grid-heading">
<div class="tombstone">
<a href="https://www.packtpub.com/big-data-and-business-intelligence/python-
machine-learning-second-edition">
<span class="product-image-container" style="width:240px;">
<span class="product-image-wrapper" style="padding-bottom: 125%;">
<img class="product-image-photo"
src="https://www.packtpub.com/media/catalog/product/cache/abd628df6af33f734d5662422
3a191f5/9/7/9781787125933.png" max-width="240" max-height="300" alt="Python Machine
Learning - Second Edition"></span>
</span>
</a>
<div class="tombstone-main">
<a title="Python Machine Learning - Second Edition"
href="https://www.packtpub.com/big-data-and-business-intelligence/python-machine-
learning-second-edition">
<p class="tombstone-name">
Python Machine Learning - Second Edition </p>
</a>
<div class="price">
$ 5.00 </div>
<div>
</div>
<a class="btn btn-secondary" href="https://www.packtpub.com/big-data-and-business-
intelligence/python-machine-learning-second-edition">
View Details </a>
</div>
</div>
<div class="tombstone">
<a href="https://www.packtpub.com/hardware-and-creative/blender-3d-example">
<span class="product-image-container" style="width:240px;">
<span class="product-image-wrapper" style="padding-bottom: 125%;">
<img class="product-image-photo"
src="https://www.packtpub.com/media/catalog/product/cache/abd628df6af33f734d5662422
3a191f5/b/0/b04632_mockupcover_normal_.jpg" max-width="240" max-height="300"
alt="Blender 3D By Example"></span>
</span>
</a>
<div class="tombstone-main">
<a title="Blender 3D By Example" href="https://www.packtpub.com/hardware-and-
creative/blender-3d-example">
<p class="tombstone-name">
Blender 3D By Example </p>
</a>
<div class="price">
$ 5.00 </div>
<div>
</div>
<a class="btn btn-secondary"
href="https://www.packtpub.com/hardware-and-creative/blender-3d-example">
View Details </a>
</div>
</div>
<div class="tombstone">
<a href="https://www.packtpub.com/programming/node-js-design-patterns-third-
edition">
<span class="product-image-container" style="width:240px;">
<span class="product-image-wrapper" style="padding-bottom: 125%;">
<img class="product-image-photo"
src="https://www.packtpub.com/media/catalog/product/cache/abd628df6af33f734d5662422
3a191f5/9/7/9781839214110-original_178.jpeg" max-width="240" max-height="300"
alt="Node.js Design Patterns - Third Edition"></span>
</span>
</a>
<div class="tombstone-main">
<a title="Node.js Design Patterns - Third Edition"
href="https://www.packtpub.com/programming/node-js-design-patterns-third-edition">
<p class="tombstone-name">
Node.js Design Patterns - Third Edition </p>
</a>
<div class="price">
$ 49.99 </div>
<div>
</div>
<a class="btn btn-secondary" href="https://www.packtpub.com/programming/node-js-
design-patterns-third-edition">
View Details </a>
</div>
</div>
<div class="tombstone">
<a href="https://www.packtpub.com/game-development/hands-on-unity-2020-game-
development">
<span class="product-image-container" style="width:240px;">
<span class="product-image-wrapper" style="padding-bottom: 125%;">
<img class="product-image-photo"
src="https://www.packtpub.com/media/catalog/product/cache/abd628df6af33f734d5662422
3a191f5/9/7/9781838642006-original_91.png" max-width="240" max-height="300"
alt="Hands-On Unity 2020 Game Development"></span>
</span>
</a>
<div class="tombstone-main">
<a title="Hands-On Unity 2020 Game Development"
href="https://www.packtpub.com/game-development/hands-on-unity-2020-game-
development">
<p class="tombstone-name">
Hands-On Unity 2020 Game Development </p>
</a>
<div class="price">
$ 5.00 </div>
<div>
</div>
<a class="btn btn-secondary" href="https://www.packtpub.com/game-development/hands-
on-unity-2020-game-development">
View Details </a>
</div>
</div>
<div class="tombstone">
<a href="https://www.packtpub.com/big-data-and-business-intelligence/mastering-
machine-learning-r-third-edition">
<span class="product-image-container" style="width:240px;">
<span class="product-image-wrapper" style="padding-bottom: 125%;">
<img class="product-image-photo"
src="https://www.packtpub.com/media/catalog/product/cache/abd628df6af33f734d5662422
3a191f5/9/7/978178961800620-20copy.png" max-width="240" max-height="300"
alt="Mastering Machine Learning with R - Third Edition"></span>
</span>
</a>
<div class="tombstone-main">
<a title="Mastering Machine Learning with R - Third Edition"
href="https://www.packtpub.com/big-data-and-business-intelligence/mastering-
machine-learning-r-third-edition">
<p class="tombstone-name">
Mastering Machine Learning with R - Third... </p>
</a>
<div class="price">
$ 5.00 </div>
<div>
</div>
<a class="btn btn-secondary" href="https://www.packtpub.com/big-data-and-business-
intelligence/mastering-machine-learning-r-third-edition">
View Details </a>
</div>
</div>
<div class="tombstone">
<a href="https://www.packtpub.com/web-development/solution-architect-s-handbook">
<span class="product-image-container" style="width:240px;">
<span class="product-image-wrapper" style="padding-bottom: 125%;">
<img class="product-image-photo"
src="https://www.packtpub.com/media/catalog/product/cache/abd628df6af33f734d5662422
3a191f5/9/7/9781838645649-original_49.jpeg" max-width="240" max-height="300"
alt="Solutions Architect's Handbook"></span>
</span>
</a>
<div class="tombstone-main">
<a title="Solutions Architect's Handbook" href="https://www.packtpub.com/web-
development/solution-architect-s-handbook">
<p class="tombstone-name">
Solutions Architect's Handbook </p>
</a>
<div class="price">
$ 5.00 </div>
<div>
</div>
<a class="btn btn-secondary"
href="https://www.packtpub.com/web-development/solution-architect-s-handbook">
View Details </a>
</div>
</div>
<div class="tombstone">
<a href="https://www.packtpub.com/networking-and-servers/learn-kali-linux-2018">
<span class="product-image-container" style="width:240px;">
<span class="product-image-wrapper" style="padding-bottom: 125%;">
<img class="product-image-photo"
src="https://www.packtpub.com/media/catalog/product/cache/abd628df6af33f734d5662422
3a191f5/9/7/9781789611809-original.jpeg" max-width="240" max-height="300"
alt="Learn Kali Linux 2019"></span>
</span>
</a>
<div class="tombstone-main">
<a title="Learn Kali Linux 2019" href="https://www.packtpub.com/networking-and-
servers/learn-kali-linux-2018">
<p class="tombstone-name">
Learn Kali Linux 2019 </p>
</a>
<div class="price">
$ 5.00 </div>
<div>
</div>
<a class="btn btn-secondary" href="https://www.packtpub.com/networking-and-
servers/learn-kali-linux-2018">
View Details </a>
</div>
</div>
<div class="tombstone">
<a href="https://www.packtpub.com/data/dancing-with-qubits">
<span class="product-image-container" style="width:240px;">
<span class="product-image-wrapper" style="padding-bottom: 125%;">
<img class="product-image-photo"
src="https://www.packtpub.com/media/catalog/product/cache/abd628df6af33f734d5662422
3a191f5/9/7/9781838827366-original_32.png" max-width="240" max-height="300"
alt="Dancing with Qubits"></span>
</span>
</a>
<div class="tombstone-main">
<a title="Dancing with Qubits" href="https://www.packtpub.com/data/dancing-with-
qubits">
<p class="tombstone-name">
Dancing with Qubits </p>
</a>
<div class="price">
$ 5.00 </div>
<div>
</div>
<a class="btn btn-secondary" href="https://www.packtpub.com/data/dancing-with-
qubits">
View Details </a>
</div>
</div>
<div class="tombstone">
<a href="https://www.packtpub.com/data/learning-tableau-2020-fourth-edition">
<span class="product-image-container" style="width:240px;">
<span class="product-image-wrapper" style="padding-bottom: 125%;">
<img class="product-image-photo"
src="https://www.packtpub.com/media/catalog/product/cache/abd628df6af33f734d5662422
3a191f5/9/7/9781800200364-original_166.png" max-width="240" max-height="300"
alt="Learning Tableau 2020 - Fourth Edition"></span>
</span>
</a>
<div class="tombstone-main">
<a title="Learning Tableau 2020 - Fourth Edition"
href="https://www.packtpub.com/data/learning-tableau-2020-fourth-edition">
<p class="tombstone-name">
Learning Tableau 2020 - Fourth Edition </p>
</a>
<div class="price">
$ 5.00 </div>
<div>
</div>
<a class="btn btn-secondary" href="https://www.packtpub.com/data/learning-tableau-
2020-fourth-edition">
View Details </a>
</div>
</div>
<div class="tombstone">
<a href="https://www.packtpub.com/programming/the-python-workshop">
<span class="product-image-container" style="width:240px;">
<span class="product-image-wrapper" style="padding-bottom: 125%;">
<img class="product-image-photo"
src="https://www.packtpub.com/media/catalog/product/cache/abd628df6af33f734d5662422
3a191f5/9/7/9781839218859-original_113.png" max-width="240" max-height="300"
alt="The Python Workshop"></span>
</span>
</a>
<div class="tombstone-main">
<a title="The Python Workshop" href="https://www.packtpub.com/programming/the-
python-workshop">
<p class="tombstone-name">
The Python Workshop </p>
</a>
<div class="price">
$ 5.00 </div>
<div>
</div>
<a class="btn btn-secondary" href="https://www.packtpub.com/programming/the-python-
workshop">
View Details </a>
</div>
</div>
</div>
</div>
<script type="text/x-magento-init">
{
"[data-role=tocart-form], .form.map.checkout": {
"catalogAddToCart": {
"bindSubmit": true
}
}
}
</script></div>
</div><div data-content-type="block" data-appearance="default" data-element="main"
style="border-style: none; border-width: 1px; border-radius: 0px; margin: 0px;
padding: 0px;"><div class="widget block block-static-block">
<div data-content-type="row" data-appearance="contained" data-element="main"><div
data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}"
data-element="inner" style="justify-content: flex-start; display: flex; flex-
direction: column; background-position: left top; background-size: cover;
background-repeat: no-repeat; background-attachment: scroll; border-style: none;
border-width: 1px; border-radius: 0px; margin: 0px 0px 10px; padding: 10px;"><div
data-content-type="html" data-appearance="default" data-element="main"
style="border-style: none; border-width: 1px; border-radius: 0px; margin: 0px;
padding: 0px;" data-decoded="true"><div class="equal_columns_container">
<div class="equal_columns_wrapper">
<div class="equal_columns_title"></div>

<div class="row">
<div class="col-md-6 equal_column col_6"><a
href="https://www.packtpub.com/checkout/subscription/packt-monthly-five-month-
offer" target="_blank"> <img src="https://www.packtpub.com/media/wysiwyg/_5-
subscription_small_1_.png" alt="$5 sale"></a></div>
<div class="col-md-6 equal_column col_6"><a href="https://www.packtpub.com/free-
learning" target="_blank"> <img src="https://www.packtpub.com/media/wysiwyg/fl-
home.png" alt="Free Learning"></a></div>
<div></div>
</div>
</div>
</div>
</div></div></div></div>
</div></div></div></div></div></main><div class="main-widget-container"><div
class="widget-container"><script type="text/x-magento-init">
{
"[data-role=tocart-form], .form.map.checkout": {
"catalogAddToCart": {
"bindSubmit": true
}
}
}
</script>
</div></div><footer class="page-footer"><div class="footer content"><div
class="block newsletter">
<p class="newsletter-intro">Sign up to our emails for regular updates, bespoke
offers, exclusive discounts and great free content.</p>
<div class="title"><strong>Newsletter</strong></div>
<div class="content">
<form class="form subscribe" novalidate
action="https://www.packtpub.com/newsletter/subscriber/new/" method="post" data-
mage-init='{"validation": {"errorClass": "mage-error"}}' id="newsletter-validate-
detail">
<div class="field newsletter">
<label class="label" for="newsletter"><span>Sign Up for Our
Newsletter:</span></label>
<div class="control">
<input name="email" type="email" id="newsletter"
placeholder="Enter&#x20;your&#x20;email&#x20;address" data-
validate="{required:true, 'validate-email':true}" />
</div>
</div>
<div class="actions">
<button class="action subscribe primary" title="Submit" type="submit">
<span>Submit</span>
</button>
</div>
</form>
</div>
</div>
<script type="text/x-magento-init">
{
"*": {
"Packt_Marketing/js/newsletter": {}
}
}
</script><script type="text/javascript" id="feefo-plugin-widget-bootstrap"
src="//ww2.feefo.com/api/ecommerce/plugin/widget/merchant/packt-publishing"
async></script><div class="footer-link-block-one">
<h3>Useful Links</h3>
<ul class="footer links">
<li class="nav item"><a href="https://www.packtpub.com/about">About Us</a></li>
<li class="nav item"><a href="https://www.packtpub.com/authors">Our
Authors</a></li>
<li class="nav item"><a href="https://www.packtpub.com/about/press">Press</a></li>
<li class="nav item"><a
href="https://www.packtpub.com/about/careers">Careers</a></li>
<li class="nav item"><a href="https://www.packtpub.com/about/privacy-
policy">Privacy Policy</a></li>
<li class="nav item"><a href="https://www.packtpub.com/about/cookie-policy">View
our Cookie Policy</a></li>
</ul></div>
<div class="footer-link-block-two">
<h3><a style="color: #ffffff; text-decoration: none;"
href="https://www.packtpub.com/support">Help &amp; Support</a></h3>
<ul class="footer links">
<li class="nav item"><a href="https://www.packtpub.com/support">Support
Home</a></li>
<li class="nav item"><a href="https://www.packtpub.com/support/faq">Frequently
Asked Questions</a></li>
<li class="nav item"><a href="https://www.packtpub.com/support/purchases">Orders
&amp; Purchases</a></li>
<li class="nav item"><a href="https://www.packtpub.com/support/code-downloads">Code
Download &amp; Errata</a></li>
<li class="nav item"><a href="https://www.packtpub.com/support/errata">Submit
Errata</a></li>
<li class="nav item"><a href="https://www.packtpub.com/contact">Contact Us</a></li>
</ul></div>
<div class="footer-link-block-three">
<h3>Social</h3>
<ul class="social-link">
<li><a href="https://www.facebook.com/PacktPub/" target="_blank"> <span class="fab
fa-facebook-f"></span></a></li>
<li><a href="https://twitter.com/PacktPub" target="_blank"> <span class="fab fa-
twitter"></span></a></li>
<li><a href="https://www.linkedin.com/company/packt-publishing/" target="_blank">
<span class="fab fa-linkedin"></span></a></li>
<li><a href="https://www.youtube.com/user/packt1000/featured" target="_blank">
<span class="fab fa-youtube"></span></a></li>
<li><a href="https://github.com/PacktPublishing" target="_blank"> <span class="fab
fa-github"></span></a></li>
<li><a href="https://hub.packtpub.com/feed/" target="_blank"> <span class="fa fa-
rss"></span></a></li>
</ul></div>
<small class="copyright">
<span>The word &#039;Packt&#039; and the Packt logo are registered trademarks
belonging to Packt Publishing Limited. All rights reserved</span>
</small>
<div id="store-reselect">
<span class="flag" data-action="geoip__show-store-switcher">
<img src="https://www.packtpub.com/static/version1607340419/frontend/Packt/
default/en_GB/MageWorx_GeoIP/images/flags/us.png" alt="United States" title="United
States">
</span>
<span class="country" title="United States" data-action="geoip__show-store-
switcher">United States</span>
</div>
</div></footer><script type="text/x-magento-init">
{
"*": {
"Magento_Ui/js/core/app": {
"components": {
"storage-manager": {
"component": "Magento_Catalog/js/storage-manager",
"appendTo": "",
"storagesConfiguration" : {"recently_viewed_product":
{"requestConfig":{"syncUrl":"https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/catalog\/product\/
frontend_action_synchronize\/"},"lifetime":"1000","allowToSendRequest":null},"recen
tly_compared_product":{"requestConfig":{"syncUrl":"https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/
catalog\/product\/
frontend_action_synchronize\/"},"lifetime":"1000","allowToSendRequest":null},"produ
ct_data_storage":{"updateRequestConfig":{"url":"https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/rest\/
us\/V1\/products-render-info"},"allowToSendRequest":null}} }
}
}
}
}
</script>
<div id="packt_gdpr_container" data-bind="scope:'packt_gdpr__cookie_compliance'">
<!-- ko template: getTemplate() --><!-- /ko -->
<script type="text/x-magento-init">
{
"*": {
"Magento_Ui/js/core/app": {
"components": {
"packt_gdpr__cookie_compliance":
{"component":"packtCookieCompliance","template":"Packt_Gdpr\/ko\/cookie_compliance"
,"default_cookie":"packt_gdpr","privacy_cookie":"packt_privacy","required_cookie":"
packt_required","performance_cookie":"packt_performance","target_cookie":"packt_tar
get","rakuten_cookie":"__rmcp","cookie_expiry":"28","hide_message":"Accept","more_m
essage":"Learn more","more_link":"\/about\/privacy-policy","message":"This website
uses cookies and other tracking technology to analyse traffic, personalise ads and
learn how we can improve the experience for our visitors and customers. We may also
share information with trusted third-party providers. For an optimal-browsing
experience please click 'Accept'.","status":true} }
}
}
}
</script>
</div>
<script>
window.googleAnalyticsUA = 'UA-284627-1'
</script>

<div id="cookie_modal" class="gdpr_modal">

<div class="modal-content">
<span class="close">&times;</span>
<div id="cookiePopup" class="simplemodal-container">
<div class="sm-modal-title">
<div class="title-container">
Privacy Centre
</div>
</div>
<div class="sm-modal-body">
<div class="tab-container">
<ul class="tab-header">
<li class="first active">
<a href="#tab_first">
1. Your Privacy
</a>
</li>
<li>
<a href="#tab_required_cookies">
2. Strictly Necessary Cookies
</a>
</li>
<li>
<a href="#tab_performance_cookies">
3. Performance Cookies
</a>
</li>
<li>
<a href="#tab_targeting_cookie">
4. Targeting Cookies
</a>
</li>
</ul>
<div class="tab-content-wrapper">
<div class="tab-item active" id="tab_first">
<div class="tab-item-header">
Your Privacy
</div>
<div class="choice-description">
<p>When you visit any website, it may store or retrieve information on your
browser,usually in the form of cookies. This information does not usually identify
you, but it does help companies to learn how their users are interacting with the
site.</p>
<p>We respect your right to privacy, so you can choose not to accept some of these
cookies. Choose from the different category headers to find out more and change
your default settings.</p>
<p>Please note if you have arrived at our site via a cashback website, turning off
targeting or performance cookies will mean we cannot verify your transaction with
the referrer and you may not receive your cashback.</p> </div>
</div>
<div class="tab-item" id="tab_required_cookies">
<div class="tab-item-header">
Strictly Necessary Cookies
<label class="required-option-text">
Always active
</label>
</div>
<div class="choice-description">
<p>These cookies are essential for the website to function and they cannot be
turned off. They are usually only set in response to actions made by you on our
site, such as logging in, adding items to your cart or filling in forms. If you
browse our website, you accept these cookies.</p> </div>
<div class="choice-list-wrapper">
<div class="choice-list-header">
Cookies are used by
</div>
<ul class="choice-list">
<li>Packt Publishing</li>
<li>Google Analytics</li>
<li>Heap</li>
</ul>
</div>
</div>
<div class="tab-item" id="tab_performance_cookies">
<div class="tab-item-header">
Performance Cookies
<label class="checkbox-container">
<input class="cookie-choice-check" type="checkbox" data-name="performance_cookies"
id="performance_cookies" name="performance_cookies" checked="checked">
<span class="checkmark"></span>
</label>
</div>
<div class="choice-description">
<p>These cookies allow us to keep track of how many people have visited our
website, how they discovered us, and how they interact with the site.All the
information used is aggregated, and completely anonymous. If you do not allow these
cookies we won’t know you have visited us.</p> </div>
<div class="choice-list-wrapper">
<div class="choice-list-header">
Cookies are used by
</div>
<ul class="choice-list">
<li>Facebook Pixel</li>
<li>Google Adwords</li>
</ul>
</div>
</div>
<div class="tab-item" id="tab_targeting_cookie">
<div class="tab-item-header">
Targeting Cookies
<label class="checkbox-container">
<input class="cookie-choice-check" type="checkbox" data-name="targeting_cookie"
id="targeting_cookie" name="targeting_cookie" checked="checked">
<span class="checkmark"></span>
</label>
</div>
<div class="choice-description">
<p>These cookies are placed on our site by our trusted third-party providers.They
help us to personalise our adverts and provide services to our customers such as
live chat.</p>
<p>If you have arrived at our site via a cashback website, turning off Targeting
Cookies will mean we cannot verify your transaction with the referrer and you may
not receive your cashback.</p> </div>
<div class="choice-list-wrapper">
<div class="choice-list-header">
Cookies are used by
</div>
<ul class="choice-list">
<li>Maxymiser</li>
<li>Criteo</li>
<li>Get site control</li>
<li>Hotjar</li>
<li>Rakuten</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="sm-modal-footer">&nbsp;
<button id="cookieAllowAll" type="button" style="">Allow all</button>
<button id="cookieSaveChoice" type="button">Save</button>
</div>
</div>
</div>
</div>
<script type="text/x-magento-init">
{
"*": {
"Magento_Ui/js/core/app": {
"components": {
"single-signon": {
"component": "Packt_SingleSignOn/js/api/single-sign-on",
"accessTokenLabel": "access_token_live",
"refreshTokenLabel": "refresh_token_live",
"storeCode": "us",
"cookieDomain": "packtpub.com",
"customerEmail": ""
}
}
}
}
}
</script>

<script type="text/template" id="autocomplete_products_template">


<a class="algoliasearch-autocomplete-hit" href="{{url}}">
{{#thumbnail_url}}
<div class="thumb"><img src="{{thumbnail_url}}" alt="{{{name}}}" /></div>
{{/thumbnail_url}}

<div class="info">
{{{_highlightResult.name.value}}}

<div class="algoliasearch-autocomplete-category">
{{#categories_without_path}}
in {{{categories_without_path}}}
{{/categories_without_path}}

{{#_highlightResult.color}}
{{#_highlightResult.color.value}}
<span>
{{#categories_without_path}} | {{/categories_without_path}}
Color: {{{_highlightResult.color.value}}}
</span>
{{/_highlightResult.color.value}}
{{/_highlightResult.color}}
</div>

<div class="algoliasearch-autocomplete-price">
<span class="after_special
{{#price.USD.default_original_formated}}
promotion
{{/price.USD.default_original_formated}}">
{{price.USD.default_formated}}
</span>

{{#price.USD.default_original_formated}}
<span class="before_special">
{{price.USD.default_original_formated}}
</span>
{{/price.USD.default_original_formated}}
{{#price.USD.default_tier_formated}}
<span class="tier_price">
As low as <span
class="tier_value">{{price.USD.default_tier_formated}}</span>
</span>
{{/price.USD.default_tier_formated}}
</div>
</div>
</a>
</script>
<script type="text/template" id="autocomplete_categories_template">
<a class="algoliasearch-autocomplete-hit" href="{{url}}">
{{#image_url}}
<div class="thumb">
<img src="{{{image_url}}}" alt="{{{name}}}" />
</div>
{{/image_url}}

{{#image_url}}
<div class="info">
{{/image_url}}
{{^image_url}}
<div class="info-without-thumb">
{{#_highlightResult.path}}
{{{_highlightResult.path.value}}}
{{/_highlightResult.path}}
{{^_highlightResult.path}}
{{{path}}}
{{/_highlightResult.path}}

{{#product_count}}
<small>({{product_count}})</small>
{{/product_count}}

</div>
<div class="algolia-clearfix"></div>
{{/image_url}}
</div>
</a>
</script>
<script type="text/template" id="autocomplete_pages_template">
<a class="algoliasearch-autocomplete-hit" href="{{url}}">
<div class="info-without-thumb">
{{{_highlightResult.name.value}}}
{{#content}}
<div class="details">
{{{content}}}
</div>
{{/content}}
</div>
<div class="algolia-clearfix"></div>
</a>
</script>
<script type="text/template" id="autocomplete_extra_template">
<a class="algoliasearch-autocomplete-hit" href="{{url}}">
<div class="info-without-thumb">
{{{_highlightResult.value.value}}}
</div>
<div class="algolia-clearfix"></div>
</a>
</script>

<script type="text/template" id="autocomplete_suggestions_template">


<a class="algoliasearch-autocomplete-hit" href="{{url}}">
<svg xmlns="http://www.w3.org/2000/svg"
class="algolia-glass-suggestion magnifying-glass"
width="24"
height="24"
viewBox="0 0 128 128">
<g transform="scale(2.5)">
<path stroke-width="3" d="M19.5 19.582l9.438 9.438"></path>
<circle stroke-width="3" cx="12" cy="12" r="10.5"
fill="none"></circle>
<path d="M23.646 20.354l-3.293 3.293c-.195.195-.195.512
0 .707l7.293 7.293c.195.195.512.195.707
0l3.293-3.293c.195-.195.195-.512 0-.707l-7.293-
7.293c-.195-.195-.512-.195-.707 0z" ></path>
</g>
</svg>
<div class="info-without-thumb">
{{{_highlightResult.query.value}}}

{{#category}}
<span class="text-muted">in</span>
<span class="category-tag">{{category}}</span>
{{/category}}
</div>
<div class="algolia-clearfix"></div>
</a>
</script><script type="text/template" id="menu-template">
<div class="autocomplete-wrapper">
<div>
<div class="aa-dataset-products"></div>
</div>
<div>
<div class="other-sections">
<div class="aa-dataset-suggestions"></div>
<div class="aa-dataset-0"></div>
<div class="aa-dataset-1"></div>
<div class="aa-dataset-2"></div>
<div class="aa-dataset-3"></div>
<div class="aa-dataset-4"></div>
<div class="aa-dataset-5"></div>
<div class="aa-dataset-6"></div>
<div class="aa-dataset-7"></div>
<div class="aa-dataset-8"></div>
<div class="aa-dataset-9"></div>
</div>
</div>
</div>
<div class="container two-section">
<div class="row">
<div class="col-12">
</div>
</div>
</div>
</script>
<script type="text/javascript">
//<![CDATA[
var static_content;
static_content = '&quot;&lt;p style=\&quot;text-align: center;\
&quot;&gt;&lt;strong&gt;&lt;span style=\&quot;font-size: large;\&quot;&gt;Sorry, no
results found... &lt;\/span&gt;&lt;\/strong&gt;&lt;\/p&gt;\r\n&lt;div class=\
&quot;container\&quot;&gt;\r\n&lt;div class=\&quot;col\&quot;&gt;&lt;div class=\
&quot;pack-landing-page category-container\&quot;&gt;\n &lt;div class=\
&quot;block\&quot;&gt;\n &lt;div class=\&quot;block-
title title\&quot;&gt;\n &lt;strong id=\&quot;block-widget
widget-product-grid-heading\&quot; role=\&quot;heading\&quot; aria-level=\&quot;2\
&quot;&gt;\n Top Sellers
&lt;\/strong&gt;\n &lt;\/div&gt;\n
&lt;div class=\&quot; tombstone-container \&quot;\n aria-
labelledby=\&quot;block-widget widget-product-grid-heading\&quot;&gt;\n
&lt;div class=\&quot;tombstone\&quot;&gt;\n &lt;!--
new_products_content_widget_grid--&gt; &lt;a href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/data\/python-machine-learning-third-edition\
&quot;&gt;\n \n&lt;span class=\&quot;product-image-
container\&quot;\n style=\&quot;width:240px;\&quot;&gt;\n &lt;span class=\
&quot;product-image-wrapper\&quot;\n style=\&quot;padding-bottom: 125%;\
&quot;&gt;\n &lt;img class=\&quot;product-image-photo\&quot;\n
src=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/media\/catalog\/product\/cache\/
abd628df6af33f734d56624223a191f5\/9\/7\/9781789955750-original.png\&quot;\n
max-width=\&quot;240\&quot;\n max-height=\&quot;300\&quot;\n
alt=\&quot;Python Machine Learning - Third Edition\&quot;\/&gt;&lt;\/span&gt;\
n&lt;\/span&gt;\n &lt;\/a&gt;\n\n
&lt;div class=\&quot;tombstone-main\&quot;&gt;\n &lt;a
title=\&quot;Python Machine Learning - Third Edition\&quot;\n
href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/data\/python-machine-learning-third-
edition\&quot;&gt;\n &lt;p class=\&quot;tombstone-
name\&quot;&gt;\n Python Machine Learning -
Third Edition &lt;\/p&gt;\n
&lt;\/a&gt;\n\n
\n
\n &lt;div class=\
&quot;price\&quot;&gt;\n
$ 5.00
&lt;\/div&gt;\n &lt;div&gt;\
n &lt;div
class=\&quot;tombstone-product-type\&quot;&gt;\n
&lt;span class=\&quot;tombstone-product-type-name\&quot;&gt;eBook&lt;\/span&gt;\n
&lt;i class=\&quot;fas fa-book-open\&quot;&gt;&lt;\/i&gt;\n
&lt;\/div&gt;\n \n
&lt;button class=\&quot;action tocart btn btn-primary\&quot;\n
data-product-sku=\&quot;9781789958294\&quot;\n
data-currency-code=\&quot;USD\&quot;\n
data-product-name=\&quot;Python Machine Learning - Third Edition\&quot;\n
data-product-variant=\&quot;EBOOK\&quot;\n
data-price=\&quot;5\&quot;\n
data-original-price=\&quot;27.99\&quot;\n\n\n
\n \n
data-price-after-promo=\&quot;5\&quot;\n
data-product-category=\&quot;data\&quot;\n
data-product-qty=\&quot;1\&quot;\n
data-action-field=\&quot;Top Sellers\&quot;\n
data-post=&#039;{\&quot;action\&quot;:\&quot;https:\\\/\\\/www.packtpub.com\\\/
checkout\\\/cart\\\/add\\\/uenc\\\/
aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw%2C%2C\\\/product\\\/74448\\\/\
&quot;,\&quot;data\&quot;:{\&quot;product\&quot;:\&quot;74448\&quot;,\&quot;uenc\
&quot;:\&quot;aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw,,\&quot;}}&#039;\n
type=\&quot;button\&quot;\n
title=\&quot;Add to Cart\&quot;&gt;\n
&lt;span&gt;\n Add to Cart
&lt;\/span&gt;\n &lt;\/button&gt;\n
&lt;\/div&gt;\n\n &lt;a
class=\&quot;btn btn-secondary\&quot;\n href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/data\/python-machine-learning-third-edition\
&quot;&gt;\n View Details
&lt;\/a&gt;\n &lt;\/div&gt;\n
&lt;\/div&gt;\n &lt;div class=\&quot;tombstone\
&quot;&gt;\n &lt;!-- new_products_content_widget_grid--&gt;
&lt;a href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/mobile\/c-8-0-and-net-core-3-0-
modern-cross-platform-development-fourth-edition\&quot;&gt;\n
\n&lt;span class=\&quot;product-image-container\&quot;\n style=\
&quot;width:240px;\&quot;&gt;\n &lt;span class=\&quot;product-image-wrapper\
&quot;\n style=\&quot;padding-bottom: 125%;\&quot;&gt;\n &lt;img
class=\&quot;product-image-photo\&quot;\n src=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/media\/catalog\/product\/cache\/
abd628df6af33f734d56624223a191f5\/9\/7\/9781788478120-original_47.png\&quot;\n
max-width=\&quot;240\&quot;\n max-height=\&quot;300\&quot;\n
alt=\&quot;C# 8.0 and .NET Core 3.0 \u2013 Modern Cross-Platform Development -
Fourth Edition\&quot;\/&gt;&lt;\/span&gt;\n&lt;\/span&gt;\n
&lt;\/a&gt;\n\n &lt;div class=\&quot;tombstone-main\
&quot;&gt;\n &lt;a title=\&quot;C# 8.0 and .NET Core 3.0
\u2013 Modern Cross-Platform Development - Fourth Edition\&quot;\n
href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/mobile\/c-8-0-and-net-core-3-0-modern-
cross-platform-development-fourth-edition\&quot;&gt;\n
&lt;p class=\&quot;tombstone-name\&quot;&gt;\n
C# 8.0 and .NET Core 3.0 \u2013 Modern...
&lt;\/p&gt;\n &lt;\/a&gt;\n\n
\n
\n &lt;div class=\
&quot;price\&quot;&gt;\n
$ 5.00
&lt;\/div&gt;\n &lt;div&gt;\
n &lt;div
class=\&quot;tombstone-product-type\&quot;&gt;\n
&lt;span class=\&quot;tombstone-product-type-name\&quot;&gt;eBook&lt;\/span&gt;\n
&lt;i class=\&quot;fas fa-book-open\&quot;&gt;&lt;\/i&gt;\n
&lt;\/div&gt;\n \n
&lt;button class=\&quot;action tocart btn btn-primary\&quot;\n
data-product-sku=\&quot;9781788471572\&quot;\n
data-currency-code=\&quot;USD\&quot;\n
data-product-name=\&quot;C# 8.0 and .NET Core 3.0 \u2013 Modern Cross-Platform
Development - Fourth Edition\&quot;\n
data-product-variant=\&quot;EBOOK\&quot;\n
data-price=\&quot;5\&quot;\n
data-original-price=\&quot;34.99\&quot;\n\n\n
\n
\n data-price-after-promo=\
&quot;5\&quot;\n data-product-
category=\&quot;mobile\&quot;\n
data-product-qty=\&quot;1\&quot;\n
data-action-field=\&quot;Top Sellers\&quot;\n
data-post=&#039;{\&quot;action\&quot;:\&quot;https:\\\/\\\/www.packtpub.com\\\/
checkout\\\/cart\\\/add\\\/uenc\\\/
aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw%2C%2C\\\/product\\\/75651\\\/\
&quot;,\&quot;data\&quot;:{\&quot;product\&quot;:\&quot;75651\&quot;,\&quot;uenc\
&quot;:\&quot;aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw,,\&quot;}}&#039;\n
type=\&quot;button\&quot;\n
title=\&quot;Add to Cart\&quot;&gt;\n
&lt;span&gt;\n Add to Cart
&lt;\/span&gt;\n &lt;\/button&gt;\n
&lt;\/div&gt;\n\n &lt;a
class=\&quot;btn btn-secondary\&quot;\n href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/mobile\/c-8-0-and-net-core-3-0-modern-cross-
platform-development-fourth-edition\&quot;&gt;\n
View Details &lt;\/a&gt;\n
&lt;\/div&gt;\n &lt;\/div&gt;\n
&lt;div class=\&quot;tombstone\&quot;&gt;\n &lt;!--
new_products_content_widget_grid--&gt; &lt;a href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/programming\/the-python-workshop\&quot;&gt;\n
\n&lt;span class=\&quot;product-image-container\&quot;\n style=\
&quot;width:240px;\&quot;&gt;\n &lt;span class=\&quot;product-image-wrapper\
&quot;\n style=\&quot;padding-bottom: 125%;\&quot;&gt;\n &lt;img
class=\&quot;product-image-photo\&quot;\n src=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/media\/catalog\/product\/cache\/
abd628df6af33f734d56624223a191f5\/9\/7\/9781839218859-original_113.png\&quot;\n
max-width=\&quot;240\&quot;\n max-height=\&quot;300\&quot;\n
alt=\&quot;The Python Workshop\&quot;\/&gt;&lt;\/span&gt;\n&lt;\/span&gt;\n
&lt;\/a&gt;\n\n &lt;div class=\&quot;tombstone-main\
&quot;&gt;\n &lt;a title=\&quot;The Python Workshop\
&quot;\n
href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/programming\/the-python-workshop\
&quot;&gt;\n &lt;p class=\&quot;tombstone-name\
&quot;&gt;\n The Python Workshop
&lt;\/p&gt;\n &lt;\/a&gt;\n\n
\n
\n &lt;div class=\
&quot;price\&quot;&gt;\n
$ 5.00
&lt;\/div&gt;\n &lt;div&gt;\
n &lt;div
class=\&quot;tombstone-product-type\&quot;&gt;\n
&lt;span class=\&quot;tombstone-product-type-name\&quot;&gt;eBook&lt;\/span&gt;\n
&lt;i class=\&quot;fas fa-book-open\&quot;&gt;&lt;\/i&gt;\n
&lt;\/div&gt;\n \n
&lt;button class=\&quot;action tocart btn btn-primary\&quot;\n
data-product-sku=\&quot;9781838984533\&quot;\n
data-currency-code=\&quot;USD\&quot;\n
data-product-name=\&quot;The Python Workshop\&quot;\n
data-product-variant=\&quot;EBOOK\&quot;\n
data-price=\&quot;5\&quot;\n
data-original-price=\&quot;20.99\&quot;\n\n\n
\n \n
data-price-after-promo=\&quot;5\&quot;\n
data-product-category=\&quot;programming\&quot;\n
data-product-qty=\&quot;1\&quot;\n
data-action-field=\&quot;Top Sellers\&quot;\n
data-post=&#039;{\&quot;action\&quot;:\&quot;https:\\\/\\\/www.packtpub.com\\\/
checkout\\\/cart\\\/add\\\/uenc\\\/
aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw%2C%2C\\\/product\\\/76468\\\/\
&quot;,\&quot;data\&quot;:{\&quot;product\&quot;:\&quot;76468\&quot;,\&quot;uenc\
&quot;:\&quot;aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw,,\&quot;}}&#039;\n
type=\&quot;button\&quot;\n
title=\&quot;Add to Cart\&quot;&gt;\n
&lt;span&gt;\n Add to Cart
&lt;\/span&gt;\n &lt;\/button&gt;\n
&lt;\/div&gt;\n\n &lt;a
class=\&quot;btn btn-secondary\&quot;\n href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/programming\/the-python-workshop\&quot;&gt;\n
View Details &lt;\/a&gt;\n
&lt;\/div&gt;\n &lt;\/div&gt;\n
&lt;div class=\&quot;tombstone\&quot;&gt;\n &lt;!--
new_products_content_widget_grid--&gt; &lt;a href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/data\/deep-learning-with-tensorflow-2-0-and-
keras-second-edition\&quot;&gt;\n \n&lt;span class=\
&quot;product-image-container\&quot;\n style=\&quot;width:240px;\&quot;&gt;\n
&lt;span class=\&quot;product-image-wrapper\&quot;\n style=\&quot;padding-
bottom: 125%;\&quot;&gt;\n &lt;img class=\&quot;product-image-photo\&quot;\n
src=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/media\/catalog\/product\/cache\/
abd628df6af33f734d56624223a191f5\/9\/7\/9781838823412-original.png\&quot;\n
max-width=\&quot;240\&quot;\n max-height=\&quot;300\&quot;\n
alt=\&quot;Deep Learning with TensorFlow 2 and Keras - Second
Edition\&quot;\/&gt;&lt;\/span&gt;\n&lt;\/span&gt;\n
&lt;\/a&gt;\n\n &lt;div class=\&quot;tombstone-main\
&quot;&gt;\n &lt;a title=\&quot;Deep Learning with
TensorFlow 2 and Keras - Second Edition\&quot;\n
href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/data\/deep-learning-with-tensorflow-2-0-
and-keras-second-edition\&quot;&gt;\n &lt;p class=\
&quot;tombstone-name\&quot;&gt;\n Deep Learning
with TensorFlow 2 and Keras -... &lt;\/p&gt;\n
&lt;\/a&gt;\n\n
\n
\n &lt;div class=\
&quot;price\&quot;&gt;\n
$ 5.00
&lt;\/div&gt;\n &lt;div&gt;\
n &lt;div
class=\&quot;tombstone-product-type\&quot;&gt;\n
&lt;span class=\&quot;tombstone-product-type-name\&quot;&gt;eBook&lt;\/span&gt;\n
&lt;i class=\&quot;fas fa-book-open\&quot;&gt;&lt;\/i&gt;\n
&lt;\/div&gt;\n \n
&lt;button class=\&quot;action tocart
btn btn-primary\&quot;\n data-
product-sku=\&quot;9781838827724\&quot;\n
data-currency-code=\&quot;USD\&quot;\n
data-product-name=\&quot;Deep Learning with TensorFlow 2 and Keras - Second
Edition\&quot;\n data-product-
variant=\&quot;EBOOK\&quot;\n
data-price=\&quot;5\&quot;\n
data-original-price=\&quot;27.99\&quot;\n\n\n
\n \n
data-price-after-promo=\&quot;5\&quot;\n
data-product-category=\&quot;data\&quot;\n
data-product-qty=\&quot;1\&quot;\n
data-action-field=\&quot;Top Sellers\&quot;\n
data-post=&#039;{\&quot;action\&quot;:\&quot;https:\\\/\\\/www.packtpub.com\\\/
checkout\\\/cart\\\/add\\\/uenc\\\/
aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw%2C%2C\\\/product\\\/76945\\\/\
&quot;,\&quot;data\&quot;:{\&quot;product\&quot;:\&quot;76945\&quot;,\&quot;uenc\
&quot;:\&quot;aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw,,\&quot;}}&#039;\n
type=\&quot;button\&quot;\n
title=\&quot;Add to Cart\&quot;&gt;\n
&lt;span&gt;\n Add to Cart
&lt;\/span&gt;\n &lt;\/button&gt;\n
&lt;\/div&gt;\n\n &lt;a
class=\&quot;btn btn-secondary\&quot;\n href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/data\/deep-learning-with-tensorflow-2-0-and-
keras-second-edition\&quot;&gt;\n View Details
&lt;\/a&gt;\n &lt;\/div&gt;\n
&lt;\/div&gt;\n &lt;div class=\&quot;tombstone\
&quot;&gt;\n &lt;!-- new_products_content_widget_grid--&gt;
&lt;a href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/cloud-networking\/microsoft-azure-
architect-technologies-exam-guide-az-300\&quot;&gt;\n \
n&lt;span class=\&quot;product-image-container\&quot;\n style=\
&quot;width:240px;\&quot;&gt;\n &lt;span class=\&quot;product-image-wrapper\
&quot;\n style=\&quot;padding-bottom: 125%;\&quot;&gt;\n &lt;img
class=\&quot;product-image-photo\&quot;\n src=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/media\/catalog\/product\/cache\/
abd628df6af33f734d56624223a191f5\/9\/7\/9781838553531-original.png\&quot;\n
max-width=\&quot;240\&quot;\n max-height=\&quot;300\&quot;\n
alt=\&quot;Microsoft Azure Architect Technologies: Exam Guide
AZ-300\&quot;\/&gt;&lt;\/span&gt;\n&lt;\/span&gt;\n
&lt;\/a&gt;\n\n &lt;div class=\&quot;tombstone-main\
&quot;&gt;\n &lt;a title=\&quot;Microsoft Azure
Architect Technologies: Exam Guide AZ-300\&quot;\n
href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/cloud-networking\/microsoft-azure-
architect-technologies-exam-guide-az-300\&quot;&gt;\n
&lt;p class=\&quot;tombstone-name\&quot;&gt;\n
Microsoft Azure Architect Technologies:...
&lt;\/p&gt;\n &lt;\/a&gt;\n\n
\n
\n &lt;div class=\
&quot;price\&quot;&gt;\n
$ 5.00
&lt;\/div&gt;\n &lt;div&gt;\
n &lt;div
class=\&quot;tombstone-product-type\&quot;&gt;\n
&lt;span class=\&quot;tombstone-product-type-name\&quot;&gt;eBook&lt;\/span&gt;\n
&lt;i class=\&quot;fas fa-book-open\&quot;&gt;&lt;\/i&gt;\n
&lt;\/div&gt;\n \n
&lt;button class=\&quot;action tocart btn btn-primary\&quot;\n
data-product-sku=\&quot;9781838551414\&quot;\n
data-currency-code=\&quot;USD\&quot;\n
data-product-name=\&quot;Microsoft Azure Architect Technologies: Exam Guide AZ-300\
&quot;\n data-product-variant=\
&quot;EBOOK\&quot;\n data-
price=\&quot;5\&quot;\n data-
original-price=\&quot;27.99\&quot;\n\n\n
\n \n
data-price-after-promo=\&quot;5\&quot;\n
data-product-category=\&quot;cloud-networking\&quot;\n
data-product-qty=\&quot;1\&quot;\n
data-action-field=\&quot;Top Sellers\&quot;\n
data-post=&#039;{\&quot;action\&quot;:\&quot;https:\\\/\\\/www.packtpub.com\\\/
checkout\\\/cart\\\/add\\\/uenc\\\/
aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw%2C%2C\\\/product\\\/76302\\\/\
&quot;,\&quot;data\&quot;:{\&quot;product\&quot;:\&quot;76302\&quot;,\&quot;uenc\
&quot;:\&quot;aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw,,\&quot;}}&#039;\n
type=\&quot;button\&quot;\n
title=\&quot;Add to Cart\&quot;&gt;\n
&lt;span&gt;\n Add to Cart
&lt;\/span&gt;\n &lt;\/button&gt;\n
&lt;\/div&gt;\n\n &lt;a
class=\&quot;btn btn-secondary\&quot;\n href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/cloud-networking\/microsoft-azure-architect-
technologies-exam-guide-az-300\&quot;&gt;\n View
Details &lt;\/a&gt;\n
&lt;\/div&gt;\n &lt;\/div&gt;\n
&lt;div class=\&quot;tombstone\&quot;&gt;\n &lt;!--
new_products_content_widget_grid--&gt; &lt;a href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/programming\/hands-on-software-architecture-with-
c-8\&quot;&gt;\n \n&lt;span class=\&quot;product-image-
container\&quot;\n style=\&quot;width:240px;\&quot;&gt;\n &lt;span class=\
&quot;product-image-wrapper\&quot;\n style=\&quot;padding-bottom: 125%;\
&quot;&gt;\n &lt;img class=\&quot;product-image-photo\&quot;\n
src=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/media\/catalog\/product\/cache\/
abd628df6af33f734d56624223a191f5\/9\/7\/9781789800937-original.png\&quot;\n
max-width=\&quot;240\&quot;\n max-height=\&quot;300\&quot;\n
alt=\&quot;Hands-On Software Architecture with C# 8 and .NET Core
3\&quot;\/&gt;&lt;\/span&gt;\n&lt;\/span&gt;\n &lt;\/a&gt;\
n\n &lt;div class=\&quot;tombstone-main\&quot;&gt;\n
&lt;a title=\&quot;Hands-On Software Architecture with C# 8 and .NET Core 3\&quot;\
n
href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/programming\/hands-on-software-
architecture-with-c-8\&quot;&gt;\n &lt;p class=\
&quot;tombstone-name\&quot;&gt;\n Hands-On
Software Architecture with C# 8... &lt;\/p&gt;\n
&lt;\/a&gt;\n\n
\n
\n
&lt;div class=\
&quot;price\&quot;&gt;\n
$ 5.00
&lt;\/div&gt;\n &lt;div&gt;\
n &lt;div
class=\&quot;tombstone-product-type\&quot;&gt;\n
&lt;span class=\&quot;tombstone-product-type-name\&quot;&gt;eBook&lt;\/span&gt;\n
&lt;i class=\&quot;fas fa-book-open\&quot;&gt;&lt;\/i&gt;\n
&lt;\/div&gt;\n \n
&lt;button class=\&quot;action tocart btn btn-primary\&quot;\n
data-product-sku=\&quot;9781789803280\&quot;\n
data-currency-code=\&quot;USD\&quot;\n
data-product-name=\&quot;Hands-On Software Architecture with C# 8 and .NET Core 3\
&quot;\n data-product-variant=\
&quot;EBOOK\&quot;\n data-
price=\&quot;5\&quot;\n data-
original-price=\&quot;31.99\&quot;\n\n\n
\n \n
data-price-after-promo=\&quot;5\&quot;\n
data-product-category=\&quot;programming\&quot;\n
data-product-qty=\&quot;1\&quot;\n
data-action-field=\&quot;Top Sellers\&quot;\n
data-post=&#039;{\&quot;action\&quot;:\&quot;https:\\\/\\\/www.packtpub.com\\\/
checkout\\\/cart\\\/add\\\/uenc\\\/
aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw%2C%2C\\\/product\\\/76383\\\/\
&quot;,\&quot;data\&quot;:{\&quot;product\&quot;:\&quot;76383\&quot;,\&quot;uenc\
&quot;:\&quot;aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw,,\&quot;}}&#039;\n
type=\&quot;button\&quot;\n
title=\&quot;Add to Cart\&quot;&gt;\n
&lt;span&gt;\n Add to Cart
&lt;\/span&gt;\n &lt;\/button&gt;\n
&lt;\/div&gt;\n\n &lt;a
class=\&quot;btn btn-secondary\&quot;\n href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/programming\/hands-on-software-architecture-with-
c-8\&quot;&gt;\n View Details
&lt;\/a&gt;\n &lt;\/div&gt;\n
&lt;\/div&gt;\n &lt;div class=\&quot;tombstone\
&quot;&gt;\n &lt;!-- new_products_content_widget_grid--&gt;
&lt;a href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/web-development\/learn-asp-net-core-
3-second-edition\&quot;&gt;\n \n&lt;span class=\
&quot;product-image-container\&quot;\n style=\&quot;width:240px;\&quot;&gt;\n
&lt;span class=\&quot;product-image-wrapper\&quot;\n style=\&quot;padding-
bottom: 125%;\&quot;&gt;\n &lt;img class=\&quot;product-image-photo\&quot;\n
src=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/media\/catalog\/product\/cache\/
abd628df6af33f734d56624223a191f5\/9\/7\/9781789610130-original.png\&quot;\n
max-width=\&quot;240\&quot;\n max-height=\&quot;300\&quot;\n
alt=\&quot;Learn ASP.NET Core 3 - Second Edition\&quot;\/&gt;&lt;\/span&gt;\
n&lt;\/span&gt;\n &lt;\/a&gt;\n\n
&lt;div class=\&quot;tombstone-main\&quot;&gt;\n &lt;a
title=\&quot;Learn ASP.NET Core 3 - Second Edition\&quot;\n
href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/web-development\/learn-asp-net-core-3-
second-edition\&quot;&gt;\n &lt;p class=\
&quot;tombstone-name\&quot;&gt;\n Learn ASP.NET
Core 3 - Second Edition &lt;\/p&gt;\n
&lt;\/a&gt;\n\n
\n
\n &lt;div class=\
&quot;price\&quot;&gt;\n
$ 27.99
&lt;\/div&gt;\n &lt;div&gt;\
n &lt;div
class=\&quot;tombstone-product-type\&quot;&gt;\n
&lt;span class=\&quot;tombstone-product-type-name\&quot;&gt;eBook&lt;\/span&gt;\n
&lt;i class=\&quot;fas fa-book-open\&quot;&gt;&lt;\/i&gt;\n
&lt;\/div&gt;\n \n
&lt;\/div&gt;\n\n &lt;a
class=\&quot;btn btn-secondary\&quot;\n href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/web-development\/learn-asp-net-core-3-second-
edition\&quot;&gt;\n View Details
&lt;\/a&gt;\n &lt;\/div&gt;\n
&lt;\/div&gt;\n &lt;div class=\&quot;tombstone\
&quot;&gt;\n &lt;!-- new_products_content_widget_grid--&gt;
&lt;a href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/web-development\/clean-code-in-
javascript\&quot;&gt;\n \n&lt;span class=\&quot;product-
image-container\&quot;\n style=\&quot;width:240px;\&quot;&gt;\n &lt;span
class=\&quot;product-image-wrapper\&quot;\n style=\&quot;padding-bottom:
125%;\&quot;&gt;\n &lt;img class=\&quot;product-image-photo\&quot;\n
src=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/media\/catalog\/product\/cache\/
abd628df6af33f734d56624223a191f5\/9\/7\/9781789957648-original.png\&quot;\n
max-width=\&quot;240\&quot;\n max-height=\&quot;300\&quot;\n
alt=\&quot;Clean Code in JavaScript\&quot;\/&gt;&lt;\/span&gt;\n&lt;\/span&gt;\n
&lt;\/a&gt;\n\n &lt;div class=\&quot;tombstone-main\
&quot;&gt;\n &lt;a title=\&quot;Clean Code in
JavaScript\&quot;\n
href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/web-development\/clean-code-in-javascript\
&quot;&gt;\n &lt;p class=\&quot;tombstone-name\
&quot;&gt;\n Clean Code in JavaScript
&lt;\/p&gt;\n &lt;\/a&gt;\n\n
\n
\n &lt;div class=\
&quot;price\&quot;&gt;\n
$ 5.00
&lt;\/div&gt;\n &lt;div&gt;\
n &lt;div
class=\&quot;tombstone-product-type\&quot;&gt;\n
&lt;span class=\&quot;tombstone-product-type-name\&quot;&gt;eBook&lt;\/span&gt;\n
&lt;i class=\&quot;fas fa-book-open\&quot;&gt;&lt;\/i&gt;\n
&lt;\/div&gt;\n \n
&lt;button class=\&quot;action tocart btn btn-primary\&quot;\n
data-product-sku=\&quot;9781789957297\&quot;\n
data-currency-code=\&quot;USD\&quot;\n
data-product-name=\&quot;Clean Code in JavaScript\&quot;\n
data-product-variant=\&quot;EBOOK\&quot;\n
data-price=\&quot;5\&quot;\n
data-original-price=\&quot;24.99\&quot;\n\n\n
\n \n
data-price-after-promo=\&quot;5\&quot;\n
data-product-category=\&quot;web-development\&quot;\n
data-product-qty=\&quot;1\&quot;\n
data-action-field=\&quot;Top Sellers\&quot;\n
data-post=&#039;{\&quot;action\&quot;:\&quot;https:\\\/\\\/www.packtpub.com\\\/
checkout\\\/cart\\\/add\\\/uenc\\\/
aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw%2C%2C\\\/product\\\/76969\\\/\
&quot;,\&quot;data\&quot;:{\&quot;product\&quot;:\&quot;76969\&quot;,\&quot;uenc\
&quot;:\&quot;aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw,,\&quot;}}&#039;\n
type=\&quot;button\&quot;\n
title=\&quot;Add to Cart\&quot;&gt;\n
&lt;span&gt;\n Add to Cart
&lt;\/span&gt;\n &lt;\/button&gt;\n
&lt;\/div&gt;\n\n &lt;a
class=\&quot;btn btn-secondary\&quot;\n href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/web-development\/clean-code-in-javascript\
&quot;&gt;\n View Details
&lt;\/a&gt;\n &lt;\/div&gt;\n
&lt;\/div&gt;\n &lt;div class=\&quot;tombstone\
&quot;&gt;\n &lt;!-- new_products_content_widget_grid--&gt;
&lt;a href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/cloud-networking\/networking-
fundamentals\&quot;&gt;\n \n&lt;span class=\
&quot;product-image-container\&quot;\n style=\&quot;width:240px;\&quot;&gt;\n
&lt;span class=\&quot;product-image-wrapper\&quot;\n style=\&quot;padding-
bottom: 125%;\&quot;&gt;\n &lt;img class=\&quot;product-image-photo\&quot;\n
src=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/media\/catalog\/product\/cache\/
abd628df6af33f734d56624223a191f5\/9\/7\/9781838643508-original_1.jpg\&quot;\n
max-width=\&quot;240\&quot;\n max-height=\&quot;300\&quot;\n
alt=\&quot;Networking Fundamentals\&quot;\/&gt;&lt;\/span&gt;\n&lt;\/span&gt;\n
&lt;\/a&gt;\n\n &lt;div class=\&quot;tombstone-main\
&quot;&gt;\n &lt;a title=\&quot;Networking Fundamentals\
&quot;\n
href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/cloud-networking\/networking-fundamentals\
&quot;&gt;\n &lt;p class=\&quot;tombstone-name\
&quot;&gt;\n Networking Fundamentals
&lt;\/p&gt;\n &lt;\/a&gt;\n\n
\n
\n &lt;div class=\
&quot;price\&quot;&gt;\n
$ 5.00
&lt;\/div&gt;\n &lt;div&gt;\
n &lt;div
class=\&quot;tombstone-product-type\&quot;&gt;\n
&lt;span class=\&quot;tombstone-product-type-name\&quot;&gt;eBook&lt;\/span&gt;\n
&lt;i class=\&quot;fas fa-book-open\&quot;&gt;&lt;\/i&gt;\n
&lt;\/div&gt;\n \n
&lt;button class=\&quot;action tocart btn btn-primary\&quot;\n
data-product-sku=\&quot;9781838648749\&quot;\n
data-currency-code=\&quot;USD\&quot;\n
data-product-name=\&quot;Networking Fundamentals\&quot;\n
data-product-variant=\&quot;EBOOK\&quot;\n
data-price=\&quot;5\&quot;\n
data-original-price=\&quot;27.99\&quot;\n\n\n
\n \n
data-price-after-promo=\&quot;5\&quot;\n
data-product-category=\&quot;cloud-networking\&quot;\n
data-product-qty=\&quot;1\&quot;\n
data-action-field=\&quot;Top Sellers\&quot;\n
data-post=&#039;{\&quot;action\&quot;:\&quot;https:\\\/\\\/www.packtpub.com\\\/
checkout\\\/cart\\\/add\\\/uenc\\\/
aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw%2C%2C\\\/product\\\/76435\\\/\
&quot;,\&quot;data\&quot;:{\&quot;product\&quot;:\&quot;76435\&quot;,\&quot;uenc\
&quot;:\&quot;aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw,,\&quot;}}&#039;\n
type=\&quot;button\&quot;\n
title=\&quot;Add to Cart\&quot;&gt;\n
&lt;span&gt;\n Add to Cart
&lt;\/span&gt;\n &lt;\/button&gt;\n
&lt;\/div&gt;\n\n &lt;a
class=\&quot;btn btn-secondary\&quot;\n href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/cloud-networking\/networking-fundamentals\
&quot;&gt;\n View Details
&lt;\/a&gt;\n &lt;\/div&gt;\n
&lt;\/div&gt;\n &lt;div class=\&quot;tombstone\
&quot;&gt;\n &lt;!-- new_products_content_widget_grid--&gt;
&lt;a href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/web-development\/c-8-and-net-core-3-
0-projects-second-edition\&quot;&gt;\n \n&lt;span
class=\&quot;product-image-container\&quot;\n style=\&quot;width:240px;\
&quot;&gt;\n &lt;span class=\&quot;product-image-wrapper\&quot;\n
style=\&quot;padding-bottom: 125%;\&quot;&gt;\n &lt;img class=\
&quot;product-image-photo\&quot;\n
src=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/media\/catalog\/product\/cache\/
abd628df6af33f734d56624223a191f5\/9\/7\/9781789612080-original.jpeg\&quot;\n
max-width=\&quot;240\&quot;\n max-height=\&quot;300\&quot;\n
alt=\&quot;C# 8 and .NET Core 3 Projects Using Azure - Second
Edition\&quot;\/&gt;&lt;\/span&gt;\n&lt;\/span&gt;\n
&lt;\/a&gt;\n\n &lt;div class=\&quot;tombstone-main\
&quot;&gt;\n &lt;a title=\&quot;C# 8 and .NET Core 3
Projects Using Azure - Second Edition\&quot;\n href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/web-development\/c-8-and-net-core-3-0-projects-
second-edition\&quot;&gt;\n &lt;p class=\
&quot;tombstone-name\&quot;&gt;\n C# 8 and .NET
Core 3 Projects Using Azure -... &lt;\/p&gt;\n
&lt;\/a&gt;\n\n
\n
\n &lt;div class=\
&quot;price\&quot;&gt;\n
$ 5.00
&lt;\/div&gt;\n &lt;div&gt;\
n &lt;div
class=\&quot;tombstone-product-type\&quot;&gt;\n
&lt;span class=\&quot;tombstone-product-type-name\&quot;&gt;eBook&lt;\/span&gt;\n
&lt;i class=\&quot;fas fa-book-open\&quot;&gt;&lt;\/i&gt;\n
&lt;\/div&gt;\n
\n
&lt;button class=\&quot;action tocart btn btn-primary\&quot;\n
data-product-sku=\&quot;9781789610246\&quot;\n
data-currency-code=\&quot;USD\&quot;\n
data-product-name=\&quot;C# 8 and .NET Core 3 Projects Using Azure - Second
Edition\&quot;\n data-product-
variant=\&quot;EBOOK\&quot;\n
data-price=\&quot;5\&quot;\n
data-original-price=\&quot;27.99\&quot;\n\n\n
\n \n
data-price-after-promo=\&quot;5\&quot;\n
data-product-category=\&quot;web-development\&quot;\n
data-product-qty=\&quot;1\&quot;\n
data-action-field=\&quot;Top Sellers\&quot;\n
data-post=&#039;{\&quot;action\&quot;:\&quot;https:\\\/\\\/www.packtpub.com\\\/
checkout\\\/cart\\\/add\\\/uenc\\\/
aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw%2C%2C\\\/product\\\/77362\\\/\
&quot;,\&quot;data\&quot;:{\&quot;product\&quot;:\&quot;77362\&quot;,\&quot;uenc\
&quot;:\&quot;aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw,,\&quot;}}&#039;\n
type=\&quot;button\&quot;\n
title=\&quot;Add to Cart\&quot;&gt;\n
&lt;span&gt;\n Add to Cart
&lt;\/span&gt;\n &lt;\/button&gt;\n
&lt;\/div&gt;\n\n &lt;a
class=\&quot;btn btn-secondary\&quot;\n href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/web-development\/c-8-and-net-core-3-0-projects-
second-edition\&quot;&gt;\n View Details
&lt;\/a&gt;\n &lt;\/div&gt;\n
&lt;\/div&gt;\n &lt;div class=\&quot;tombstone\
&quot;&gt;\n &lt;!-- new_products_content_widget_grid--&gt;
&lt;a href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/web-development\/hands-on-docker-for-
microservices-with-python\&quot;&gt;\n \n&lt;span
class=\&quot;product-image-container\&quot;\n style=\&quot;width:240px;\
&quot;&gt;\n &lt;span class=\&quot;product-image-wrapper\&quot;\n
style=\&quot;padding-bottom: 125%;\&quot;&gt;\n &lt;img class=\
&quot;product-image-photo\&quot;\n
src=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/media\/catalog\/product\/cache\/
abd628df6af33f734d56624223a191f5\/9\/7\/9781838823818-original.png\&quot;\n
max-width=\&quot;240\&quot;\n max-height=\&quot;300\&quot;\n
alt=\&quot;Hands-On Docker for Microservices with
Python\&quot;\/&gt;&lt;\/span&gt;\n&lt;\/span&gt;\n
&lt;\/a&gt;\n\n &lt;div class=\&quot;tombstone-main\
&quot;&gt;\n &lt;a title=\&quot;Hands-On Docker for
Microservices with Python\&quot;\n href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/web-development\/hands-on-docker-for-
microservices-with-python\&quot;&gt;\n &lt;p class=\
&quot;tombstone-name\&quot;&gt;\n Hands-On
Docker for Microservices with Python &lt;\/p&gt;\n
&lt;\/a&gt;\n\n
\n
\n &lt;div class=\
&quot;price\&quot;&gt;\n
$ 5.00
&lt;\/div&gt;\n &lt;div&gt;\
n &lt;div
class=\&quot;tombstone-product-type\&quot;&gt;\n
&lt;span class=\&quot;tombstone-product-type-name\&quot;&gt;eBook&lt;\/span&gt;\n
&lt;i class=\&quot;fas fa-book-open\&quot;&gt;&lt;\/i&gt;\n
&lt;\/div&gt;\n \n
&lt;button class=\&quot;action tocart btn btn-primary\&quot;\n
data-product-sku=\&quot;9781838822552\&quot;\n
data-currency-code=\&quot;USD\&quot;\n
data-product-name=\&quot;Hands-On Docker for Microservices with Python\&quot;\n
data-product-variant=\&quot;EBOOK\&quot;\n
data-price=\&quot;5\&quot;\n
data-original-price=\&quot;27.99\&quot;\n\n\n
\n \n
data-price-after-promo=\&quot;5\&quot;\n
data-product-category=\&quot;web-development\&quot;\n
data-product-qty=\&quot;1\&quot;\n
data-action-field=\&quot;Top Sellers\&quot;\n
data-post=&#039;{\&quot;action\&quot;:\&quot;https:\\\/\\\/www.packtpub.com\\\/
checkout\\\/cart\\\/add\\\/uenc\\\/
aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw%2C%2C\\\/product\\\/76314\\\/\
&quot;,\&quot;data\&quot;:{\&quot;product\&quot;:\&quot;76314\&quot;,\&quot;uenc\
&quot;:\&quot;aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw,,\&quot;}}&#039;\n
type=\&quot;button\&quot;\n
title=\&quot;Add to Cart\&quot;&gt;\n
&lt;span&gt;\n Add to Cart
&lt;\/span&gt;\n &lt;\/button&gt;\n
&lt;\/div&gt;\n\n &lt;a
class=\&quot;btn btn-secondary\&quot;\n href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/web-development\/hands-on-docker-for-
microservices-with-python\&quot;&gt;\n View Details
&lt;\/a&gt;\n &lt;\/div&gt;\n
&lt;\/div&gt;\n &lt;div class=\&quot;tombstone\
&quot;&gt;\n &lt;!-- new_products_content_widget_grid--&gt;
&lt;a href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/security\/cybersecurity-attack-and-
defense-strategies-second-edition\&quot;&gt;\n \
n&lt;span class=\&quot;product-image-container\&quot;\n style=\
&quot;width:240px;\&quot;&gt;\n &lt;span class=\&quot;product-image-wrapper\
&quot;\n style=\&quot;padding-bottom: 125%;\&quot;&gt;\n &lt;img
class=\&quot;product-image-photo\&quot;\n src=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/media\/catalog\/product\/cache\/
abd628df6af33f734d56624223a191f5\/9\/7\/9781838827793-original.jpeg\&quot;\n
max-width=\&quot;240\&quot;\n max-height=\&quot;300\&quot;\n
alt=\&quot;Cybersecurity \u2013 Attack and Defense Strategies - Second Edition\
&quot;\/&gt;&lt;\/span&gt;\n&lt;\/span&gt;\n &lt;\/a&gt;\n\n
&lt;div class=\&quot;tombstone-main\&quot;&gt;\n &lt;a
title=\&quot;Cybersecurity \u2013 Attack and Defense Strategies - Second Edition\
&quot;\n
href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/security\/cybersecurity-attack-and-defense-
strategies-second-edition\&quot;&gt;\n &lt;p class=\
&quot;tombstone-name\&quot;&gt;\n
Cybersecurity \u2013 Attack and Defense...
&lt;\/p&gt;\n &lt;\/a&gt;\n\n
\n
\n &lt;div class=\
&quot;price\&quot;&gt;\n
$ 5.00
&lt;\/div&gt;\n &lt;div&gt;\
n &lt;div
class=\&quot;tombstone-product-type\&quot;&gt;\n
&lt;span class=\&quot;tombstone-product-type-name\&quot;&gt;eBook&lt;\/span&gt;\n
&lt;i class=\&quot;fas fa-book-open\&quot;&gt;&lt;\/i&gt;\n
&lt;\/div&gt;\n \n
&lt;button class=\&quot;action tocart btn btn-primary\&quot;\n
data-product-sku=\&quot;9781838822217\&quot;\n
data-currency-code=\&quot;USD\&quot;\n
data-product-name=\&quot;Cybersecurity \u2013 Attack and Defense Strategies -
Second Edition\&quot;\n data-
product-variant=\&quot;EBOOK\&quot;\n
data-price=\&quot;5\&quot;\n
data-original-price=\&quot;27.99\&quot;\n\n\n
\n \n
data-price-after-promo=\&quot;5\&quot;\n
data-product-category=\&quot;security\&quot;\n
data-product-qty=\&quot;1\&quot;\n
data-action-field=\&quot;Top Sellers\&quot;\n
data-post=&#039;{\&quot;action\&quot;:\&quot;https:\\\/\\\/www.packtpub.com\\\/
checkout\\\/cart\\\/add\\\/uenc\\\/
aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw%2C%2C\\\/product\\\/76510\\\/\
&quot;,\&quot;data\&quot;:{\&quot;product\&quot;:\&quot;76510\&quot;,\&quot;uenc\
&quot;:\&quot;aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw,,\&quot;}}&#039;\n
type=\&quot;button\&quot;\n
title=\&quot;Add to Cart\&quot;&gt;\n
&lt;span&gt;\n Add to Cart
&lt;\/span&gt;\n &lt;\/button&gt;\n
&lt;\/div&gt;\n\n &lt;a
class=\&quot;btn btn-secondary\&quot;\n href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/security\/cybersecurity-attack-and-defense-
strategies-second-edition\&quot;&gt;\n View Details
&lt;\/a&gt;\n &lt;\/div&gt;\n
&lt;\/div&gt;\n &lt;div class=\&quot;tombstone\
&quot;&gt;\n &lt;!-- new_products_content_widget_grid--&gt;
&lt;a href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/programming\/react-js-projects\
&quot;&gt;\n \n&lt;span class=\&quot;product-image-
container\&quot;\n style=\&quot;width:240px;\&quot;&gt;\n &lt;span class=\
&quot;product-image-wrapper\&quot;\n style=\&quot;padding-bottom: 125%;\
&quot;&gt;\n &lt;img class=\&quot;product-image-photo\&quot;\n
src=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/media\/catalog\/product\/cache\/
abd628df6af33f734d56624223a191f5\/9\/7\/9781789954937-original.png\&quot;\n
max-width=\&quot;240\&quot;\n max-height=\&quot;300\&quot;\n
alt=\&quot;React Projects\&quot;\/&gt;&lt;\/span&gt;\n&lt;\/span&gt;\n
&lt;\/a&gt;\n\n &lt;div class=\&quot;tombstone-main\
&quot;&gt;\n &lt;a title=\&quot;React Projects\&quot;\n
href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/programming\/react-js-projects\&quot;&gt;\n
&lt;p class=\&quot;tombstone-name\&quot;&gt;\n
React Projects &lt;\/p&gt;\n
&lt;\/a&gt;\n\n
\n
\n &lt;div class=\
&quot;price\&quot;&gt;\n
$ 5.00
&lt;\/div&gt;\n &lt;div&gt;\
n &lt;div
class=\&quot;tombstone-product-type\&quot;&gt;\n
&lt;span class=\&quot;tombstone-product-type-name\&quot;&gt;eBook&lt;\/span&gt;\n
&lt;i class=\&quot;fas fa-book-open\&quot;&gt;&lt;\/i&gt;\n
&lt;\/div&gt;\n \n
&lt;button class=\&quot;action tocart btn btn-primary\&quot;\n
data-product-sku=\&quot;9781789953398\&quot;\n
data-currency-code=\&quot;USD\&quot;\n
data-product-name=\&quot;React Projects\&quot;\n
data-product-variant=\&quot;EBOOK\&quot;\n
data-price=\&quot;5\&quot;\n
data-original-price=\&quot;24.99\&quot;\n\n\n
\n \n
data-price-after-promo=\&quot;5\&quot;\n
data-product-category=\&quot;programming\&quot;\n
data-product-qty=\&quot;1\&quot;\n
data-action-field=\&quot;Top Sellers\&quot;\n
data-post=&#039;{\&quot;action\&quot;:\&quot;https:\\\/\\\/www.packtpub.com\\\/
checkout\\\/cart\\\/add\\\/uenc\\\/
aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw%2C%2C\\\/product\\\/76879\\\/\
&quot;,\&quot;data\&quot;:{\&quot;product\&quot;:\&quot;76879\&quot;,\&quot;uenc\
&quot;:\&quot;aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw,,\&quot;}}&#039;\n
type=\&quot;button\&quot;\n
title=\&quot;Add to Cart\&quot;&gt;\n
&lt;span&gt;\n Add to Cart
&lt;\/span&gt;\n &lt;\/button&gt;\n
&lt;\/div&gt;\n\n &lt;a
class=\&quot;btn btn-secondary\&quot;\n href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/programming\/react-js-projects\&quot;&gt;\n
View Details &lt;\/a&gt;\n
&lt;\/div&gt;\n &lt;\/div&gt;\n
&lt;div class=\&quot;tombstone\&quot;&gt;\n &lt;!--
new_products_content_widget_grid--&gt; &lt;a href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/extreme-c\&quot;&gt;\n
\n&lt;span class=\&quot;product-image-container\&quot;\n style=\
&quot;width:240px;\&quot;&gt;\n &lt;span class=\&quot;product-image-wrapper\
&quot;\n style=\&quot;padding-bottom: 125%;\&quot;&gt;\n &lt;img
class=\&quot;product-image-photo\&quot;\n src=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/media\/catalog\/product\/cache\/
abd628df6af33f734d56624223a191f5\/9\/7\/9781789343625-original_2.png\&quot;\n
max-width=\&quot;240\&quot;\n max-height=\&quot;300\&quot;\n
alt=\&quot;Extreme C\&quot;\/&gt;&lt;\/span&gt;\n&lt;\/span&gt;\n
&lt;\/a&gt;\n\n &lt;div class=\&quot;tombstone-main\
&quot;&gt;\n &lt;a title=\&quot;Extreme C\&quot;\n
href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/extreme-c\&quot;&gt;\n
&lt;p class=\&quot;tombstone-name\&quot;&gt;\n
Extreme C &lt;\/p&gt;\n
&lt;\/a&gt;\n\n
\n
\n &lt;div class=\
&quot;price\&quot;&gt;\n
$ 5.00
&lt;\/div&gt;\n &lt;div&gt;\
n &lt;div
class=\&quot;tombstone-product-type\&quot;&gt;\n
&lt;span class=\&quot;tombstone-product-type-name\&quot;&gt;eBook&lt;\/span&gt;\n
&lt;i class=\&quot;fas fa-book-open\&quot;&gt;&lt;\/i&gt;\n
&lt;\/div&gt;\n \n
&lt;button class=\&quot;action tocart btn btn-primary\&quot;\n
data-product-sku=\&quot;9781789341355\&quot;\n
data-currency-code=\&quot;USD\&quot;\n
data-product-name=\&quot;Extreme C\&quot;\n
data-product-variant=\&quot;EBOOK\&quot;\n
data-price=\&quot;5\&quot;\n
data-original-price=\&quot;39.99\&quot;\n\n\n
\n \n
data-price-after-promo=\&quot;5\&quot;\n
data-product-category=\&quot;programming\&quot;\n
data-product-qty=\&quot;1\&quot;\n
data-action-field=\&quot;Top Sellers\&quot;\n
data-post=&#039;{\&quot;action\&quot;:\&quot;https:\\\/\\\/www.packtpub.com\\\/
checkout\\\/cart\\\/add\\\/uenc\\\/
aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw%2C%2C\\\/product\\\/79695\\\/\
&quot;,\&quot;data\&quot;:{\&quot;product\&quot;:\&quot;79695\&quot;,\&quot;uenc\
&quot;:\&quot;aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw,,\&quot;}}&#039;\n
type=\&quot;button\&quot;\n
title=\&quot;Add to Cart\&quot;&gt;\n
&lt;span&gt;\n Add to Cart
&lt;\/span&gt;\n &lt;\/button&gt;\n
&lt;\/div&gt;\n\n &lt;a
class=\&quot;btn btn-secondary\&quot;\n href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/extreme-c\&quot;&gt;\n
View Details &lt;\/a&gt;\n
&lt;\/div&gt;\n &lt;\/div&gt;\n
&lt;div class=\&quot;tombstone\&quot;&gt;\n &lt;!--
new_products_content_widget_grid--&gt; &lt;a href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/data\/python-feature-engineering-cookbook\
&quot;&gt;\n \n&lt;span class=\&quot;product-image-
container\&quot;\n style=\&quot;width:240px;\&quot;&gt;\n &lt;span class=\
&quot;product-image-wrapper\&quot;\n style=\&quot;padding-bottom: 125%;\
&quot;&gt;\n &lt;img class=\&quot;product-image-photo\&quot;\n
src=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/media\/catalog\/product\/cache\/
abd628df6af33f734d56624223a191f5\/9\/7\/9781789806311-original.png\&quot;\n
max-width=\&quot;240\&quot;\n max-height=\&quot;300\&quot;\n
alt=\&quot;Python Feature Engineering
Cookbook\&quot;\/&gt;&lt;\/span&gt;\n&lt;\/span&gt;\n
&lt;\/a&gt;\n\n &lt;div class=\&quot;tombstone-main\
&quot;&gt;\n &lt;a title=\&quot;Python Feature
Engineering Cookbook\&quot;\n
href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/data\/python-feature-engineering-cookbook\
&quot;&gt;\n &lt;p class=\&quot;tombstone-name\
&quot;&gt;\n Python Feature Engineering Cookbook
&lt;\/p&gt;\n &lt;\/a&gt;\n\n
\n
\n &lt;div class=\
&quot;price\&quot;&gt;\n
$ 5.00
&lt;\/div&gt;\n &lt;div&gt;\
n &lt;div
class=\&quot;tombstone-product-type\&quot;&gt;\n
&lt;span class=\&quot;tombstone-product-type-name\&quot;&gt;eBook&lt;\/span&gt;\n
&lt;i class=\&quot;fas fa-book-open\&quot;&gt;&lt;\/i&gt;\n
&lt;\/div&gt;\n \n
&lt;button class=\&quot;action tocart btn btn-primary\&quot;\n
data-product-sku=\&quot;9781789807820\&quot;\n
data-currency-code=\&quot;USD\&quot;\n
data-product-name=\&quot;Python Feature Engineering Cookbook\&quot;\n
data-product-variant=\&quot;EBOOK\&quot;\n
data-price=\&quot;5\&quot;\n
data-original-price=\&quot;27.99\&quot;\n\n\n
\n \n
data-price-after-promo=\&quot;5\&quot;\n
data-product-category=\&quot;data\&quot;\n
data-product-qty=\&quot;1\&quot;\n
data-action-field=\&quot;Top Sellers\&quot;\n
data-post=&#039;{\&quot;action\&quot;:\&quot;https:\\\/\\\/www.packtpub.com\\\/
checkout\\\/cart\\\/add\\\/uenc\\\/
aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw%2C%2C\\\/product\\\/77680\\\/\
&quot;,\&quot;data\&quot;:{\&quot;product\&quot;:\&quot;77680\&quot;,\&quot;uenc\
&quot;:\&quot;aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw,,\&quot;}}&#039;\n
type=\&quot;button\&quot;\n
title=\&quot;Add to Cart\&quot;&gt;\n
&lt;span&gt;\n Add to Cart
&lt;\/span&gt;\n &lt;\/button&gt;\n
&lt;\/div&gt;\n\n &lt;a
class=\&quot;btn btn-secondary\&quot;\n href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/data\/python-feature-engineering-cookbook\
&quot;&gt;\n View Details
&lt;\/a&gt;\n &lt;\/div&gt;\n
&lt;\/div&gt;\n &lt;div class=\&quot;tombstone\
&quot;&gt;\n &lt;!-- new_products_content_widget_grid--&gt;
&lt;a href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/application-development\/hands-
restful-web-services-aspnet-core\&quot;&gt;\n
\n&lt;span class=\&quot;product-image-container\&quot;\
n style=\&quot;width:240px;\&quot;&gt;\n &lt;span class=\&quot;product-
image-wrapper\&quot;\n style=\&quot;padding-bottom: 125%;\&quot;&gt;\n
&lt;img class=\&quot;product-image-photo\&quot;\n src=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/media\/catalog\/product\/cache\/
abd628df6af33f734d56624223a191f5\/9\/7\/9781789537611-original.png\&quot;\n
max-width=\&quot;240\&quot;\n max-height=\&quot;300\&quot;\n
alt=\&quot;Hands-On RESTful Web Services with ASP.NET Core
3\&quot;\/&gt;&lt;\/span&gt;\n&lt;\/span&gt;\n &lt;\/a&gt;\
n\n &lt;div class=\&quot;tombstone-main\&quot;&gt;\n
&lt;a title=\&quot;Hands-On RESTful Web Services with ASP.NET Core 3\&quot;\n
href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/application-development\/hands-restful-web-
services-aspnet-core\&quot;&gt;\n &lt;p class=\
&quot;tombstone-name\&quot;&gt;\n Hands-On
RESTful Web Services with ASP.NET... &lt;\/p&gt;\n
&lt;\/a&gt;\n\n
\n
\n &lt;div class=\
&quot;price\&quot;&gt;\n
$ 5.00
&lt;\/div&gt;\n &lt;div&gt;\
n &lt;div
class=\&quot;tombstone-product-type\&quot;&gt;\n
&lt;span class=\&quot;tombstone-product-type-name\&quot;&gt;eBook&lt;\/span&gt;\n
&lt;i class=\&quot;fas fa-book-open\&quot;&gt;&lt;\/i&gt;\n
&lt;\/div&gt;\n \n
&lt;button class=\&quot;action tocart btn btn-primary\&quot;\n
data-product-sku=\&quot;9781789539240\&quot;\n
data-currency-code=\&quot;USD\&quot;\n
data-product-name=\&quot;Hands-On RESTful Web Services with ASP.NET Core 3\&quot;\n
data-product-variant=\&quot;EBOOK\&quot;\n
data-price=\&quot;5\&quot;\n
data-original-price=\&quot;27.99\&quot;\n\n\n
\n \n
data-price-after-promo=\&quot;5\&quot;\n
data-product-category=\&quot;application-development\&quot;\n
data-product-qty=\&quot;1\&quot;\n
data-action-field=\&quot;Top Sellers\&quot;\n
data-post=&#039;{\&quot;action\&quot;:\&quot;https:\\\/\\\/www.packtpub.com\\\/
checkout\\\/cart\\\/add\\\/uenc\\\/
aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw%2C%2C\\\/product\\\/69555\\\/\
&quot;,\&quot;data\&quot;:{\&quot;product\&quot;:\&quot;69555\&quot;,\&quot;uenc\
&quot;:\&quot;aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw,,\&quot;}}&#039;\n
type=\&quot;button\&quot;\n
title=\&quot;Add to Cart\&quot;&gt;\n
&lt;span&gt;\n Add to Cart
&lt;\/span&gt;\n &lt;\/button&gt;\n
&lt;\/div&gt;\n\n &lt;a
class=\&quot;btn btn-secondary\&quot;\n href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/application-development\/hands-restful-web-
services-aspnet-core\&quot;&gt;\n View Details
&lt;\/a&gt;\n &lt;\/div&gt;\n
&lt;\/div&gt;\n &lt;div class=\&quot;tombstone\
&quot;&gt;\n &lt;!-- new_products_content_widget_grid--&gt;
&lt;a href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/data\/hands-on-neuroevolution-with-
python\&quot;&gt;\n \n&lt;span class=\&quot;product-
image-container\&quot;\n style=\&quot;width:240px;\&quot;&gt;\n &lt;span
class=\&quot;product-image-wrapper\&quot;\n style=\&quot;padding-bottom:
125%;\&quot;&gt;\n &lt;img class=\&quot;product-image-photo\&quot;\n
src=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/media\/catalog\/product\/cache\/
abd628df6af33f734d56624223a191f5\/9\/7\/9781838824914-original.jpeg\&quot;\n
max-width=\&quot;240\&quot;\n max-height=\&quot;300\&quot;\n
alt=\&quot;Hands-On Neuroevolution with
Python\&quot;\/&gt;&lt;\/span&gt;\n&lt;\/span&gt;\n
&lt;\/a&gt;\n\n &lt;div class=\&quot;tombstone-main\
&quot;&gt;\n &lt;a title=\&quot;Hands-On Neuroevolution
with Python\&quot;\n
href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/data\/hands-on-neuroevolution-with-python\
&quot;&gt;\n &lt;p class=\&quot;tombstone-name\
&quot;&gt;\n Hands-On Neuroevolution with Python
&lt;\/p&gt;\n &lt;\/a&gt;\n\n
\n
\n &lt;div class=\
&quot;price\&quot;&gt;\n
$ 5.00
&lt;\/div&gt;\n &lt;div&gt;\
n &lt;div
class=\&quot;tombstone-product-type\&quot;&gt;\n
&lt;span class=\&quot;tombstone-product-type-name\&quot;&gt;eBook&lt;\/span&gt;\n
&lt;i class=\&quot;fas fa-book-open\&quot;&gt;&lt;\/i&gt;\n
&lt;\/div&gt;\n \n
&lt;button class=\&quot;action tocart btn btn-primary\&quot;\n
data-product-sku=\&quot;9781838822002\&quot;\n
data-currency-code=\&quot;USD\&quot;\n
data-product-name=\&quot;Hands-On Neuroevolution with Python\&quot;\n
data-product-variant=\&quot;EBOOK\&quot;\n
data-price=\&quot;5\&quot;\n
data-original-price=\&quot;31.99\&quot;\n\n\n
\n \n
data-price-after-promo=\&quot;5\&quot;\n
data-product-category=\&quot;data\&quot;\n
data-product-qty=\&quot;1\&quot;\n
data-action-field=\&quot;Top Sellers\&quot;\n
data-post=&#039;{\&quot;action\&quot;:\&quot;https:\\\/\\\/www.packtpub.com\\\/
checkout\\\/cart\\\/add\\\/uenc\\\/
aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw%2C%2C\\\/product\\\/76924\\\/\
&quot;,\&quot;data\&quot;:{\&quot;product\&quot;:\&quot;76924\&quot;,\&quot;uenc\
&quot;:\&quot;aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw,,\&quot;}}&#039;\n
type=\&quot;button\&quot;\n
title=\&quot;Add to Cart\&quot;&gt;\n
&lt;span&gt;\n Add to Cart
&lt;\/span&gt;\n &lt;\/button&gt;\n
&lt;\/div&gt;\n\n &lt;a
class=\&quot;btn btn-secondary\&quot;\n href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/data\/hands-on-neuroevolution-with-python\
&quot;&gt;\n View Details
&lt;\/a&gt;\n &lt;\/div&gt;\n
&lt;\/div&gt;\n &lt;div class=\&quot;tombstone\
&quot;&gt;\n &lt;!-- new_products_content_widget_grid--&gt;
&lt;a href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/programming\/the-javascript-workshop\
&quot;&gt;\n \n&lt;span class=\&quot;product-image-
container\&quot;\n style=\&quot;width:240px;\&quot;&gt;\n &lt;span class=\
&quot;product-image-wrapper\&quot;\n style=\&quot;padding-bottom: 125%;\
&quot;&gt;\n &lt;img class=\&quot;product-image-photo\&quot;\n
src=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/media\/catalog\/product\/cache\/
abd628df6af33f734d56624223a191f5\/9\/7\/9781838641917-original_212.png\&quot;\n
max-width=\&quot;240\&quot;\n max-height=\&quot;300\&quot;\n
alt=\&quot;The JavaScript Workshop\&quot;\/&gt;&lt;\/span&gt;\n&lt;\/span&gt;\n
&lt;\/a&gt;\n\n &lt;div class=\&quot;tombstone-main\
&quot;&gt;\n &lt;a title=\&quot;The JavaScript Workshop\
&quot;\n
href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/programming\/the-javascript-workshop\
&quot;&gt;\n &lt;p class=\&quot;tombstone-name\
&quot;&gt;\n The JavaScript Workshop
&lt;\/p&gt;\n &lt;\/a&gt;\n\n
\n
\n &lt;div class=\
&quot;price\&quot;&gt;\n
$ 5.00
&lt;\/div&gt;\n &lt;div&gt;\
n &lt;div
class=\&quot;tombstone-product-type\&quot;&gt;\n
&lt;span class=\&quot;tombstone-product-type-name\&quot;&gt;eBook&lt;\/span&gt;\n
&lt;i class=\&quot;fas fa-book-open\&quot;&gt;&lt;\/i&gt;\n
&lt;\/div&gt;\n \n
&lt;button class=\&quot;action tocart btn btn-primary\&quot;\n
data-product-sku=\&quot;9781838645885\&quot;\n
data-currency-code=\&quot;USD\&quot;\n
data-product-name=\&quot;The JavaScript Workshop\&quot;\n
data-product-variant=\&quot;EBOOK\&quot;\n
data-price=\&quot;5\&quot;\n
data-original-price=\&quot;27.99\&quot;\n\n\n
\n \n
data-price-after-promo=\&quot;5\&quot;\n
data-product-category=\&quot;programming\&quot;\n
data-product-qty=\&quot;1\&quot;\n
data-action-field=\&quot;Top Sellers\&quot;\n
data-post=&#039;{\&quot;action\&quot;:\&quot;https:\\\/\\\/www.packtpub.com\\\/
checkout\\\/cart\\\/add\\\/uenc\\\/
aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw%2C%2C\\\/product\\\/76720\\\/\
&quot;,\&quot;data\&quot;:{\&quot;product\&quot;:\&quot;76720\&quot;,\&quot;uenc\
&quot;:\&quot;aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw,,\&quot;}}&#039;\n
type=\&quot;button\&quot;\n
title=\&quot;Add to Cart\&quot;&gt;\n
&lt;span&gt;\n Add to Cart
&lt;\/span&gt;\n &lt;\/button&gt;\n
&lt;\/div&gt;\n\n &lt;a
class=\&quot;btn btn-secondary\&quot;\n href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/programming\/the-javascript-workshop\&quot;&gt;\n
View Details &lt;\/a&gt;\n
&lt;\/div&gt;\n &lt;\/div&gt;\n
&lt;div class=\&quot;tombstone\&quot;&gt;\n &lt;!--
new_products_content_widget_grid--&gt; &lt;a href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/data\/advanced-deep-learning-with-python\
&quot;&gt;\n \n&lt;span class=\&quot;product-image-
container\&quot;\n style=\&quot;width:240px;\&quot;&gt;\n &lt;span class=\
&quot;product-image-wrapper\&quot;\n style=\&quot;padding-bottom: 125%;\
&quot;&gt;\n &lt;img class=\&quot;product-image-photo\&quot;\n
src=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/media\/catalog\/product\/cache\/
abd628df6af33f734d56624223a191f5\/9\/7\/9781789956177-original_1.jpg\&quot;\n
max-width=\&quot;240\&quot;\n max-height=\&quot;300\&quot;\n
alt=\&quot;Advanced Deep Learning with
Python\&quot;\/&gt;&lt;\/span&gt;\n&lt;\/span&gt;\n
&lt;\/a&gt;\n\n &lt;div class=\&quot;tombstone-main\
&quot;&gt;\n &lt;a title=\&quot;Advanced Deep Learning
with Python\&quot;\n
href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/data\/advanced-deep-learning-with-python\
&quot;&gt;\n &lt;p class=\&quot;tombstone-name\
&quot;&gt;\n Advanced Deep Learning with Python
&lt;\/p&gt;\n &lt;\/a&gt;\n\n
\n
\n &lt;div class=\
&quot;price\&quot;&gt;\n
$ 5.00
&lt;\/div&gt;\n &lt;div&gt;\
n &lt;div
class=\&quot;tombstone-product-type\&quot;&gt;\n
&lt;span class=\&quot;tombstone-product-type-name\&quot;&gt;eBook&lt;\/span&gt;\n
&lt;i class=\&quot;fas fa-book-open\&quot;&gt;&lt;\/i&gt;\n
&lt;\/div&gt;\n \n
&lt;button class=\&quot;action tocart btn btn-primary\&quot;\n
data-product-sku=\&quot;9781789952711\&quot;\n
data-currency-code=\&quot;USD\&quot;\n
data-product-name=\&quot;Advanced Deep Learning with Python\&quot;\n
data-product-variant=\&quot;EBOOK\&quot;\n
data-price=\&quot;5\&quot;\n
data-original-price=\&quot;31.99\&quot;\n\n\n
\n \n
data-price-after-promo=\&quot;5\&quot;\n
data-product-category=\&quot;data\&quot;\n
data-product-qty=\&quot;1\&quot;\n
data-action-field=\&quot;Top Sellers\&quot;\n
data-post=&#039;{\&quot;action\&quot;:\&quot;https:\\\/\\\/www.packtpub.com\\\/
checkout\\\/cart\\\/add\\\/uenc\\\/
aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw%2C%2C\\\/product\\\/76840\\\/\
&quot;,\&quot;data\&quot;:{\&quot;product\&quot;:\&qu
ot;76840\&quot;,\&quot;uenc\&quot;:\
&quot;aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw,,\&quot;}}&#039;\n
type=\&quot;button\&quot;\n
title=\&quot;Add to Cart\&quot;&gt;\n
&lt;span&gt;\n Add to Cart
&lt;\/span&gt;\n &lt;\/button&gt;\n
&lt;\/div&gt;\n\n &lt;a
class=\&quot;btn btn-secondary\&quot;\n href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/data\/advanced-deep-learning-with-python\
&quot;&gt;\n View Details
&lt;\/a&gt;\n &lt;\/div&gt;\n
&lt;\/div&gt;\n &lt;div class=\&quot;tombstone\
&quot;&gt;\n &lt;!-- new_products_content_widget_grid--&gt;
&lt;a href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/programming\/the-complete-python-
course-video\&quot;&gt;\n \n&lt;span class=\
&quot;product-image-container\&quot;\n style=\&quot;width:240px;\&quot;&gt;\n
&lt;span class=\&quot;product-image-wrapper\&quot;\n style=\&quot;padding-
bottom: 125%;\&quot;&gt;\n &lt;img class=\&quot;product-image-photo\&quot;\n
src=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/media\/catalog\/product\/cache\/
abd628df6af33f734d56624223a191f5\/9\/7\/9781839217289-original_8.jpeg\&quot;\n
max-width=\&quot;240\&quot;\n max-height=\&quot;300\&quot;\n
alt=\&quot;The Complete Python Course
[Video]\&quot;\/&gt;&lt;\/span&gt;\n&lt;\/span&gt;\n
&lt;\/a&gt;\n\n &lt;div class=\&quot;tombstone-main\
&quot;&gt;\n &lt;a title=\&quot;The Complete Python
Course [Video]\&quot;\n
href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/programming\/the-complete-python-course-
video\&quot;&gt;\n &lt;p class=\&quot;tombstone-
name\&quot;&gt;\n The Complete Python Course
[Video] &lt;\/p&gt;\n
&lt;\/a&gt;\n\n
\n
\n &lt;div class=\
&quot;price\&quot;&gt;\n
$ 5.00
&lt;\/div&gt;\n &lt;div&gt;\
n &lt;div
class=\&quot;tombstone-product-type\&quot;&gt;\n
&lt;span class=\&quot;tombstone-product-type-name\&quot;&gt;Video&lt;\/span&gt;\n
&lt;i class=\&quot;fas fa-video\&quot;&gt;&lt;\/i&gt;\n
&lt;\/div&gt;\n \n
&lt;button class=\&quot;action tocart btn btn-primary\&quot;\n
data-product-sku=\&quot;9781839217289\&quot;\n
data-currency-code=\&quot;USD\&quot;\n
data-product-name=\&quot;The Complete Python Course [Video]\&quot;\n
data-product-variant=\&quot;VIDEO\&quot;\n
data-price=\&quot;5\&quot;\n
data-original-price=\&quot;161.99\&quot;\n\n\n
\n \n
data-price-after-promo=\&quot;5\&quot;\n
data-product-category=\&quot;programming\&quot;\n
data-product-qty=\&quot;1\&quot;\n
data-action-field=\&quot;Top Sellers\&quot;\n
data-post=&#039;{\&quot;action\&quot;:\&quot;https:\\\/\\\/www.packtpub.com\\\/
checkout\\\/cart\\\/add\\\/uenc\\\/
aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw%2C%2C\\\/product\\\/75183\\\/\
&quot;,\&quot;data\&quot;:{\&quot;product\&quot;:\&quot;75183\&quot;,\&quot;uenc\
&quot;:\&quot;aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw,,\&quot;}}&#039;\n
type=\&quot;button\&quot;\n
title=\&quot;Add to Cart\&quot;&gt;\n
&lt;span&gt;\n Add to Cart
&lt;\/span&gt;\n &lt;\/button&gt;\n
&lt;\/div&gt;\n\n &lt;a
class=\&quot;btn btn-secondary\&quot;\n href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/programming\/the-complete-python-course-video\
&quot;&gt;\n View Details
&lt;\/a&gt;\n &lt;\/div&gt;\n
&lt;\/div&gt;\n &lt;div class=\&quot;tombstone\
&quot;&gt;\n &lt;!-- new_products_content_widget_grid--&gt;
&lt;a href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/data\/ai-crash-course\&quot;&gt;\n
\n&lt;span class=\&quot;product-image-container\&quot;\n style=\
&quot;width:240px;\&quot;&gt;\n &lt;span class=\&quot;product-image-wrapper\
&quot;\n style=\&quot;padding-bottom: 125%;\&quot;&gt;\n &lt;img
class=\&quot;product-image-photo\&quot;\n src=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/media\/catalog\/product\/cache\/
abd628df6af33f734d56624223a191f5\/9\/7\/9781838645359-original.png\&quot;\n
max-width=\&quot;240\&quot;\n max-height=\&quot;300\&quot;\n
alt=\&quot;AI Crash Course\&quot;\/&gt;&lt;\/span&gt;\n&lt;\/span&gt;\n
&lt;\/a&gt;\n\n &lt;div class=\&quot;tombstone-main\
&quot;&gt;\n &lt;a title=\&quot;AI Crash Course\&quot;\n
href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/data\/ai-crash-course\&quot;&gt;\n
&lt;p class=\&quot;tombstone-name\&quot;&gt;\n
AI Crash Course &lt;\/p&gt;\n
&lt;\/a&gt;\n\n
\n
\n &lt;div class=\
&quot;price\&quot;&gt;\n
$ 5.00
&lt;\/div&gt;\n &lt;div&gt;\
n &lt;div
class=\&quot;tombstone-product-type\&quot;&gt;\n
&lt;span class=\&quot;tombstone-product-type-name\&quot;&gt;eBook&lt;\/span&gt;\n
&lt;i class=\&quot;fas fa-book-open\&quot;&gt;&lt;\/i&gt;\n
&lt;\/div&gt;\n \n
&lt;button class=\&quot;action tocart btn btn-primary\&quot;\n
data-product-sku=\&quot;9781838645557\&quot;\n
data-currency-code=\&quot;USD\&quot;\n
data-product-name=\&quot;AI Crash Course\&quot;\n
data-product-variant=\&quot;EBOOK\&quot;\n
data-price=\&quot;5\&quot;\n
data-original-price=\&quot;20.99\&quot;\n\n\n
\n \n
data-price-after-promo=\&quot;5\&quot;\n
data-product-category=\
&quot;data\&quot;\n data-
product-qty=\&quot;1\&quot;\n
data-action-field=\&quot;Top Sellers\&quot;\n
data-post=&#039;{\&quot;action\&quot;:\&quot;https:\\\/\\\/www.packtpub.com\\\/
checkout\\\/cart\\\/add\\\/uenc\\\/
aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw%2C%2C\\\/product\\\/75912\\\/\
&quot;,\&quot;data\&quot;:{\&quot;product\&quot;:\&quot;75912\&quot;,\&quot;uenc\
&quot;:\&quot;aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw,,\&quot;}}&#039;\n
type=\&quot;button\&quot;\n
title=\&quot;Add to Cart\&quot;&gt;\n
&lt;span&gt;\n Add to Cart
&lt;\/span&gt;\n &lt;\/button&gt;\n
&lt;\/div&gt;\n\n &lt;a
class=\&quot;btn btn-secondary\&quot;\n href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/data\/ai-crash-course\&quot;&gt;\n
View Details &lt;\/a&gt;\n
&lt;\/div&gt;\n &lt;\/div&gt;\n
&lt;div class=\&quot;tombstone\&quot;&gt;\n &lt;!--
new_products_content_widget_grid--&gt; &lt;a href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/application-development\/hands-design-patterns-
julia-10\&quot;&gt;\n \n&lt;span class=\&quot;product-
image-container\&quot;\n style=\&quot;width:240px;\&quot;&gt;\n &lt;span
class=\&quot;product-image-wrapper\&quot;\n style=\&quot;padding-bottom:
125%;\&quot;&gt;\n &lt;img class=\&quot;product-image-photo\&quot;\n
src=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/media\/catalog\/product\/cache\/
abd628df6af33f734d56624223a191f5\/9\/7\/9781838648817-original.jpeg\&quot;\n
max-width=\&quot;240\&quot;\n max-height=\&quot;300\&quot;\n
alt=\&quot;Hands-On Design Patterns and Best Practices with
Julia\&quot;\/&gt;&lt;\/span&gt;\n&lt;\/span&gt;\n
&lt;\/a&gt;\n\n &lt;div class=\&quot;tombstone-main\
&quot;&gt;\n &lt;a title=\&quot;Hands-On Design Patterns
and Best Practices with Julia\&quot;\n href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/application-development\/hands-design-patterns-
julia-10\&quot;&gt;\n &lt;p class=\&quot;tombstone-
name\&quot;&gt;\n Hands-On Design Patterns and
Best Practices... &lt;\/p&gt;\n
&lt;\/a&gt;\n\n
\n
\n &lt;div class=\
&quot;price\&quot;&gt;\n
$ 5.00
&lt;\/div&gt;\n &lt;div&gt;\
n &lt;div
class=\&quot;tombstone-product-type\&quot;&gt;\n
&lt;span class=\&quot;tombstone-product-type-name\&quot;&gt;eBook&lt;\/span&gt;\n
&lt;i class=\&quot;fas fa-book-open\&quot;&gt;&lt;\/i&gt;\n
&lt;\/div&gt;\n \n
&lt;button class=\&quot;action tocart btn btn-primary\&quot;\n
data-product-sku=\&quot;9781838646615\&quot;\n
data-currency-code=\&quot;USD\&quot;\n
data-product-name=\&quot;Hands-On Design Patterns and Best Practices with Julia\
&quot;\n data-product-variant=\
&quot;EBOOK\&quot;\n data-
price=\&quot;5\&quot;\n data-
original-price=\&quot;27.99\&quot;\n\n\n
\n \n
data-price-after-promo=\&quot;5\&quot;\n
data-product-category=\&quot;application-development\&quot;\n
data-product-qty=\&quot;1\&quot;\n
data-action-field=\&quot;Top Sellers\&quot;\n
data-post=&#039;{\&quot;action\&quot;:\&quot;https:\\\/\\\/www.packtpub.com\\\/
checkout\\\/cart\\\/add\\\/uenc\\\/
aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw%2C%2C\\\/product\\\/73722\\\/\
&quot;,\&quot;data\&quot;:{\&quot;product\&quot;:\&quot;73722\&quot;,\&quot;uenc\
&quot;:\&quot;aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw,,\&quot;}}&#039;\n
type=\&quot;button\&quot;\n
title=\&quot;Add to Cart\&quot;&gt;\n
&lt;span&gt;\n Add to Cart
&lt;\/span&gt;\n &lt;\/button&gt;\n
&lt;\/div&gt;\n\n &lt;a
class=\&quot;btn btn-secondary\&quot;\n href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/application-development\/hands-design-patterns-
julia-10\&quot;&gt;\n View Details
&lt;\/a&gt;\n &lt;\/div&gt;\n
&lt;\/div&gt;\n &lt;div class=\&quot;tombstone\
&quot;&gt;\n &lt;!-- new_products_content_widget_grid--&gt;
&lt;a href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/networking-and-servers\/comptia-
security-certification-guide\&quot;&gt;\n \n&lt;span
class=\&quot;product-image-container\&quot;\n style=\&quot;width:240px;\
&quot;&gt;\n &lt;span class=\&quot;product-image-wrapper\&quot;\n
style=\&quot;padding-bottom: 125%;\&quot;&gt;\n &lt;img class=\
&quot;product-image-photo\&quot;\n
src=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/media\/catalog\/product\/cache\/
abd628df6af33f734d56624223a191f5\/b\/1\/b11168_0.png\&quot;\n max-
width=\&quot;240\&quot;\n max-height=\&quot;300\&quot;\n
alt=\&quot;CompTIA Security+ Certification Guide\&quot;\/&gt;&lt;\/span&gt;\
n&lt;\/span&gt;\n &lt;\/a&gt;\n\n
&lt;div class=\&quot;tombstone-main\&quot;&gt;\n &lt;a
title=\&quot;CompTIA Security+ Certification Guide\&quot;\n
href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/networking-and-servers\/comptia-security-
certification-guide\&quot;&gt;\n &lt;p class=\
&quot;tombstone-name\&quot;&gt;\n CompTIA
Security+ Certification Guide &lt;\/p&gt;\n
&lt;\/a&gt;\n\n
\n
\n &lt;div class=\
&quot;price\&quot;&gt;\n
$ 5.00
&lt;\/div&gt;\n &lt;div&gt;\
n &lt;div
class=\&quot;tombstone-product-type\&quot;&gt;\n
&lt;span class=\&quot;tombstone-product-type-name\&quot;&gt;Book&lt;\/span&gt;\n
&lt;i class=\&quot;fas fa-book-open\&quot;&gt;&lt;\/i&gt;\n
&lt;\/div&gt;\n \n
&lt;button class=\&quot;action tocart btn
btn-primary\&quot;\n
data-product-sku=\&quot;9781789346688\&quot;\n
data-currency-code=\&quot;USD\&quot;\n
data-product-name=\&quot;CompTIA Security+ Certification Guide\&quot;\n
data-product-variant=\&quot;EBOOK\&quot;\n
data-price=\&quot;5\&quot;\n
data-original-price=\&quot;31.99\&quot;\n\n
\n \n
data-price-after-promo=\&quot;5\&quot;\n
data-product-category=\&quot;networking-and-servers\&quot;\n
data-product-qty=\&quot;1\&quot;\n
data-action-field=\&quot;Top Sellers\&quot;\n
data-image-init=&#039;{\&quot;redirectUrl\&quot;: {\&quot;url\&quot;: \&quot;\n
https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/checkout\/cart\/add\/uenc\/aHR0cHM6Ly93d3cucGFja3RwdWIu
Y29tLz9fX19zdG9yZT11cw%2C%2C\/product\/57771\/\&quot;}}&#039;\n
type=\&quot;button\&quot;\n
title=\&quot;Add to Cart\&quot;&gt;\n
&lt;span&gt;\n Add
to Cart &lt;\/span&gt;\n
&lt;\/button&gt;\n
&lt;\/div&gt;\n\n &lt;a
class=\&quot;btn btn-secondary\&quot;\n href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/networking-and-servers\/comptia-security-
certification-guide\&quot;&gt;\n View Details
&lt;\/a&gt;\n &lt;\/div&gt;\n
&lt;\/div&gt;\n &lt;div class=\&quot;tombstone\
&quot;&gt;\n &lt;!-- new_products_content_widget_grid--&gt;
&lt;a href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/web-development\/asp-net-core-3-and-
react\&quot;&gt;\n \n&lt;span class=\&quot;product-
image-container\&quot;\n style=\&quot;width:240px;\&quot;&gt;\n &lt;span
class=\&quot;product-image-wrapper\&quot;\n style=\&quot;padding-bottom:
125%;\&quot;&gt;\n &lt;img class=\&quot;product-image-photo\&quot;\n
src=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/media\/catalog\/product\/cache\/
abd628df6af33f734d56624223a191f5\/9\/7\/9781789950229-original.jpeg\&quot;\n
max-width=\&quot;240\&quot;\n max-height=\&quot;300\&quot;\n
alt=\&quot;ASP.NET Core 3 and React\&quot;\/&gt;&lt;\/span&gt;\n&lt;\/span&gt;\n
&lt;\/a&gt;\n\n &lt;div class=\&quot;tombstone-main\
&quot;&gt;\n &lt;a title=\&quot;ASP.NET Core 3 and
React\&quot;\n
href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/web-development\/asp-net-core-3-and-react\
&quot;&gt;\n &lt;p class=\&quot;tombstone-name\
&quot;&gt;\n ASP.NET Core 3 and React
&lt;\/p&gt;\n &lt;\/a&gt;\n\n
\n
\n &lt;div class=\
&quot;price\&quot;&gt;\n
$ 5.00
&lt;\/div&gt;\n &lt;div&gt;\
n &lt;div
class=\&quot;tombstone-product-type\&quot;&gt;\n
&lt;span class=\&quot;tombstone-product-type-name\&quot;&gt;eBook&lt;\/span&gt;\n
&lt;i class=\&quot;fas fa-book-open\&quot;&gt;&lt;\/i&gt;\n
&lt;\/div&gt;\n \n
&lt;button class=\&quot;action tocart btn btn-primary\&quot;\n
data-product-sku=\&quot;9781789959246\&quot;\n
data-currency-code=\&quot;USD\&quot;\n
data-product-name=\&quot;ASP.NET Core 3 and React\&quot;\n
data-product-variant=\&quot;EBOOK\&quot;\n
data-price=\&quot;5\&quot;\n
data-original-price=\&quot;27.99\&quot;\n\n\n
\n \n
data-price-after-promo=\&quot;5\&quot;\n
data-product-category=\&quot;web-development\&quot;\n
data-product-qty=\&quot;1\&quot;\n
data-action-field=\&quot;Top Sellers\&quot;\n
data-post=&#039;{\&quot;action\&quot;:\&quot;https:\\\/\\\/www.packtpub.com\\\/
checkout\\\/cart\\\/add\\\/uenc\\\/
aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw%2C%2C\\\/product\\\/76849\\\/\
&quot;,\&quot;data\&quot;:{\&quot;product\&quot;:\&quot;76849\&quot;,\&quot;uenc\
&quot;:\&quot;aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw,,\&quot;}}&#039;\n
type=\&quot;button\&quot;\n
title=\&quot;Add to Cart\&quot;&gt;\n
&lt;span&gt;\n Add to Cart
&lt;\/span&gt;\n &lt;\/button&gt;\n
&lt;\/div&gt;\n\n &lt;a
class=\&quot;btn btn-secondary\&quot;\n href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/web-development\/asp-net-core-3-and-react\
&quot;&gt;\n View Details
&lt;\/a&gt;\n &lt;\/div&gt;\n
&lt;\/div&gt;\n &lt;div class=\&quot;tombstone\
&quot;&gt;\n &lt;!-- new_products_content_widget_grid--&gt;
&lt;a href=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/application-development\/hands-
design-patterns-c-and-net-core\&quot;&gt;\n \n&lt;span
class=\&quot;product-image-container\&quot;\n style=\&quot;width:240px;\
&quot;&gt;\n &lt;span class=\&quot;product-image-wrapper\&quot;\n
style=\&quot;padding-bottom: 125%;\&quot;&gt;\n &lt;img class=\
&quot;product-image-photo\&quot;\n
src=\&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/media\/catalog\/product\/cache\/
abd628df6af33f734d56624223a191f5\/9\/7\/9781789133646-original.jpeg\&quot;\n
max-width=\&quot;240\&quot;\n max-height=\&quot;300\&quot;\n
alt=\&quot;Hands-On Design Patterns with C# and .NET
Core\&quot;\/&gt;&lt;\/span&gt;\n&lt;\/span&gt;\n
&lt;\/a&gt;\n\n &lt;div class=\&quot;tombstone-main\
&quot;&gt;\n &lt;a title=\&quot;Hands-On Design Patterns
with C# and .NET Core\&quot;\n href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/application-development\/hands-design-patterns-c-
and-net-core\&quot;&gt;\n &lt;p class=\
&quot;tombstone-name\&quot;&gt;\n Hands-On
Design Patterns with C# and .NET Core &lt;\/p&gt;\n
&lt;\/a&gt;\n\n
\n
\n
&lt;div class=\&quot;price\
&quot;&gt;\n
$ 5.00
&lt;\/div&gt;\n &lt;div&gt;\
n &lt;div
class=\&quot;tombstone-product-type\&quot;&gt;\n
&lt;span class=\&quot;tombstone-product-type-name\&quot;&gt;eBook&lt;\/span&gt;\n
&lt;i class=\&quot;fas fa-book-open\&quot;&gt;&lt;\/i&gt;\n
&lt;\/div&gt;\n \n
&lt;button class=\&quot;action tocart btn btn-primary\&quot;\n
data-product-sku=\&quot;9781789138436\&quot;\n
data-currency-code=\&quot;USD\&quot;\n
data-product-name=\&quot;Hands-On Design Patterns with C# and .NET Core\&quot;\n
data-product-variant=\&quot;EBOOK\&quot;\n
data-price=\&quot;5\&quot;\n
data-original-price=\&quot;27.99\&quot;\n\n\n
\n \n
data-price-after-promo=\&quot;5\&quot;\n
data-product-category=\&quot;application-development\&quot;\n
data-product-qty=\&quot;1\&quot;\n
data-action-field=\&quot;Top Sellers\&quot;\n
data-post=&#039;{\&quot;action\&quot;:\&quot;https:\\\/\\\/www.packtpub.com\\\/
checkout\\\/cart\\\/add\\\/uenc\\\/
aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw%2C%2C\\\/product\\\/69324\\\/\
&quot;,\&quot;data\&quot;:{\&quot;product\&quot;:\&quot;69324\&quot;,\&quot;uenc\
&quot;:\&quot;aHR0cHM6Ly93d3cucGFja3RwdWIuY29tLz9fX19zdG9yZT11cw,,\&quot;}}&#039;\n
type=\&quot;button\&quot;\n
title=\&quot;Add to Cart\&quot;&gt;\n
&lt;span&gt;\n Add to Cart
&lt;\/span&gt;\n &lt;\/button&gt;\n
&lt;\/div&gt;\n\n &lt;a
class=\&quot;btn btn-secondary\&quot;\n href=\
&quot;https:\/\/fanyv88.com:443\/https\/www.packtpub.com\/application-development\/hands-design-patterns-c-
and-net-core\&quot;&gt;\n View Details
&lt;\/a&gt;\n &lt;\/div&gt;\n
&lt;\/div&gt;\n &lt;\/div&gt;\n &lt;\/div&gt;\n
&lt;script type=\&quot;text\/x-magento-init\&quot;&gt;\n {\n \
&quot;[data-role=tocart-form], .form.map.checkout\&quot;: {\n \
&quot;catalogAddToCart\&quot;: {\n \&quot;bindSubmit\&quot;:
true\n }\n }\n }\n &lt;\/script&gt;\n\n
&lt;\/div&gt;\n&lt;\/div&gt;\r\n&lt;div class=\&quot;col\&quot;&gt;&lt;\/div&gt;\r\
n&lt;\/div&gt;&quot;';
window.BlockContentDetail=static_content.slice(6,-6);
//]]>
</script>

<script type="text/template" id="instant_wrapper_template">


{{#findAutocomplete}}
<div id="algolia-autocomplete-container"></div>
{{/findAutocomplete}}
<div class="row">
<div class="col-sm-12">
<div class="hits">
<div class="infos">
<div id="algolia-stats"></div>
<div id="instant-search-pagination-container-top"></div>
<div id="hits-per-page-container"></div>
<div id="hits-sort-by">
<div class="sort-by-label pull-left">
SORT BY:
</div>
<div class="pull-left" id="algolia-sorts"></div>
</div>
</div>
</div>
</div>
</div>

<div id="algolia_instant_selector"
class=" with-facets">
<div class="row">
<div class="col-sm-4 col-lg-3" id="algolia-left-container">
<div id="mobile-filters-header"
class="d-flex justify-content-between d-sm-none border-bottom
pb-2">
<div>
<h4>
Filters
<span class="btn btn-primary ml-1"
id="facet-control"
onclick="document.getElementById('instant-search-
facets-container').classList.toggle('d-none');
document.getElementById('filters-
icon').classList.toggle('fa-filter');
document.getElementById('filters-
icon').classList.toggle('fa-close');">
<i id="filters-icon" class="fas fa-filter"></i>
</span>
</h4>
</div>
</div>
<div class="d-sm-block d-none" id="instant-search-facets-
container"></div>
</div>

<div class="col-sm-8 col-lg-9" id="algolia-right-container">


<div class="row hidden">
<div class="col-md-12">
{{#second_bar}}
<div id="instant-search-bar-container">
<div id="instant-search-box">
<div class="instant-search-bar-label">
<span>Current search</span>
</div>
<div class="instant-search-bar-wrapper">
<label for="instant-search-bar">
Search :
</label>

<input placeholder="Search for products"


id="instant-search-bar"
type="text"
autocomplete="off"
spellcheck="false"
autocorrect="off"
autocapitalize="off">
</div>
</div>
</div>
{{/second_bar}}
</div>
</div>

<div class="row">
<div class="col-md-12">
<div id="instant-search-results-container" itemscope
itemtype="http://schema.org/ItemList"></div>
</div>
</div>

<div class="text-center">
<div id="instant-search-pagination-container"></div>
</div>

<div class="seo-box-category container">


</div>
</div>
<div class="row">
<div class="col-md-12">
<div id="instant-search-no-results-container" itemscope
itemtype="http://schema.org/ItemList"></div>
</div>
</div>
</div>
</div>
</script>
<script type="text/template" id="instant-hit-template">
<div class="card h-100"
itemprop="itemListElement"
itemscope
itemtype="http://schema.org/Product">
<a itemprop="url"
href="{{url}}"
class="card-body"
data-objectid="{{ objectID }}"
data-position="{{ __position }}"
/>
{{#newReleaseStatus}}
<span class="product-new-label">NEW</span>
{{/newReleaseStatus}}
{{#image_url}}
<img class="card-img"
itemprop="image"
src="{{{ image_url }}}"
alt="{{{ _highlightResult.name.value }}}">
{{/image_url}}
{{^image_url}}
<span class="no-image card-img"></span>
{{/image_url}}
<h5 class="card-title mt-0">
<b>{{{ name }}}</b></br>
{{#product_type_filter}}
<span class="badge badge-pill badge-primary ml-1">
{{{ product_type_filter }}}
</span>
{{/product_type_filter}}
</h5>
<div class="author-names">
{{#authors}}
<p>By {{{ authors }}}</p>
{{/authors}}
</div>

<div class="product-meta">
{{#productTypeBook}}
{{#page_count}}
<p class="page_count">{{ page_count }} pages</p>
{{/page_count}}
{{/productTypeBook}}
{{#productTypeVideo}}
{{#course_length}}
<p class="course_length">{{ course_length }}</p>
{{/course_length}}
{{/productTypeVideo}}
{{#date_of_publication}}
<p>{{ date_of_publication }}</p>
{{/date_of_publication}}
{{#short_description}}
<p class="short_description">{{ short_description }}</p>
{{/short_description}}
</div>
<img src="https://api.feefo.com/api/logo?
merchantidentifier=packt-
publishing&since=all&template=jtstars.png&parentvendorref={{objectID}}"/>
<div itemprop="offers"
itemscope
itemtype="http://schema.org/AggregateOffer"
class="price">

<div class="price-wrapper">
<span itemprop="lowPrice" class="price-inline after_special h2
font-weight-bold price
{{#price.USD.default_original_formated}}
promotion
{{/price.USD.default_original_formated}}" style="font-
size: 18px; color: #5594db;">
{{algoliaConfig.currencySymbol}}{{price.USD.default}}
</span>
{{#price.USD.default_original_formated}}
<span itemprop="highPrice" class="price-inline before_special"
style="font-size: 12px; color: #aaaaaa;">
{{price.USD.default_original_formated}}
</span>
{{/price.USD.default_original_formated}}
{{#price.USD.default_discount_percent}}
<span class="saving-amount price-inline" style="font-size: 12px;
color: #ff0000;">
({{price.USD.default_discount_percent}}% OFF)
</span>
{{/price.USD.default_discount_percent}}
{{#}}
<span class="saving-amount price-inline" style="font-size: 12px;
color: #ff0000;">
({{algoliaConfig.currencySymbol}}
{{price.USD.default_discount_amount}} OFF)
</span>
{{/}}
{{#price.USD.default_tier_formated}}
<span class="tier_price price-inline">
As low as <span
class="tier_value price-
inline">{{price.USD.default_tier_formated}}</span>
</span>
{{/price.USD.default_tier_formated}}
</div>
</div>
</a>

<div class="card-footer bg-transparent">


<div class="row">
<div class="col-6">
<a class="btn btn-primary product-button view-details"
href="{{url}}"
role="button">View details</a>
</div>
<div class="col-6">
{{#isAddToCartEnabled}}
<form id="{{ objectID }}" data-role="tocart-form"
action="{{ addToCart.action }}" method="post">
<input type="hidden" name="product" value="{{objectID}}">
<input type="hidden" name="uenc"
value="{{ addToCart.uenc }}">
<input type="hidden"
name="super_attribute[189]"
data-selector="super_attribute[189]"
value="14">
<input name="form_key" type="hidden"
value="{{ addToCart.formKey }}">
<button id="{{ objectID }}" class="btn btn-secondary
product-button add-to-cart"
type="button"
title="Add to Cart"
onclick="minicart_popup(this)"
data-objectid="{{ objectID }}"
data-position="{{ __position }}">
<span>Add to Cart</span>
</button>
</form>
{{/isAddToCartEnabled}}
</div>
</div>
</div>
</div>
</script>
<script>
window.MaxMiniCartItemsDisplay = '10'
</script>
<script type="text/template" id="instant-stats-template">
{{#hasOneResult}}1 result found{{/hasOneResult}}

{{#hasManyResults}}
Showing {{^hasNoResults}}{{first}}-{{last}} of{{/hasNoResults}}
<span
itemprop="numberOfItems">{{#helpers.formatNumber}}{{nbHits}}{{/helpers.formatNumber
}}</span>
results {{/hasManyResults}}
</script>
<script type="text/template" id="refinements-lists-item-template">
<div class="custom-control custom-checkbox">
<input class="custom-control-input"
{{#isRefined}}checked{{/isRefined}}
type="checkbox">
<label class="custom-control-label">
{{value}}
<span>({{count}})</span>
</label>
</div>
</script>
<script type="text/template" id="current-refinements-template">
<div class="cross-wrapper">
<span class="clear-cross clear-refinement"></span>
</div>
<div class="current-refinement-wrapper">
{{#label}}
<span
class="current-refinement-label">{{label}}{{^operator}}:{{/operator}}</span>
{{/label}}
{{#operator}}
{{{displayOperator}}}
{{/operator}}
{{#exclude}}-{{/exclude}}
<span class="current-refinement-name">{{name}}</span>
</div>
</script></div> <script type="text/javascript">window.NREUM||
(NREUM={});NREUM.info={"beacon":"bam-cell.nr-data.net","licenseKey":"NRJS-
0f4d86b78cc0c8047b9","applicationID":"475968873","transactionName":"NlJRYxRWDBFSAEB
aCg8YclQSXg0MHABZQEoIWVdSHhgLDFcGTA==","queueTime":0,"applicationTime":2746,"atts":
"GhVGFVxMH04RAhYJHhxK","errorBeacon":"bam-cell.nr-data.net","agent":""}</script></
body>
</html>

You might also like