a()})},b)},log:h,off:c}}())})(ue_csm,window);
(function(a,g,h){a.ue_pdm||!a.ue_cel||ue.isBF||(a.ue_pdm=function(){function m(){try{var b=window.screen;if(b){var c={w:b.width,aw:b.availWidth,h:b.height,ah:b.availHeight,cd:b.colorDepth,pd:b.pixelDepth};e&&e.w===c.w&&e.h===c.h&&e.aw===c.aw&&e.ah===c.ah&&e.pd===c.pd&&e.cd===c.cd||(e=c,e.t=k(),e.k="sci",r(e))}var g=h.body||{},f=h.documentElement||{},d={w:Math.max(g.scrollWidth||0,g.offsetWidth||0,f.clientWidth||0,f.scrollWidth||0,f.offsetWidth||0),h:Math.max(g.scrollHeight||0,g.offsetHeight||0,f.clientHeight||
0,f.scrollHeight||0,f.offsetHeight||0)};t&&t.w===d.w&&t.h===d.h||(t=d,t.t=k(),t.k="doi",r(t));l=a.ue_cel.timeout(m,v);z+=1}catch(p){window.ueLogError&&ueLogError(p,{attribution:"csm-cel-page-module",logLevel:"WARN"})}function c(){p("ebl","default",!1)}function n(){p("efo","default",!0)}function x(){p("ebl","app",!1)}function s(){p("efo","app",!0)}function u(){g.setTimeout(function(){h[D]?p("ebl","pageviz",!1):p("efo","pageviz",!0)},0)}function p(a,b,c){y!==c&&r({k:a,t:k(),s:b},{ff:!0===c?0:1});y=
c}function b(){f.attach&&(w&&f.attach(q,u,h),A&&P.when("mash").execute(function(a){a&&a.addEventListener&&(a.addEventListener("appPause",x),a.addEventListener("appResume",s))}),f.attach("blur",c,g),f.attach("focus",n,g))}function d(){f.detach&&(w&&f.detach(q,u,h),A&&P.when("mash").execute(function(a){a&&a.removeEventListener&&(a.removeEventListener("appPause",x),a.removeEventListener("appResume",s))}),f.detach("blur",c,g),f.detach("focus",n,g))}var l,k,v,e,t,y=null,z=0,f=a.ue,r=a.ue_cel.log,B=a.uet,
E=a.uex,w=!!f.pageViz,q=w&&f.pageViz.event,D=w&&f.pageViz.propHid,A=g.P&&g.P.when;"function"==typeof B&&B("bb","csmCELLSpdm",{wb:1});return{on:function(a){v=a.timespan||500;k=a.ts;b();a=g.location;r({k:"pmd",o:a.origin,p:a.pathname,t:k()});m();"function"==typeof E&&E("ld","csmCELLSpdm",{wb:1})},off:function(a){clearTimeout(l);d();f.count&&f.count("cel.PDM.TotalExecutions",z)},ready:function(){return h.body&&a.ue_cel&&a.ue_cel.log},reset:function(){e=t=null}}(),a.ue_cel&&a.ue_cel.registerModule("page module",
a.ue_pdm))})(ue_csm,window,document);
(function(a,g){a.ue_vpm||!a.ue_cel||ue.isBF||(a.ue_vpm=function(){function h(){var a=s(),b={w:g.innerWidth,h:g.innerHeight,x:g.pageXOffset,y:g.pageYOffset};c&&c.w==b.w&&c.h==b.h&&c.x==b.x&&c.y==b.y||(b.t=a,b.k="vpi",c=b,d(c,{clog:1}));n=0;u=s()-a;p+=1}function m(){n||(n=a.ue_cel.timeout(h,x))}var c,n,x,s,u=0,p=0,b=a.ue,d=a.ue_cel.log,l=a.uet,k=a.uex,v=b.attach,e=b.detach;"function"==typeof l&&l("bb","csmCELLSvpm",{wb:1});return{on:function(a){s=a.ts;x=a.timespan||100;h();v&&(v("scroll",m),v("resize",
m));"function"==typeof k&&k("ld","csmCELLSvpm",{wb:1})},off:function(a){clearTimeout(n);e&&(e("scroll",m),e("resize",m));b.count&&(b.count("cel.VPI.TotalExecutions",p),b.count("cel.VPI.TotalExecutionTime",u),b.count("cel.VPI.AverageExecutionTime",u/p))},ready:function(){return a.ue_cel&&a.ue_cel.log},reset:function(){c=void 0},getVpi:function(){return c}}(),a.ue_cel&&a.ue_cel.registerModule("viewport module",a.ue_vpm))})(ue_csm,window);
(function(a,g,h){if(!a.ue_fem&&a.ue_cel&&a.ue_utils){var m=a.ue||{};!m.isBF&&!a.ue_fem&&h.querySelector&&g.getComputedStyle&&[].forEach&&(a.ue_fem=function(){function c(a,b){return a>b?3>a-b:3>b-a}function n(a,b){var f=g.pageXOffset,e=g.pageYOffset,d;a:{try{if(a){var h=a.getBoundingClientRect(),l,m=0===a.offsetWidth&&0===a.offsetHeight;c:{for(var k=a.parentNode,p=h.left||0,q=h.top||0,r=h.width||0,t=h.height||0;k&&k!==document.body;){var n;d:{try{if(k){var C=k.getBoundingClientRect();n={x:C.left||
0,y:C.top||0,w:C.width||0,h:C.height||0}else n=void 0;break d}catch(v){}n=void 0}var s=window.getComputedStyle(k),u="hidden"===s.overflow,x=u||"hidden"===s.overflowX,y=u||"hidden"===s.overflowY,M=q+t-1n.y+n.h-1;if((p+r-1n.x+n.w-1)&&x||M&&y){l=!0;break c}k=k.parentNode}l=!1}d={x:h.left+f||0,y:h.top+e||0,w:h.width||0,h:h.height||0,d:(m||l)|0}else d=void 0;break a}catch(N){}d=void 0}if(d&&!a.cel_b)a.cel_b=d,w({n:a.getAttribute(z),w:a.cel_b.w,h:a.cel_b.h,d:a.cel_b.d,x:a.cel_b.x,
y:a.cel_b.y,t:b,k:"ewi",cl:a.className},{clog:1});else{if(f=d)f=a.cel_b,e=d,f=e.d===f.d&&1===e.d?!1:!(c(f.x,e.x)&&c(f.y,e.y)&&c(f.w,e.w)&&c(f.h,e.h)&&f.d===e.d);f&&(a.cel_b=d,w({n:a.getAttribute(z),w:a.cel_b.w,h:a.cel_b.h,d:a.cel_b.d,x:a.cel_b.x,y:a.cel_b.y,t:b,k:"ewi"},{clog:1}))}function x(b,e){var c;c=b.c?h.getElementsByClassName(b.c):b.id?[h.getElementById(b.id)]:h.querySelectorAll(b.s);b.w=[];for(var g=0;g(b.id_gen||E)(d,g)||d.id;d.setAttribute(z,k)}b.w.push(d);p(Q,d,e)}!1===B&&(r++,r===f.length&&(B=!0,a.ue_utils.notifyWidgetsLabeled()))}function s(a,b){q.contains(a)||w({n:a.getAttribute(z),t:b,k:"ewd"},{clog:1})}function u(a){I.length&&ue_cel.timeout(function(){if(t){for(var b=R(),c=!1;R()-bf[c].w||[],d=0;dg.MozMutationObserver,M=!!G,H,C,N="DOMAttrModified",K="DOMNodeInserted",L="DOMNodeRemoved",O,J,I=[],U=0,S=null,W="removedWidget",X="updateWidgets",Q="processWidget",T,V=g.performance||{},R=V.now&&function(){return V.now()}||function(){return Date.now()};"function"==typeof uet&&uet("bb","csmCELLSfem",{wb:1});return{on:function(b){function c(){if(k()){T={removedWidget:s,updateWidgets:x,processWidget:n};if(M){var a={attributes:!0,subtree:!0};H=new G(l);C=new G(d);H.observe(q,a);C.observe(q,{childList:!0,
subtree:!0});C.observe(D,a)}else A.call(q,N,l),A.call(q,K,d),A.call(q,L,d),A.call(D,K,l),A.call(D,L,l);d()}q=h.body;D=h.head;A=q.addEventListener;F=q.removeEventListener;y=b.ts;f=a.cel_widgets||[];S=b.bs||5;m.deffered?c():m.attach&&m.attach("load",c);"function"==typeof uex&&uex("ld","csmCELLSfem",{wb:1});t=!0},off:function(){k()&&(C&&(C.disconnect(),C=null),H&&(H.disconnect(),H=null),F.call(q,N,l),F.call(q,K,d),F.call(q,L,d),F.call(D,K,l),F.call(D,L,l));m.count&&m.count("cel.widgets.batchesProcessed",
U);t=!1},ready:function(){return a.ue_cel&&a.ue_cel.log},reset:function(){f=a.cel_widgets||[]}}(),a.ue_cel&&a.ue_fem&&a.ue_cel.registerModule("features module",a.ue_fem))})(ue_csm,window,document);
(function(a,g,h){!a.ue_mcm&&a.ue_cel&&a.ue_utils&&!a.ue.isBF&&(a.ue_mcm=function(){function m(a,c){var l=a.srcElement||a.target||{},k={k:n,w:(c||{}).ow||(g.body||{}).scrollWidth,h:(c||{}).oh||(g.body||{}).scrollHeight,t:(c||{}).ots||x(),x:a.pageX,y:a.pageY,p:p.getXPath(l),n:l.nodeName};h&&"function"===typeof h.now&&a.timeStamp&&(k.dt=(c||{}).odt||h.now()-a.timeStamp,k.dt=parseFloat(k.dt.toFixed(2)));a.button&&(k.b=a.button);l.href&&(k.r=p.extractStringValue(l.href));l.id&&(k.i=l.id);l.className&&
l.className.split&&(k.c=l.className.split(/\s+/));u(k,{c:1})}function c(){switch(a.ue_mcimp){case 1:return"click";case 3:return"mousedown"}var n="mcm",x,s=a.ue,u=a.ue_cel.log,p=a.ue_utils;return{on:function(b){x=b.ts;a.ue_cel_stub&&a.ue_cel_stub.replayModule(n,m);(event=c())?window.addEventListener&&window.addEventListener(event,m,!0):s.attach&&s.attach("click",m,g)},off:function(a){(event=c())?window.removeEventListener&&window.removeEventListener(event,m,!0):s.detach&&s.detach("click",m,g)},ready:function(){return a.ue_cel&&
a.ue_cel.log},reset:function(){}}(),a.ue_cel&&a.ue_cel.registerModule("mouse click module",a.ue_mcm))})(ue_csm,document,window.performance);
(function(a,g){a.ue_mmm||!a.ue_cel||a.ue.isBF||(a.ue_mmm=function(h){function m(a,b){var c={x:a.pageX||a.x||0,y:a.pageY||a.y||0,t:p()};!b&&w&&(c.t-w.tc)){d=void 0;a:if(r[c].t-r[c-1].t>n)d=0;else{for(d=E+1;ds){d=0;break a}d=1}d=!d}(F=
d)?E=c-1:B.pop();B.push(b)}f=G.now()-z;v=Math.min(v,f);e=Math.max(e,f);t=(t*y+f)/(y+1);y+=1;l({k:u,e:B,min:Math.floor(1E3*v),max:Math.floor(1E3*e),avg:Math.floor(1E3*t)},{c:1});r=[];B=[];E=0}var n=100,x=20,s=25,u="mmm1",p,b,d=a.ue,l=a.ue_cel.log,k,v=1E3,e=0,t=0,y=0,z,f,r=[],B=[],E=0,w,q,D,A,F,G=h&&h.now&&h||Date.now&&Date||{now:function(){return(new Date).getTime()};return{on:function(a){p=a.ts;b=a.ns;d.attach&&d.attach("mousemove",m,g);k=setInterval(c,3E3)},off:function(a){b&&(w&&m(w,!0),c());
clearInterval(k);d.detach&&d.detach("mousemove",m,g)},ready:function(){return a.ue_cel&&a.ue_cel.log},reset:function(){r=[];B=[];E=0;w=null}}(window.performance),a.ue_cel&&a.ue_cel.registerModule("mouse move module",a.ue_mmm))})(ue_csm,document);
}
(function(a){var b=document.ue_backdetect;b&&b.ue_back&&a.ue&&(a.ue.bfini=b.ue_back.value);a.uet&&a.uet("be");a.onLdEnd&&(window.addEventListener?window.addEventListener("load",a.onLdEnd,!1):window.attachEvent&&window.attachEvent("onload",a.onLdEnd));a.ueh&&a.ueh(0,window,"load",a.onLd,1);a.ue&&a.ue.tag&&(a.ue_furl&&a.ue_furl.split?(b=a.ue_furl.split("."))&&b[0]&&a.ue.tag(b[0]):a.ue.tag("nofls"))})(ue_csm);
var ue_pty='Detail', ue_spty='Glance', ue_pti='0814474578';
v
(function(b,c){var a=c.images;a&&a.length&&b.ue.count("totalImages",a.length)})(ue_csm,document);
(function(k,l){function K(a){if(a)return a.replace(/^\s+|\s+$/g,"")}function A(a,d){if(!a)return{};var c="INFO"===d.logLevel;a.m&&a.m[n]&&(a=a.m);var b=d.m||d[n]||"",b=a.m&&a.m[n]?b+a.m[n]:a.m&&a.m.target&&a.m.target.tagName?b+("Error handler invoked by "+a.m.target.tagName+" tag"):a.m?b+a.m:a[n]?b+a[n]:b+"Unknown error",b={m:b,name:a.name,type:a.type,csm:L+" "+(a.fromOnError?"onerror":"ueLogError")},e,g,f=0;e=0;var h;g=l.location;b[p]=d[p]||v;d.adb&&(b.adb=d.adb);(e=d[r])&&(b[r]=""+e);if(!c){b[B]=
d[B]||g&&g.href||"missing";b.f=a.f||a.sourceURL||a.fileName||a.filename||a.m&&a.m.target&&a.m.target.src;b.l=a.l||a.line||a.lineno||a.lineNumber;b.c=a.c?""+a.c:a.c;b.s=[];b.t=k.ue.d();if((c=a.stack||(a.err?a.err.stack:""))&&c.split)for(b.csm+=" stack",e=c.split("\n");ff++;!b.f&&0q.mxe)){q.ter.push(a);d=d||{};var c=a[p]||d[p];d[p]=c;d[r]=a[r]||d[r];c&&c!==v&&c!==O&&c!==P&&c!==Q||k.ue_err.ec++;c&&c!=v||q.ecf++;z(a,d)}function z(a,d){if(a){for(var c=A(a,d),b=d.channel||R,e=(window.ue_err?window.ue_err.errorHandlers:null)||[],g=0;gif(ue.log.isStub&&l[w]&&l[w][x]){e={};e[b]=c;try{var f=l[w][x]({rid:ue.rid,sid:k.ue_sid,mid:k.ue_mid,sn:k.ue_sn,reqs:[e]}),h=l[S],m;if(m=!(h[F]&&h[F](G,f))){var n;if(l[H]){var s=new l[H];s.onerror=u;s.ontimeout=u;s.onprogress=u;s.onload=u;s.timeout=0;n=s}else{var p;if(l[I]){var r=new l[I];p="withCredentials"in r?r:void 0}else p=void 0;n=p}m=n}if(b=m){b.open("POST",G,!0);if(b[J])b[J]("Content-type","text/plain");b.send(f)}catch(t){}else k.ue.log(c,b,{nb:1});"function"===typeof q.elh&&q.elh(a,d);
if(!a.fromOnError){f=l.console||{};b=f.error||f.log||u;h=l[w];m="Error logged with the Track&Report JS errors API(http://tiny/1covqr6l8/wamazindeClieUserJava): ";if(h&&h[x])try{m+=h[x](c)}catch(v){m+="no info provided; converting to string failed"}else m+=c.m;b.apply(f,[m,c])}}if(k.ue_err){var I="XMLHttpRequest",H="XDomainRequest",S="navigator",F="sendBeacon",x="stringify",w="JSON",p="logLevel",r="attribution",B="pageURL",t="skipTrace",J="setRequestHeader",n="message",u=function(){},G="//"+k.ue_furl+
"/1/batch/1/OE/",q=k.ue_err,R=k.ue_err_chan||"jserr",v="FATAL",O="ERROR",P="WARN",Q="DOWNGRADED",L="v6",C=20,y=256,N=RegExp(" (?([^ s]*):( d+): d+ )?".split(" ").join(String.fromCharCode(92))),M=/.*@(.*):(\d*)/;A[t]=1;E[t]=1;z[t]=1;(function(){for(var a,d=0;d<(q.erl||[]).length;d++)a=q.erl[d],z(a.ex,a.info);q.erl=[]})();k.ueLogError=E})(ue_csm,window);
(function(c,d){var b=c.ue,a=d.navigator;b&&b.tag&&a&&(a=a.connection||a.mozConnection||a.webkitConnection)&&a.type&&b.tag("netInfo:"+a.type)})(ue_csm,window);
(function(c,d){function h(a,b){for(var c=[],d=0;da}function q(){g&&g.isStub&&g.replay(function(a,b,c){a=a[0];b=a[k]=a[k]||{};b[f]=b[f]||c;s(a)});l.impression=s;g=null}if(!(1A)}),A=r(",","@","|",function(a){return a.id}),g=l.impression;n?q():(l.attach("load",q),l.attach("beforeunload",q));try{d.P&&d.P.register&&d.P.register("impression-client",function(){})}catch(B){c.ueLogError(B,{logLevel:"WARN"})}})(ue_csm,window);
ue_csm.ue.exec(function(e,d,a){function b(a,b){return{name:a,getFeatureValue:function(){return void 0!==b|0}}function h(a,b,c){return{name:a,getFeatureValue:function(){return b===c|0}}function g(a,b){return{name:a,getFeatureValue:function(){for(var a=0;aa.__phantomas]),b("njs",a.Buffer),b("cjs",a.emit),b("rhn",a.spawn),b("sel",a.webdriver),g("chrm",[a.domAutomation,a.domAutomationController]),{name:"plg",getFeatureValue:function(){return(void 0!==a.navigator.plugins&&0f._bf.modules=c;f._bf.mpm=b},"bf")(ue_csm,document,window);
ue_csm.ue.exec(function(c,a){function g(a){a.run(function(e){d.tag("csm-feature-"+a.name+":"+e);d.isl&&c.uex("at")})}if(a.addEventListener)for(var d=c.ue||{},f=[{name:"touch-enabled",run:function(b){var e=function(){a.removeEventListener("touchstart",c,!0);a.removeEventListener("mousemove",d,!0)},c=function(){b("true");e()},d=function(){b("false");e()};a.addEventListener("touchstart",c,!0);a.addEventListener("mousemove",d,!0)}],b=0;bif (!window.fwcimData) {
window.fwcimData = {
customerId: '0'
};
if (window.P && P.load && P.load.js && P.declare && P.now) {
if (window.ue && window.ue.uels) {
ue.uels("https://images-na.ssl-images-amazon.com/images/G/01/AUIClients/FWCIMAssets.237a987c272bf17fdd8f2bf13f960bb192971e6a._V2_.js");
}
}
}
ue_csm.ue.exec(function(e,f){var a=e.ue||{},b=a._wlo,d;if(a.ssw){d=a.ssw("CSM_previousURL").val;var c=f.location,b=b?b:c&&c.href?c.href.split("#")[0]:void 0;c=(b||"")===a.ssw("CSM_previousURL").val;!c&&b&&a.ssw("CSM_previousURL",b);d=c?"reload":d?"intrapage-transition":"first-view"}else d="unknown";a._nt=d},"NavTypeModule")(ue_csm,window);
var ue_mbl=ue_csm.ue.exec(function(e,a){function l(f){b=f||{};a.AMZNPerformance=b;b.transition=b.transition||{};b.timing=b.timing||{};e.ue.exec(m,"csm-android-check")()&&b.tags instanceof Array&&(f=-1!=b.tags.indexOf("usesAppStartTime")||b.transition.type?!b.transition.type&&-1b.timing.transitionStart=a.performance.timing.navigationStart:delete b.timing.transitionStart:"undefined"===typeof c._nt&&a.performance&&performance.timing&&performance.timing.navigationStart&&a.history&&"function"===typeof a.History&&"object"===typeof a.history&&history.length&&1!=history.length&&(b.timing.transitionStart=a.performance.timing.navigationStart);f=b.transition;var d;d=c._nt?c._nt:void 0;f.subType=d;a.ue&&a.ue.tag&&a.ue.tag("has-AMZNPerformance");c.isl&&a.uex&&uex("at","csm-timing");
n()}function p(b){a.ue&&a.ue.count&&a.ue.count("csm-cordova-plugin-failed",1)}function m(){return a.webclient&&"function"===typeof a.webclient.getRealClickTime?a.cordova&&a.cordova.platformId&&"ios"==a.cordova.platformId?!1:!0:!1}function n(){try{P.register("AMZNPerformance",function(){return b})}catch(a){}function h(){if(!b)return"";ue_mbl.cnt=null;for(var a=b.timing,d=b.transition,a=["mts",k(a.transitionStart),"mps",k(a.processStart),"mtt",d.type,"mtst",d.subType,"mtlt",d.launchType],d="",c=0;c<
a.length;c+=2){var e=a[c],g=a[c+1];"undefined"!==typeof g&&(d+="&"+e+"="+g)}return d}function k(a){if("undefined"!==typeof a&&"undefined"!==typeof g)return a-g}function q(a,c){b&&(g=c,b.timing.transitionStart=a,b.transition.type="view-transition",b.transition.subType="ajax-transition",b.transition.launchType="normal",ue_mbl.cnt=h)}var c=e.ue||{},g=e.ue_t0,b;if(a.P&&a.P.when&&a.P.register)return a.P.when("CSMPlugin").execute(function(a){a.buildAMZNPerformance&&a.buildAMZNPerformance({successCallback:l,
failCallback:p})}),{cnt:h,ajax:q},"mobile-timing")(ue_csm,window);
(function(b){function c(){var d=[];a.log&&a.log.isStub&&a.log.replay(function(a){e(d,a)});a.clog&&a.clog.isStub&&a.clog.replay(function(a){e(d,a)});d.length&&(a._flhs+=1,n(d),p(d))}function g(){a.log&&a.log.isStub&&(a.onflush&&a.onflush.replay&&a.onflush.replay(function(a){a[0]()}),a.onunload&&a.onunload.replay&&a.onunload.replay(function(a){a[0]()}),c())}function e(d,b){var c=b[1],f=b[0],e={};a._lpn[c]=(a._lpn[c]||0)+1;e[c]=f;d.push(e)}function n(b){q&&(a._lpn.csm=(a._lpn.csm||0)+1,b.push({csm:{k:"chk",
f:a._flhs,l:a._lpn,s:"inln"}))}function p(a){if(h)a=k(a),b.navigator.sendBeacon(l,a);else{a=k(a);var c=new b[f];c.open("POST",l,!0);c.setRequestHeader&&c.setRequestHeader("Content-type","text/plain");c.send(a)}function k(a){return JSON.stringify({rid:b.ue_id,sid:b.ue_sid,mid:b.ue_mid,mkt:b.ue_mkt,sn:b.ue_sn,reqs:a})}var f="XMLHttpRequest",q=1===b.ue_ddq,a=b.ue,r=b[f]&&"withCredentials"in new b[f],h=b.navigator&&b.navigator.sendBeacon,l="//"+b.ue_furl+"/1/batch/1/OE/",m=b.ue_fci_ft||5E3;a&&(r||h)&&
(a._flhs=a._flhs||0,a._lpn=a._lpn||{},a.attach&&(a.attach("beforeunload",g),a.attach("pagehide",g)),m&&b.setTimeout(c,m),a._ffci=c)})(window);
ue_csm.ue.exec(function(w,a){function q(){if(d&&f){var a;a:{try{a=d.getItem(g);break a}catch(c){}a=void 0}if(a)return b=a,!0}return!1}function r(){b=h;k();if(f)try{d.setItem(g,b)}catch(a){}function s(){b=1===a.ue_adb_chk?l:h;k();if(f)try{d.setItem(g,b)}catch(c){}function m(){a.ue_adb_rtla&&c&&0(c.elh=m)}function t(){return b}if(a.ue_adb){a.ue_fadb=a.ue_fadb||10;var e=a.ue,h="adblk_yes",l="adblk_no",b="adblk_unk",d;a:{try{d=a.localStorage;break a}catch(x){}d=void 0}var g="csm:adb",c=a.ue_err,p=e.cookie,f=void 0!==a.localStorage,u=Math.random()>1-1/a.ue_fadb,n=!1,v=q();u||!v?e.uels("https://m.media-amazon.com/images/G/01/csm/showads.v2.js",{onerror:r,onload:s}):k();a.ue_isAdb=t;a.ue_isAdb.unk="adblk_unk";a.ue_isAdb.no=l;a.ue_isAdb.yes=h},"adb")(document,window);
ue_csm.ue_unrt = 750;
(function(d,b,t){function u(a,b){var c=a.srcElement||a.target||{},e={k:w,t:b.t,dt:b.dt,x:a.pageX,y:a.pageY,p:f.getXPath(c),n:c.nodeName};a.button&&(e.b=a.button);c.type&&(e.ty=c.type);c.href&&(e.r=f.extractStringValue(c.href));c.id&&(e.i=c.id);c.className&&c.className.split&&(e.c=c.className.split(/\s+/));g+=1;f.getFirstAscendingWidget(c,function(a){e.wd=a;d.ue.log(e,r)})}function x(a){if(!y(a.srcElement||a.target)){k+=1;n=!0;var v=h=d.ue.d(),c;p&&"function"===typeof p.now&&a.timeStamp&&(c=p.now()-
a.timeStamp,c=parseFloat(c.toFixed(2)));s=b.setTimeout(function(){u(a,{t:v,dt:c})},z)}function A(a){if(a){var b=a.filter(B);a.length!==b.length&&(q=!0,l=d.ue.d(),n&&q&&(l&&h&&d.ue.log({k:C,t:h,m:Math.abs(l-h)},r),m(),q=!1,l=0))}function B(a){if(!a)return!1;var b="characterData"===a.type?a.target.parentElement:a.target;if(!b||!b.hasAttributes||!b.attributes)return!1;var c={"class":["gw-clock","gw-clock-aria","s-item-container-height-auto","feed-carousel","using-mouse"],id:["dealClock","deal_expiry_timer",
"timer"],role:["timer"]},e=!1;Object.keys(c).forEach(function(a){var d=b.attributes[a]?b.attributes[a].value:"";(c[a]||"").forEach(function(a){-1!==d.indexOf(a)&&(e=!0)})});return e}function y(a){if(!a)return!1;var b=(f.extractStringValue(a.nodeName)||"").toLowerCase(),c=(f.extractStringValue(a.type)||"").toLowerCase(),d=(f.extractStringValue(a.href)||"").toLowerCase();a=(f.extractStringValue(a.id)||"").toLowerCase();var g="checkbox color date datetime-local email file month number password radio range reset search tel text time url week".split(" ");
if(-1!==["select","textarea","html"].indexOf(b)||"input"===b&&-1!==g.indexOf(c)||"a"===b&&-1!==d.indexOf("http")||-1!==["sitbreaderrightpageturner","sitbreaderleftpageturner","sitbreaderpagecontainer"].indexOf(a))return!0}function m(){n=!1;h=0;b.clearTimeout(s)}function D(){b.ue.onSushiUnload(function(){ue.event({violationType:"unresponsive-clicks",violationCount:g,totalScanned:k},"csm","csm.ArmoredCXGuardrailsViolation.3")});b.ue.onunload(function(){ue.count("armored-cxguardrails.unresponsive-clicks.violations",
g);ue.count("armored-cxguardrails.unresponsive-clicks.violationRate",g/k*100||0)})}if(b.MutationObserver&&b.addEventListener&&Object.keys&&d&&d.ue&&d.ue.log&&d.ue_unrt&&d.ue_utils){var z=d.ue_unrt,r="cel",w="unr_mcm",C="res_mcm",p=b.performance,f=d.ue_utils,n=!1,h=0,s=0,q=!1,l=0,g=0,k=0;b.addEventListener&&(b.addEventListener("mousedown",x,!0),b.addEventListener("beforeunload",m,!0),b.addEventListener("visibilitychange",m,!0),b.addEventListener("pagehide",m,!0));b.ue&&b.ue.event&&b.ue.onSushiUnload&&
b.ue.onunload&&D();(new MutationObserver(A)).observe(t,{childList:!0,attributes:!0,characterData:!0,subtree:!0})})(ue_csm,window,document);
ue_csm.ue.exec(function(g,e){if(e.ue_err){var f="";e.ue_err.errorHandlers||(e.ue_err.errorHandlers=[]);e.ue_err.errorHandlers.push({name:"fctx",handler:function(a){if(!a.logLevel||"FATAL"===a.logLevel)if(f=g.getElementsByTagName("html")[0].innerHTML){var b=f.indexOf("var ue_t0=ue_t0||+new Date();");if(-1!=b){var b=f.substr(0,b).split(String.fromCharCode(10)),d=Math.max(b.length-5-1,0),b=b.slice(d,b.length-1);a.fcsmln=b.length+1;a.cinfo=a.cinfo||{};for(var c=0;cf.split(String.fromCharCode(10));a.cinfo=a.cinfo||{};if(!(a.f||void 0===a.l||a.l in a.cinfo))for(c=+a.l-1,d=Math.max(c-2,0),c=Math.min(c+2,b.length-1);d<=c;d++)a.cinfo[d+1+""]=b[d]}})},"fatals-context")(document,window);
Read more
Book Description
When the pressure is on to root out an elusive software or hardware glitch, what’s needed is a cool head courtesy of a set of rules guaranteed to work on any system, in any circumstance. Written in a frank but engaging style, Debuggingprovides simple, foolproof principles guaranteed to help find any bug quickly. This book makes those shelves of application-specific debugging books (on C++, Perl, Java, etc.) obsolete. It changes the way readers think about debugging, making those pesky problems suddenly much easier to find and fix. Illustrating the rules with real-life bug-detection war stories, the book shows readers how to: * Understand the system: how perceiving the ""roadmap"" can hasten your journey * Quit thinking and look: when hands-on investigation can’t be avoided * Isolate critical factors: why changing one element at a time can be an essential tool * Keep an audit trail: how keeping a record of the debugging process can win the day
Read more
See all Editorial Reviews
Product details
Paperback: 192 pages
Publisher: AMACOM; First edition (2006)
Language: English
ISBN-10: 0814474578
ISBN-13: 978-0814474570
Product Dimensions:
6.7 x 0.5 x 9.9 inches
Shipping Weight: 12 ounces (View shipping rates and policies)
Average Customer Review:
4.6 out of 5 stars
51 customer reviews
Amazon Best Sellers Rank:
#212,026 in Books (See Top 100 in Books)
I greatly enjoyed reading this book on the metro because it was non-technical and it sounded just like when I help my father solve various electronic/mechanical issues. In fact, it was like he was right there telling me the war stories despite him being 5800KM away.As per pros for the book:* Rang true with me by stating, don't get lost in the details, but actually get in there and LOOK at the problem - not read about it.* Good stories and examples* Good flow and not boring* Good techniques for problem solving* Good price for the contentCons:* Reads a bit like a personal opinion like rant* Needs a bit more editing (small typos)* Slightly repetitive (but I understand that this may have been a literary tactic)Honestly, this was a good read and I would gladly recommend this book for any person attempting to improve their thought process regarding debugging or solving problems. Undergraduate and graduate students + professors should seek to read this book or have it among the required readings for advanced programming classes.
I'm a professional programmer for less than 2 years, however my debugging skill stands sharp amongst my team, owing to this book. I cannot believe how powerful these debugging rules are. For example, one time I have to troubleshoot a very tricky race condition issue. The rule "quite thinking and look" forced me not to make any pre-assumptions, and rather look into the loggings and the data in the database. Along with "divide and conquer", I was able to narrow down the amount of data to look into and find it is a race condition issue by looking at the update date fields.Interestingly enough, I think some programmers do make pre-assumptions when troubleshooting. This set of debugging rules advice against the pre-assumptions and stick with scientific methodologies.
This book is absolutely indispensable for anyone working in any job where things occasionally work in an unexpected manner. It's concise, funny, well-written, and full of immensely useful tips on how to go about debugging problems.One of the great things about this book is that it's generalistic in nature, not specific. Agans's decades of troubleshooting experience has given him great insight on how to go about debugging in all sorts of environments, so he lays out nine rules for approaching any problem:Understand the SystemMake it FailQuit Thinking and LookDivide and ConquerChange One Thing at a TimeKeep an Audit TrailCheck the PlugGet a Fresh ViewIf You Didn't Fix It, It Ain't Fixed[...]Debugging isn't an art performed only by folks with some odd genetic disposition, it's a critical craft which can and must be learned. I was fortunate to have some good troubleshooters as mentors during my days working radar inflight in the Air Force, but I've fallen out of many of the good practices those folks beat^H^H^H^Hinstilled in me. Agans's book is helping me pull out of the thrash and churn mode of debugging.This book's only 175 or so pages long and is well-worth adding to your library. Actually, substitute "a critical addition" for "well worth adding". I'm also going to make sure this book gets added to the professional development reading list I'm working on creating.
I just finished reading David Agans' wonderful book, "Debugging". I've worked in the software development field for many years and I wish I had this book when I started out. I really like his approach to debugging because it is practical and methodical. In a nutshell, David suggests that you should trust no one, "stop thinking and look". Basically, rely on how you think the module / code should work. You need to look and verify the actions / results.Even if you are not a software developer or an engineer, this book is still valuable. Members of the QA team and help desk can also benefit from this book. It will help you in your troubleshooting efforts and also allow you to file bug reports that contain good data.This book is only 175 pages, it is an easy read ... but it is filled with practical advice. Great job David!
If you have 10-20 years of experience I guess you know most of the rules outlined in this book already. It won't give you any code examples though. More like sharpening your mindset when it comes to problem solving. But hey, I don't regret that I read it, and I suppose you won't regret it either.
Perhaps because I am an experienced debugger I found this book to be much thicker than was justified by the content. Essentially the author lists what he considers essential rules for good debugging (no argument with the list, although other lists also work as well) and devotes a chapter to giving examples of each rule in use. The writing style is fine, with some humor that mostly seems to work--it's an easy, quick read. My complaint is simply that the discussion of each rule provided far too many words and too little new knowledge for my taste. That said, the author's guideline list is useful for those few of us that can learn such a skill as debugging from a book. In my opinion, experience helps a good deal more than reading. Nevertheless, for someone just becoming acquainted with the kind of problem solving discussed in the book the book may be useful...if referred to frequently enough for the rules to become habitual.
Great book on debugging. I killed three flies with it at one time.
Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems PDF
Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems EPub
Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems Doc
Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems iBooks
Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems rtf
Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems Mobipocket
Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems Kindle
Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems PDF
Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems PDF
Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems PDF
Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems PDF
0 komentar:
Posting Komentar