(function(){var a=typeof module!=="undefined"&&module.exports;var b=typeof Element!=="undefined"&&"ALLOW_KEYBOARD_INPUT"in Element;var c=(function(){var k;var j;var e=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror",],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror",],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror",],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror",],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError",],];var h=0;var f=e.length;var g={};for(;h'+
m[n].text+"");if(m[n].items.length>0){p=a("");l.append(p);d(p,m[n].items);}
o.append(l);}}
g=a('');d(g,b);this.append(g);function h(){var q,l=0,s=f.length,m=a(f[0])||null,r;j.find("li.toc-active").removeClass("toc-active");j.find("li .active").removeClass("active");j.find(".toc-sub-active").removeClass("toc-sub-active");for(;l=0){break;}
m=q;}
r=a("#toc-"+m[0].id);r.addClass("toc-active");r.children("a").addClass("active");r.children("ul").addClass("toc-sub-active");r.parents("ul").addClass("toc-sub-active");}
c.scroll(function(){h();});h();};})(jQuery);(function(){var i=document.querySelector("#canvas");var q=$(i);var I=$("#fin").on("hidden.bs.modal",function(at){an=false;o(0);});if(!i){return;}
var w=i.getContext("2d");var L=0;var J=Math.abs,aj=Math.round,ap=Math.min;function N(ay,aE,aw){var aA,aC,av,ax=0,au=0,aD=0,at,az,aB;ay*=360;aA=(1-J(2*aw-1))*aE;aC=aA*(1-J(((ay / 60)%2)-1));av=aw-aA / 2;if(ay<60){ax=aA;au=aC;}else{if(ay<120){ax=aC;au=aA;}else{if(ay<180){au=aA;aD=aC;}else{if(ay<240){au=aC;aD=aA;}else{if(ay<300){ax=aC;aD=aA;}else{if(ay<360){ax=aA;aD=aC;}}}}}}
at=ax+av;az=au+av;aB=aD+av;return[at*255,az*255,aB*255];}
var R={id:"base",title:"",ctx:null,width:0,height:0,canRotate:false,isDynamic:false,rotateCW:function(){if(this.canRotate){L=(L+4+1)%4;this.draw();}},rotateCCW:function(){if(this.canRotate){L=(L+4-1)%4;this.draw();}},clear:function(av){var au=this.ctx,at=this.width,aw=this.height;av=av||"black";au.fillStyle=av;au.beginPath();au.rect(0,0,at,aw);au.fill();},};function j(){this.id="color-bars";this.title="Color rendering";this.canRotate=true;var at=["#FFFFFF","#FFFF00","#00FFFF","#00FF00","#FF00FF","#FF0000","#0000FF",];this.draw=function(){var av=this.ctx,au=this.width,ax=this.height,ay=7,aw;this.clear("white");for(aw=0;aw=0&&av-au>=0&&at+au=this.height?this.nextK():(this.y2+=this.d):0;this.k===1?this.x1>=this.width?this.nextK():(this.x1+=this.d):0;this.k===2?(this.x2<=0?this.nextK():(this.x1-=this.d),(this.x2-=this.d)):0;this.k===3?(this.x2>=this.width?this.nextK():(this.x1+=this.d),(this.x2+=this.d)):0;this.k===4?(this.x2<=0?this.nextK():(this.x2-=this.d)):0;this.k===5?this.y1>=this.height?this.nextK():(this.y1+=this.d):0;this.k===6?(this.y2<=0?this.nextK():(this.y1-=this.d),(this.y2-=this.d)):0;this.k===7?(this.y2>=this.height?this.nextK():(this.y1+=this.d),(this.y2+=this.d)):0;this.k===8?(this.y2<=0?this.nextK():(this.y2-=this.d)):0;this.k===9?(this.x1<=0?this.nextK():(this.x1-=this.d)):0;this.k===10?(this.x2>=this.width?this.nextK():(this.x1+=this.d),(this.x2+=this.d)):0;this.k===11?(this.x2<=0?this.nextK():(this.x1-=this.d),(this.x2-=this.d)):0;this.k===12?this.x2>=this.width?this.nextK():(this.x2+=this.d):0;this.k===13?(this.y1<=0?this.nextK():(this.y1-=this.d)):0;this.k===14?(this.y2>=this.height?this.nextK():(this.y1+=this.d),(this.y2+=this.d)):0;this.k===15?(this.y2<=0?this.nextK():(this.y1-=this.d),(this.y2-=this.d)):0;};this.nextK=function(){this.k=(this.k+1)%16;this.x1=Math.max(0,Math.min(this.width-1,this.x1));this.y1=Math.max(0,Math.min(this.height-1,this.y1));this.x2=Math.max(0,Math.min(this.width-1,this.x2));this.y2=Math.max(0,Math.min(this.height-1,this.y2));this.d=1+Math.random()*4;};this.redraw=function(){var au=this.ctx,av=this.width,at=this.height;this.clear("black");this.move();au.strokeStyle="#fff";au.lineWidth=1;au.beginPath();au.moveTo(this.x1+0.5,this.y1+0.5);au.lineTo(this.x2+0.5,this.y2+0.5);au.stroke();};}
l.prototype=R;function e(){this.id="dynamic-bars";this.title="Dynamic stripes";this.isDynamic=true;this.delay=5;this.n=5;this.draw=function(){var av=this.ctx,aw=this.width,au=this.height,at=aw / 2;this.x=at;this.setVels();};this.x=0;this.vx=0;this.size=50;this.setVels=function(){var au=5,at=0.1;this.vx=2*(0.5-Math.random())*au;if(Math.abs(this.vx)=0&&at+au=0&&au>=0&&at=2){al.fadeOut({complete:function(){a();},});}
setTimeout(W,1000);};var V=-1;var O=function(au){var at=0;if(V===au){return;}
V=au;if(!Z){if($("#controls:hover, #nav-controls a span:hover").length>0){at=1;}else{at=au / al.offset().top;}
at=at>1?1:at;al.css({opacity:1,}).show();}else{al.hide();}
p&&ab();};W();$(window).mousemove(function(at){if(c){c=false;screenfull.request();}
Y=0;O(at.clientY);});var G=function(){b.hasClass("open")&&$("#sg-list").dropdown("toggle");};var o=function(av){var ax=m.length,at=$("#indicators-list"),au,aw;av=(av+ax)%ax;v=m[av];n=v.items[0];$("#sg-caption").html(m[av].title);at.html("");for(au=0;au");at.append(aw);aw.click(t);}
$("#sg-list li.active").removeClass("active");$('#sg-list li[data-index="'+av+'"]').addClass("active");G();am(0);};var am=function(at){var au=v.items.length;G();at=(at+au)%au;$("#indicators-list li.active").removeClass("active");$("#indicators-list li[data-index="+at+"]").addClass("active");n=v.items[at];$("#xs-buttons button").toggleClass("disabled",!n.canRotate);ao();};var r=function(){var au=m.indexOf(v),at=v.items.indexOf(n)+1;if(au>=m.length-1&&at>=v.items.length){an=true;I.modal({show:true,});n=new g();ao();}else{at>=v.items.length?o(++au):am(at);}};var X=function(){var au=m.indexOf(v),at=v.items.indexOf(n)-1;if(at<0){o(--au);at=v.items.length-1;}
am(at);};$("#nav-controls .left").click(function(){X();$(this).blur();return false;});$("#nav-controls .right").click(function(){r();$(this).blur();return false;});$("#close-ad").click(function(){Q.hide();E=true;al=$("#controls,#nav-controls");});q.on("swipeleft",r).on("swiperight",X);q.click(function(at){at.clientX'+m[au].title+"");aw=$('');aw.append(av);at.append(aw);av.click(y);}
o(0);};var z=function(){
$("#yandex_rtb_R-A-9147117-2").hide();
var page=$(".page"),menubars=$(".menubars"),menu=$(".menu_wrapper"),sidebar=$(".sidebar"),fixed_toolbar=$("#fixed_toolbar"),footer=$("#footer"),jdiv=$(".globalClass_68ab");page.css("position","unset");menubars.hide();menu.hide();sidebar.hide();fixed_toolbar.hide();footer.hide();jdiv.hide();Z=false;Y=0;al=$("#controls,#nav-controls,#tad-box");if(screenfull.enabled){screenfull.request();$("#front, #page-header, #page-footer").hide();o(0);q.show();al.css({opacity:1,}).fadeIn();}
$("html").addClass("testing");Q.show();E=false;};$("#start").click(z);var ah=function(){var page=$(".page"),menu=$(".menu_wrapper"),sidebar=$(".sidebar"),fixed_toolbar=$("#fixed_toolbar"),footer=$("#footer"),jdiv=$(".globalClass_68ab"),menubars=$(".menubars");page.css("position","relative");menu.show();sidebar.show();fixed_toolbar.show();footer.show();jdiv.show();menubars.show();Z=true;$("html").removeClass("testing");screenfull.exit();q.hide();al.hide();E=true;$("#board").show();$("#front, #page-header, #page-footer").show();A=true;if(n.doOnStop){n.doOnStop();}
};$("#home").click(ah);$("#rotate-cw").click(function(){n.rotateCW();});$("#rotate-ccw").click(function(){n.rotateCCW();});$(".btn").click(function(){$(this).blur();});if(screenfull.enabled){document.addEventListener(screenfull.raw.fullscreenchange,function(){$("body").toggleClass("fullscreen",screenfull.isFullscreen);});$("#fsToggle").click(function(){screenfull.toggle();});}
$(window).resize(ao);$(window).bind("mousewheel",function(at){if(!Z&&!an){if(at.originalEvent.wheelDelta>0){X();}else{r();}}});ak();$("#fin-close").click(function(){ah();});$("#fin-restart").click(function(){I.modal("hide");o(0);});var c=false;if(window.location.hash==="#start"){c=true;history.replaceState("",document.title,window.location.pathname);z();}
if(document.addEventListener){document.addEventListener("fullscreenchange",exitHandler,false);document.addEventListener("mozfullscreenchange",exitHandler,false);document.addEventListener("MSFullscreenChange",exitHandler,false);document.addEventListener("webkitfullscreenchange",exitHandler,false);}
function exitHandler(){if(!document.webkitIsFullScreen&&!document.mozFullScreen&&!document.msFullscreenElement){ah();}}})();(function(){$("#toc").toc(".main h2,h3,h4");$("#social, #fin-social").show();})();