/* CindyJS - (C) 2014-2016 The CindyJS Project * Mostly licensed under the Apache License 2.0, but subprojects may use different licensing. * See https://github.com/CindyJS/CindyJS/tree/3d330f559749faf0d48ea95251ed6c153478bc67 * for corresponding sources and their respective licensing conditions. */ /* npm.im/iphone-inline-video 2.2.2 npm.im/intervalometer https://github.com/paulmillr/es6-shim @license es6-shim Copyright 2013-2016 by Paul Miller (http://paulmillr.com) and contributors, MIT License es6-shim: v0.35.4 see https://github.com/paulmillr/es6-shim/blob/0.35.3/LICENSE Details and documentation: https://github.com/paulmillr/es6-shim/ */ var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.arrayIteratorImpl=function(D){var H=0;return function(){return H>>0,$jscomp.propertyToPolyfillSymbol[ba]= $jscomp.IS_SYMBOL_NATIVE?$jscomp.global.Symbol(ba):$jscomp.POLYFILL_PREFIX+T+"$"+ba),$jscomp.defineProperty(aa,$jscomp.propertyToPolyfillSymbol[ba],{configurable:!0,writable:!0,value:H})))};$jscomp.assign=$jscomp.TRUST_ES6_POLYFILLS&&"function"==typeof Object.assign?Object.assign:function(D,H){for(var T=1;T>>0)+"_",aa=0,ba=function(na){if(this instanceof ba)throw new TypeError("Symbol is not a constructor");return new H(T+(na||"")+"_"+aa++,na)};return ba},"es6","es3"); $jscomp.polyfill("Symbol.iterator",function(D){if(D)return D;D=Symbol("Symbol.iterator");for(var H="Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" "),T=0;T=na}},"es6","es3"); $jscomp.polyfill("String.prototype.endsWith",function(D){return D?D:function(H,T){var aa=$jscomp.checkStringArgs(this,H,"endsWith");H+="";void 0===T&&(T=aa.length);T=Math.max(0,Math.min(T|0,aa.length));for(var ba=H.length;0=ba}},"es6","es3");$jscomp.polyfill("Object.is",function(D){return D?D:function(H,T){return H===T?0!==H||1/H===1/T:H!==H&&T!==T}},"es6","es3"); $jscomp.polyfill("Array.prototype.includes",function(D){return D?D:function(H,T){var aa=this;aa instanceof String&&(aa=String(aa));var ba=aa.length;T=T||0;for(0>T&&(T=Math.max(T+ba,0));TH&&-.25H&&-.25H?-T:T}},"es6","es3"); $jscomp.polyfill("Math.atanh",function(D){if(D)return D;var H=Math.log1p;return function(T){T=Number(T);return(H(T)-H(-T))/2}},"es6","es3");$jscomp.polyfill("Math.tanh",function(D){return D?D:function(H){H=Number(H);if(0===H)return H;var T=Math.exp(-2*Math.abs(H));T=(1-T)/(1+T);return 0>H?-T:T}},"es6","es3");$jscomp.polyfill("Math.acosh",function(D){return D?D:function(H){H=Number(H);return Math.log(H+Math.sqrt(H*H-1))}},"es6","es3"); $jscomp.polyfill("Math.cbrt",function(D){return D?D:function(H){if(0===H)return H;H=Number(H);var T=Math.pow(Math.abs(H),1/3);return 0>H?-T:T}},"es6","es3"); $jscomp.polyfill("Math.hypot",function(D){return D?D:function(H){if(2>arguments.length)return arguments.length?Math.abs(arguments[0]):0;var T,aa,ba;for(T=ba=0;Tba){if(!ba)return ba;for(T=aa=0;T>>16&65535)*ba+aa*(T>>>16&65535)<<16>>>0)|0}},"es6","es3");$jscomp.checkEs6ConformanceViaProxy=function(){try{var D={},H=Object.create(new $jscomp.global.Proxy(D,{get:function(T,aa,ba){return T==D&&"q"==aa&&ba==H}}));return!0===H.q}catch(T){return!1}};$jscomp.USE_PROXY_FOR_ES6_CONFORMANCE_CHECKS=!1; $jscomp.ES6_CONFORMANCE=$jscomp.USE_PROXY_FOR_ES6_CONFORMANCE_CHECKS&&$jscomp.checkEs6ConformanceViaProxy(); $jscomp.polyfill("WeakMap",function(D){function H(){if(!D||!Object.seal)return!1;try{var Z=Object.seal({}),ia=Object.seal({}),ra=new D([[Z,2],[ia,3]]);if(2!=ra.get(Z)||3!=ra.get(ia))return!1;ra.delete(Z);ra.set(ia,4);return!ra.has(Z)&&4==ra.get(ia)}catch(Qa){return!1}}function T(){}function aa(Z){var ia=typeof Z;return"object"===ia&&null!==Z||"function"===ia}function ba(Z){if(!$jscomp.owns(Z,ea)){var ia=new T;$jscomp.defineProperty(Z,ea,{value:ia})}}function na(Z){if(!$jscomp.ISOLATE_POLYFILLS){var ia= Object[Z];ia&&(Object[Z]=function(ra){if(ra instanceof T)return ra;Object.isExtensible(ra)&&ba(ra);return ia(ra)})}}if($jscomp.USE_PROXY_FOR_ES6_CONFORMANCE_CHECKS){if(D&&$jscomp.ES6_CONFORMANCE)return D}else if(H())return D;var ea="$jscomp_hidden_"+Math.random();na("freeze");na("preventExtensions");na("seal");var A=0,ha=function(Z){this.id_=(A+=Math.random()+1).toString();if(Z){Z=$jscomp.makeIterator(Z);for(var ia;!(ia=Z.next()).done;)ia=ia.value,this.set(ia[0],ia[1])}};ha.prototype.set=function(Z, ia){if(!aa(Z))throw Error("Invalid WeakMap key");ba(Z);if(!$jscomp.owns(Z,ea))throw Error("WeakMap key fail: "+Z);Z[ea][this.id_]=ia;return this};ha.prototype.get=function(Z){return aa(Z)&&$jscomp.owns(Z,ea)?Z[ea][this.id_]:void 0};ha.prototype.has=function(Z){return aa(Z)&&$jscomp.owns(Z,ea)&&$jscomp.owns(Z[ea],this.id_)};ha.prototype.delete=function(Z){return aa(Z)&&$jscomp.owns(Z,ea)&&$jscomp.owns(Z[ea],this.id_)?delete Z[ea][this.id_]:!1};return ha},"es6","es3");$jscomp.MapEntry=function(){}; $jscomp.polyfill("Map",function(D){function H(){if($jscomp.ASSUME_NO_NATIVE_MAP||!D||"function"!=typeof D||!D.prototype.entries||"function"!=typeof Object.seal)return!1;try{var ha=Object.seal({x:4}),Z=new D($jscomp.makeIterator([[ha,"s"]]));if("s"!=Z.get(ha)||1!=Z.size||Z.get({x:4})||Z.set({x:4},"t")!=Z||2!=Z.size)return!1;var ia=Z.entries(),ra=ia.next();if(ra.done||ra.value[0]!=ha||"s"!=ra.value[1])return!1;ra=ia.next();return ra.done||4!=ra.value[0].x||"t"!=ra.value[1]||!ia.next().done?!1:!0}catch(Qa){return!1}} if($jscomp.USE_PROXY_FOR_ES6_CONFORMANCE_CHECKS){if(D&&$jscomp.ES6_CONFORMANCE)return D}else if(H())return D;var T=new WeakMap,aa=function(ha){this.data_={};this.head_=ea();this.size=0;if(ha){ha=$jscomp.makeIterator(ha);for(var Z;!(Z=ha.next()).done;)Z=Z.value,this.set(Z[0],Z[1])}};aa.prototype.set=function(ha,Z){ha=0===ha?0:ha;var ia=ba(this,ha);ia.list||(ia.list=this.data_[ia.id]=[]);ia.entry?ia.entry.value=Z:(ia.entry={next:this.head_,previous:this.head_.previous,head:this.head_,key:ha,value:Z}, ia.list.push(ia.entry),this.head_.previous.next=ia.entry,this.head_.previous=ia.entry,this.size++);return this};aa.prototype.delete=function(ha){ha=ba(this,ha);return ha.entry&&ha.list?(ha.list.splice(ha.index,1),ha.list.length||delete this.data_[ha.id],ha.entry.previous.next=ha.entry.next,ha.entry.next.previous=ha.entry.previous,ha.entry.head=null,this.size--,!0):!1};aa.prototype.clear=function(){this.data_={};this.head_=this.head_.previous=ea();this.size=0};aa.prototype.has=function(ha){return!!ba(this, ha).entry};aa.prototype.get=function(ha){return(ha=ba(this,ha).entry)&&ha.value};aa.prototype.entries=function(){return na(this,function(ha){return[ha.key,ha.value]})};aa.prototype.keys=function(){return na(this,function(ha){return ha.key})};aa.prototype.values=function(){return na(this,function(ha){return ha.value})};aa.prototype.forEach=function(ha,Z){for(var ia=this.entries(),ra;!(ra=ia.next()).done;)ra=ra.value,ha.call(Z,ra[1],ra[0],this)};aa.prototype[Symbol.iterator]=aa.prototype.entries;var ba= function(ha,Z){var ia=Z&&typeof Z;"object"==ia||"function"==ia?T.has(Z)?ia=T.get(Z):(ia=""+ ++A,T.set(Z,ia)):ia="p_"+Z;var ra=ha.data_[ia];if(ra&&$jscomp.owns(ha.data_,ia))for(ha=0;haT&&(T=Math.max(0,ba+T));if(null==aa||aa>ba)aa=ba;aa=Number(aa);0>aa&&(aa=Math.max(0,ba+aa));for(T=Number(T||0);T=this.video.HAVE_FUTURE_DATA?(this.hasAudio||(this.driver.currentTime=this.video.currentTime+U*this.video.playbackRate/ 1E3,this.video.loop&&this.driver.currentTime>=this.video.duration&&(this.driver.currentTime=0)),ea(this.video,this.driver.currentTime)):this.video.networkState===this.video.NETWORK_IDLE&&0===this.video.buffered.length&&this.video.load();this.video.ended&&(delete this.video[rb],this.video.pause(!0))}function ha(){var U=this[$a];if(this.webkitDisplayingFullscreen)return void this[r]();"data:"!==U.driver.src&&U.driver.src!==this.src&&(ea(this,0,!0),U.driver.src=this.src);this.paused&&(U.paused=!1,0=== this.buffered.length&&this.load(),U.driver.play(),U.updater.start(),U.hasAudio||(ba(this,"play"),U.video.readyState>=U.video.HAVE_ENOUGH_DATA&&ba(this,"playing")))}function Z(U){var ya=this[$a];ya.driver.pause();ya.updater.stop();this.webkitDisplayingFullscreen&&this[Ya]();ya.paused&&!U||(ya.paused=!0,ya.hasAudio||ba(this,"pause"),this.ended&&!this.webkitDisplayingFullscreen&&(this[rb]=!0,ba(this,"ended")))}function ia(U,ya){var Ha={};U[$a]=Ha;Ha.paused=!0;Ha.hasAudio=ya;Ha.video=U;Ha.updater=D(A.bind(Ha), requestAnimationFrame,cancelAnimationFrame);ya?Ha.driver=na(U):(U.addEventListener("canplay",function(){U.paused||ba(U,"playing")}),Ha.driver={src:U.src||U.currentSrc||"data:",muted:!0,paused:!0,pause:function(){Ha.driver.paused=!0},play:function(){Ha.driver.paused=!1;Ha.driver.currentTime>=Ha.video.duration&&ea(U,0)},get ended(){return Ha.driver.currentTime>=Ha.video.duration}});U.addEventListener("emptied",function(){var Jb=!Ha.driver.src||"data:"===Ha.driver.src;Ha.driver.src&&Ha.driver.src!== U.src&&(ea(U,0,!0),Ha.driver.src=U.src,Jb||!ya&&U.autoplay?Ha.driver.play():Ha.updater.stop())},!1);U.addEventListener("webkitbeginfullscreen",function(){U.paused?ya&&0===Ha.driver.buffered.length&&Ha.driver.load():(U.pause(),U[r]())});ya&&(U.addEventListener("webkitendfullscreen",function(){Ha.driver.currentTime=U.currentTime}),U.addEventListener("seeking",function(){0>ab.indexOf(100*U.currentTime|0)&&(Ha.driver.currentTime=U.currentTime)}))}function ra(U){var ya=U[rb];return delete U[rb],!U.webkitDisplayingFullscreen&& !ya}function Qa(U){var ya=U[$a];U[r]=U.play;U[Ya]=U.pause;U.play=ha;U.pause=Z;T(U,"paused",ya.driver);T(U,"muted",ya.driver,!0);T(U,"playbackRate",ya.driver,!0);T(U,"ended",ya.driver);T(U,"loop",ya.driver,!0);H(U,"seeking",function(Ha){return!Ha.webkitDisplayingFullscreen});H(U,"seeked",function(Ha){return!Ha.webkitDisplayingFullscreen});H(U,"timeupdate",ra);H(U,"ended",ra)}var Xa,Ga="object"==typeof document&&"object-fit"in document.head.style&&!matchMedia("(-webkit-video-playable-inline)").matches, $a="bfred-it:iphone-inline-video",rb="bfred-it:iphone-inline-video:event",r="bfred-it:iphone-inline-video:nativeplay",Ya="bfred-it:iphone-inline-video:nativepause",ab=[],eb=0;return function(U,ya){if(void 0===ya&&(ya={}),!U[$a])if(ya.everywhere||Ga&&(ya.iPad||ya.ipad?/iPhone|iPod|iPad/:/iPhone|iPod/).test(navigator.userAgent))U.pause(),ya=U.autoplay,U.autoplay=!1,ia(U,!U.muted),Qa(U),U.classList.add("IIV"),U.muted&&ya&&(U.play(),U.addEventListener("playing",function Jb(){U.autoplay=!0;U.removeEventListener("playing", Jb)})),/iPhone|iPod|iPad/.test(navigator.platform)||console.warn("iphone-inline-video is not guaranteed to work in emulated environments")}}(); (function(){function D(e,g,l){r.biginteger_used=1;null!=e&&("number"==typeof e&&"undefined"==typeof g?this.fromInt(e):"number"==typeof e?this.fromNumber(e,g,l):null==g&&"string"!=typeof e?this.fromString(e,256):this.fromString(e,g))}function H(){return new D(null,void 0,void 0)}function T(e,g,l,q,z,E){for(;0<=--E;){var L=g*this[e++]+l[q]+z;z=Math.floor(L/67108864);l[q++]=L&67108863}return z}function aa(e,g,l,q,z,E){var L=g&32767;for(g>>=15;0<=--E;){var ca=this[e]&32767,la=this[e++]>>15,pa=g*ca+la* L;ca=L*ca+((pa&32767)<<15)+l[q]+(z&1073741823);z=(ca>>>30)+(pa>>>15)+g*la+(z>>>30);l[q++]=ca&1073741823}return z}function ba(e,g,l,q,z,E){var L=g&16383;for(g>>=14;0<=--E;){var ca=this[e]&16383,la=this[e++]>>14,pa=g*ca+la*L;ca=L*ca+((pa&16383)<<14)+l[q]+z;z=(ca>>28)+(pa>>14)+g*la;l[q++]=ca&268435455}return z}function na(e,g){e=Kb[e.charCodeAt(g)];return null==e?-1:e}function ea(e){var g=H();g.fromInt(e);return g}function A(e){var g=1,l;0!=(l=e>>>16)&&(e=l,g+=16);0!=(l=e>>8)&&(e=l,g+=8);0!=(l=e>>4)&& (e=l,g+=4);0!=(l=e>>2)&&(e=l,g+=2);0!=e>>1&&(g+=1);return g}function ha(e){this.m=e}function Z(e){this.m=e;this.mp=e.invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<=Eb;++Eb)Kb[ab++]=Eb;ab=97;for(Eb=10;36>Eb;++Eb)Kb[ab++]=Eb;ab=65;for(Eb=10;36>Eb;++Eb)Kb[ab++]=Eb;ha.prototype.convert=function(e){return 0>e.s||0<=e.compareTo(this.m)?e.mod(this.m):e};ha.prototype.revert=function(e){return e};ha.prototype.reduce=function(e){e.divRemTo(this.m,null,e)};ha.prototype.mulTo=function(e,g,l){e.multiplyTo(g,l);this.reduce(l)};ha.prototype.sqrTo=function(e,g){e.squareTo(g);this.reduce(g)};Z.prototype.convert=function(e){var g=H();e.abs().dlShiftTo(this.m.t, g);g.divRemTo(this.m,null,g);0>e.s&&0>15)*this.mpl&this.um)<<15)&e.DM;l=g+this.m.t;for(e[l]+=this.m.am(0,q,e,g,0,this.m.t);e[l]>=e.DV;)e[l]-=e.DV,e[++l]++}e.clamp();e.drShiftTo(this.m.t,e);0<=e.compareTo(this.m)&&e.subTo(this.m,e)};Z.prototype.mulTo= function(e,g,l){e.multiplyTo(g,l);this.reduce(l)};Z.prototype.sqrTo=function(e,g){e.squareTo(g);this.reduce(g)};D.prototype.copyTo=function(e){for(var g=this.t-1;0<=g;--g)e[g]=this[g];e.t=this.t;e.s=this.s};D.prototype.fromInt=function(e){this.t=1;this.s=0>e?-1:0;0e?this[0]=e+this.DV:this.t=0};D.prototype.fromString=function(e,g){if(16==g)g=4;else if(8==g)g=3;else if(256==g)g=8;else if(2==g)g=1;else if(32==g)g=5;else if(4==g)g=2;else{this.fromRadix(e,g);return}this.s=this.t=0;for(var l= e.length,q=!1,z=0;0<=--l;){var E=8==g?e[l]&255:na(e,l);0>E?"-"==e.charAt(l)&&(q=!0):(q=!1,0==z?this[this.t++]=E:z+g>this.DB?(this[this.t-1]|=(E&(1<>this.DB-z):this[this.t-1]|=E<=this.DB&&(z-=this.DB))}8==g&&0!=(e[0]&128)&&(this.s=-1,0>q|E,E=(this[L]&z)<=this.t)g.t=0;else{e%=this.DB;var q=this.DB-e,z=(1<>e;for(var E=l+1;E>e;0>=this.DB;if(e.t>=this.DB;q+=this.s}else{for(q+=this.s;l>=this.DB; q-=e.s}g.s=0>q?-1:0;-1>q?g[l++]=this.DV+q:0=g.DV&&(e[l+g.t]-=g.DV,e[l+g.t+1]=1)}0=q.t)){var z=this.abs();if(z.t>this.F2:0),pa=this.FV/la;la=(1<L&&D.ZERO.subTo(l,l)}}}};D.prototype.invDigit=function(){if(1>this.t)return 0;var e=this[0];if(0==(e&1))return 0;var g=e&3;g=g*(2-(e&15)*g)&15;g=g* (2-(e&255)*g)&255;g=g*(2-((e&65535)*g&65535))&65535;g=g*(2-e*g%this.DV)%this.DV;return 0e)return D.ONE;var l=H(),q=H(),z=g.convert(this),E=A(e)-1;for(z.copyTo(l);0<=--E;)if(g.sqrTo(l,q),0<(e&1<this.s)return"-"+this.negate().toString(e);if(16==e)e=4;else if(8==e)e=3;else if(2== e)e=1;else if(32==e)e=5;else if(4==e)e=2;else return this.toRadix(e);var g=(1<>L)&&(q=!0,z="0123456789abcdefghijklmnopqrstuvwxyz".charAt(l));0<=E;)L>(L+=this.DB-e)):(l=this[E]>>(L-=e)&g,0>=L&&(L+=this.DB,--E)),0this.s?this.negate():this};D.prototype.compareTo=function(e){var g=this.s-e.s;if(0!=g)return g;var l=this.t;g=l-e.t;if(0!=g)return 0>this.s?-g:g;for(;0<=--l;)if(0!=(g=this[l]-e[l]))return g;return 0};D.prototype.bitLength=function(){return 0>=this.t?0:this.DB*(this.t-1)+A(this[this.t-1]^this.s&this.DM)};D.prototype.mod=function(e){var g=H();this.abs().divRemTo(e,null,g);0>this.s&&0e||g.isEven()? new ha(g):new Z(g);return this.exp(e,g)};D.ZERO=ea(0);D.ONE=ea(1);Ga.prototype.convert=$a;Ga.prototype.revert=$a;Ga.prototype.mulTo=function(e,g,l){e.multiplyTo(g,l)};Ga.prototype.sqrTo=function(e,g){e.squareTo(g)};rb.prototype.convert=function(e){if(0>e.s||e.t>2*this.m.t)return e.mod(this.m);if(0>e.compareTo(this.m))return e;var g=H();e.copyTo(g);this.reduce(g);return g};rb.prototype.revert=function(e){return e};rb.prototype.reduce=function(e){e.drShiftTo(this.m.t-1,this.r2);e.t>this.m.t+1&&(e.t= this.m.t+1,e.clamp());this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);for(this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);0>e.compareTo(this.r2);)e.dAddOffset(1,this.m.t+1);for(e.subTo(this.r2,e);0<=e.compareTo(this.m);)e.subTo(this.m,e)};rb.prototype.mulTo=function(e,g,l){e.multiplyTo(g,l);this.reduce(l)};rb.prototype.sqrTo=function(e,g){e.squareTo(g);this.reduce(g)};var zb=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151, 157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953, 967,971,977,983,991,997],nd=67108864/zb[zb.length-1];D.prototype.chunkSize=function(e){return Math.floor(Math.LN2*this.DB/Math.log(e))};D.prototype.toRadix=function(e){null==e&&(e=10);if(0==this.signum()||2>e||36la?"-"==e.charAt(ca)&&0==this.signum()&&(z=!0):(L=g*L+la,++E>=l&&(this.dMultiply(q),this.dAddOffset(L,0),L=E=0))}0e)this.fromInt(1);else for(this.fromNumber(e,l),this.testBit(e-1)||this.bitwiseTo(D.ONE.shiftLeft(e-1),ra,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(g);)this.dAddOffset(2, 0),this.bitLength()>e&&this.subTo(D.ONE.shiftLeft(e-1),this);else{l=[];var q=e&7;l.length=(e>>3)+1;g.nextBytes(l);l[0]=0>=this.DB;if(e.t>=this.DB;q+=this.s}else{for(q+=this.s;l>=this.DB;q+=e.s}g.s=0>q?-1:0;0q&&(g[l++]=this.DV+q);g.t=l;g.clamp()};D.prototype.dMultiply=function(e){this[this.t]=this.am(0,e-1,this,0,0,this.t);++this.t;this.clamp()};D.prototype.dAddOffset=function(e,g){if(0!= e){for(;this.t<=g;)this[this.t++]=0;for(this[g]+=e;this[g]>=this.DV;)this[g]-=this.DV,++g>=this.t&&(this[this.t++]=0),++this[g]}};D.prototype.multiplyLowerTo=function(e,g,l){var q=Math.min(this.t+e.t,g);l.s=0;for(l.t=q;0=e)return 0;var g=this.DV%e,l=0>this.s?e-1:0;if(0=l)return!1;var q=g.shiftRight(l);e=e+1>>1;e>zb.length&&(e=zb.length);for(var z=H(),E=0;Ethis.s){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<>24};D.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16};D.prototype.signum=function(){return 0>this.s?-1:0>=this.t||1==this.t&&0>=this[0]?0:1};D.prototype.toByteArray=function(){var e=this.t,g=[];g[0]=this.s;var l=this.DB-e*this.DB%8,q,z=0;if(0>l)!=(this.s&this.DM)>>l&&(g[z++]=q|this.s<l?(q=(this[e]&(1<>(l+=this.DB-8)):(q=this[e]>>(l-=8)&255,0>=l&&(l+=this.DB,--e)),0!=(q&128)&& (q|=-256),0==z&&(this.s&128)!=(q&128)&&++z,0this.compareTo(e)?this:e};D.prototype.max=function(e){return 0e?this.rShiftTo(-e,g):this.lShiftTo(e,g);return g};D.prototype.shiftRight=function(e){var g=H();0>e?this.lShiftTo(-e,g):this.rShiftTo(e,g);return g};D.prototype.getLowestSetBit=function(){for(var e=0;e>=16,l+= 16);0==(e&255)&&(e>>=8,l+=8);0==(e&15)&&(e>>=4,l+=4);0==(e&3)&&(e>>=2,l+=2);0==(e&1)&&++l;e=l}return g+e}return 0>this.s?this.t*this.DB:-1};D.prototype.bitCount=function(){for(var e=0,g=this.s&this.DM,l=0;l=this.t?0!=this.s:0!=(this[g]&1<=l)return q;var z=18>l?1:48>l?3:144>l?4:768>l?5:6;g=8>l?new ha(g):g.isEven()?new rb(g):new Z(g);var E=[],L=3,ca=z-1,la=(1<=ca?La=e[pa]>>l-ca&la:(La=(e[pa]&(1<>this.DB+l-ca));for(L=z;0==(La&1);)La>>=1,--L;0>(l-=L)&&(l+=this.DB, --pa);if(bb)E[La].copyTo(q),bb=!1;else{for(;1--l&&(l=this.DB-1,--pa)}return g.revert(q)};D.prototype.modInverse=function(e){var g=e.isEven();if(this.isEven()&&g||0==e.signum())return D.ZERO;for(var l=e.clone(),q=this.clone(),z=ea(1),E=ea(0),L=ea(0),ca=ea(1);0!=l.signum();){for(;l.isEven();)l.rShiftTo(1,l),g?(z.isEven()&&E.isEven()||(z.addTo(this,z), E.subTo(e,E)),z.rShiftTo(1,z)):E.isEven()||E.subTo(e,E),E.rShiftTo(1,E);for(;q.isEven();)q.rShiftTo(1,q),g?(L.isEven()&&ca.isEven()||(L.addTo(this,L),ca.subTo(e,ca)),L.rShiftTo(1,L)):ca.isEven()||ca.subTo(e,ca),ca.rShiftTo(1,ca);0<=l.compareTo(q)?(l.subTo(q,l),g&&z.subTo(L,z),E.subTo(ca,E)):(q.subTo(l,q),g&&L.subTo(z,L),ca.subTo(E,ca))}if(0!=q.compareTo(D.ONE))return D.ZERO;if(0<=ca.compareTo(e))return ca.subtract(e);if(0>ca.signum())ca.addTo(e,ca);else return ca;return 0>ca.signum()?ca.add(e):ca}; D.prototype.pow=function(e){return this.exp(e,new Ga)};D.prototype.gcd=function(e){var g=0>this.s?this.negate():this.clone();e=0>e.s?e.negate():e.clone();if(0>g.compareTo(e)){var l=g;g=e;e=l}l=g.getLowestSetBit();var q=e.getLowestSetBit();if(0>q)return g;le.compareTo(g)?!0:!1};D.op_Addition=function(e,g){return(new D(e)).add(new D(g))};D.op_Subtraction=function(e,g){return(new D(e)).subtract(new D(g))};D.Int128Mul=function(e,g){return(new D(e)).multiply(new D(g))};D.op_Division=function(e,g){return e.divide(g)};D.prototype.ToDouble=function(){return parseFloat(this.toString())}; ab=function(e,g){var l;if("undefined"==typeof Object.getOwnPropertyNames)for(l in g.prototype){if("undefined"==typeof e.prototype[l]||e.prototype[l]==Object.prototype[l])e.prototype[l]=g.prototype[l]}else for(var q=Object.getOwnPropertyNames(g.prototype),z=0;z e||2147483647e?Math.ceil(e):Math.floor(e):~~e}:Ha&&"function"==typeof Number.toInteger?function(e){return Number.toInteger(e)}:Fb||Rb?function(e){return parseInt(e,10)}:eb?function(e){return-2147483648>e||2147483647e?Math.ceil(e):Math.floor(e):e|0}:function(e){return 0>e?Math.ceil(e):Math.floor(e)};r.Clear=function(e){e.length=0};r.PI=3.141592653589793;r.PI2=6.283185307179586;r.IntPoint=function(){var e=arguments,g=e.length;this.Y=this.X=0;r.use_xyz?(this.Z=0,3==g?(this.X=e[0],this.Y=e[1], this.Z=e[2]):2==g?(this.X=e[0],this.Y=e[1],this.Z=0):1==g?e[0]instanceof r.DoublePoint?(e=e[0],this.X=r.Clipper.Round(e.X),this.Y=r.Clipper.Round(e.Y),this.Z=0):(e=e[0],"undefined"==typeof e.Z&&(e.Z=0),this.X=e.X,this.Y=e.Y,this.Z=e.Z):this.Z=this.Y=this.X=0):2==g?(this.X=e[0],this.Y=e[1]):1==g?e[0]instanceof r.DoublePoint?(e=e[0],this.X=r.Clipper.Round(e.X),this.Y=r.Clipper.Round(e.Y)):(e=e[0],this.X=e.X,this.Y=e.Y):this.Y=this.X=0};r.IntPoint.op_Equality=function(e,g){return e.X==g.X&&e.Y==g.Y}; r.IntPoint.op_Inequality=function(e,g){return e.X!=g.X||e.Y!=g.Y};r.use_xyz?(r.IntPoint0=function(){this.Z=this.Y=this.X=0},r.IntPoint1=function(e){this.X=e.X;this.Y=e.Y;this.Z=e.Z},r.IntPoint1dp=function(e){this.X=r.Clipper.Round(e.X);this.Y=r.Clipper.Round(e.Y);this.Z=0},r.IntPoint2=function(e,g){this.X=e;this.Y=g;this.Z=0},r.IntPoint3=function(e,g,l){this.X=e;this.Y=g;this.Z=l}):(r.IntPoint0=function(){this.Y=this.X=0},r.IntPoint1=function(e){this.X=e.X;this.Y=e.Y},r.IntPoint1dp=function(e){this.X= r.Clipper.Round(e.X);this.Y=r.Clipper.Round(e.Y)},r.IntPoint2=function(e,g){this.X=e;this.Y=g});r.IntRect=function(){var e=arguments,g=e.length;4==g?(this.left=e[0],this.top=e[1],this.right=e[2],this.bottom=e[3]):1==g?(this.left=e[0].left,this.top=e[0].top,this.right=e[0].right,this.bottom=e[0].bottom):this.bottom=this.right=this.top=this.left=0};r.IntRect0=function(){this.bottom=this.right=this.top=this.left=0};r.IntRect1=function(e){this.left=e.left;this.top=e.top;this.right=e.right;this.bottom= e.bottom};r.IntRect4=function(e,g,l,q){this.left=e;this.top=g;this.right=l;this.bottom=q};r.ClipType={ctIntersection:0,ctUnion:1,ctDifference:2,ctXor:3};r.PolyType={ptSubject:0,ptClip:1};r.PolyFillType={pftEvenOdd:0,pftNonZero:1,pftPositive:2,pftNegative:3};r.JoinType={jtSquare:0,jtRound:1,jtMiter:2};r.EndType={etOpenSquare:0,etOpenRound:1,etOpenButt:2,etClosedLine:3,etClosedPolygon:4};r.EdgeSide={esLeft:0,esRight:1};r.Direction={dRightToLeft:0,dLeftToRight:1};r.TEdge=function(){this.Bot=new r.IntPoint; this.Curr=new r.IntPoint;this.Top=new r.IntPoint;this.Delta=new r.IntPoint;this.Dx=0;this.PolyTyp=r.PolyType.ptSubject;this.Side=r.EdgeSide.esLeft;this.OutIdx=this.WindCnt2=this.WindCnt=this.WindDelta=0;this.PrevInSEL=this.NextInSEL=this.PrevInAEL=this.NextInAEL=this.NextInLML=this.Prev=this.Next=null};r.IntersectNode=function(){this.Edge2=this.Edge1=null;this.Pt=new r.IntPoint};r.MyIntersectNodeSort=function(){};r.MyIntersectNodeSort.Compare=function(e,g){e=g.Pt.Y-e.Pt.Y;return 0e?-1:0};r.LocalMinima= function(){this.Y=0;this.Next=this.RightBound=this.LeftBound=null};r.Scanbeam=function(){this.Y=0;this.Next=null};r.OutRec=function(){this.Idx=0;this.IsOpen=this.IsHole=!1;this.PolyNode=this.BottomPt=this.Pts=this.FirstLeft=null};r.OutPt=function(){this.Idx=0;this.Pt=new r.IntPoint;this.Prev=this.Next=null};r.Join=function(){this.OutPt2=this.OutPt1=null;this.OffPt=new r.IntPoint};r.ClipperBase=function(){this.m_edges=[];this.PreserveCollinear=!1;this.m_CurrentLM=this.m_MinimaList=null;this.m_HasOpenPaths= this.m_UseFullRange=!1};r.ClipperBase.horizontal=-9007199254740992;r.ClipperBase.Skip=-2;r.ClipperBase.Unassigned=-1;r.ClipperBase.tolerance=1E-20;r.ClipperBase.loRange=47453132;r.ClipperBase.hiRange=0xfffffffffffff;r.ClipperBase.near_zero=function(e){return e>-r.ClipperBase.tolerance&&eg.X==e.Xg.Y==e.Yg.X==e.Xg.Y==e.Yr.ClipperBase.hiRange||e.Y>r.ClipperBase.hiRange||-e.X>r.ClipperBase.hiRange||-e.Y>r.ClipperBase.hiRange)&&r.Error("Coordinate outside allowed range in RangeTest().");else if(e.X>r.ClipperBase.loRange||e.Y>r.ClipperBase.loRange|| -e.X>r.ClipperBase.loRange||-e.Y>r.ClipperBase.loRange)g.Value=!0,this.RangeTest(e,g)};r.ClipperBase.prototype.InitEdge=function(e,g,l,q){e.Next=g;e.Prev=l;e.Curr.X=q.X;e.Curr.Y=q.Y;r.use_xyz&&(e.Curr.Z=q.Z);e.OutIdx=-1};r.ClipperBase.prototype.InitEdge2=function(e,g){e.Curr.Y>=e.Next.Curr.Y?(e.Bot.X=e.Curr.X,e.Bot.Y=e.Curr.Y,r.use_xyz&&(e.Bot.Z=e.Curr.Z),e.Top.X=e.Next.Curr.X,e.Top.Y=e.Next.Curr.Y,r.use_xyz&&(e.Top.Z=e.Next.Curr.Z)):(e.Top.X=e.Curr.X,e.Top.Y=e.Curr.Y,r.use_xyz&&(e.Top.Z=e.Curr.Z), e.Bot.X=e.Next.Curr.X,e.Bot.Y=e.Next.Curr.Y,r.use_xyz&&(e.Bot.Z=e.Next.Curr.Z));this.SetDx(e);e.PolyTyp=g};r.ClipperBase.prototype.FindNextLocMin=function(e){for(var g;;){for(;r.IntPoint.op_Inequality(e.Bot,e.Prev.Bot)||r.IntPoint.op_Equality(e.Curr,e.Top);)e=e.Next;if(e.Dx!=r.ClipperBase.horizontal&&e.Prev.Dx!=r.ClipperBase.horizontal)break;for(;e.Prev.Dx==r.ClipperBase.horizontal;)e=e.Prev;for(g=e;e.Dx==r.ClipperBase.horizontal;)e=e.Next;if(e.Top.Y!=e.Prev.Bot.Y){g.Prev.Bot.Xq.Next.Top.X&&(q=z.Prev)}for(;e!=q;)e.NextInLML=e.Next, e.Dx==r.ClipperBase.horizontal&&e!=l&&e.Bot.X!=e.Prev.Top.X&&this.ReverseHorizontal(e),e=e.Next;e.Dx==r.ClipperBase.horizontal&&e!=l&&e.Bot.X!=e.Prev.Top.X&&this.ReverseHorizontal(e);q=q.Next}else{for(;q.Top.Y==q.Prev.Bot.Y&&q.Prev.OutIdx!=r.ClipperBase.Skip;)q=q.Prev;if(q.Dx==r.ClipperBase.horizontal&&q.Prev.OutIdx!=r.ClipperBase.Skip){for(z=q;z.Next.Dx==r.ClipperBase.horizontal;)z=z.Next;z.Next.Top.X==q.Prev.Top.X?g||(q=z.Next):z.Next.Top.X>q.Prev.Top.X&&(q=z.Next)}for(;e!=q;)e.NextInLML=e.Prev, e.Dx==r.ClipperBase.horizontal&&e!=l&&e.Bot.X!=e.Next.Top.X&&this.ReverseHorizontal(e),e=e.Prev;e.Dx==r.ClipperBase.horizontal&&e!=l&&e.Bot.X!=e.Next.Top.X&&this.ReverseHorizontal(e);q=q.Prev}return q};r.ClipperBase.prototype.AddPath=function(e,g,l){r.use_lines?l||g!=r.PolyType.ptClip||r.Error("AddPath: Open paths must be subject."):l||r.Error("AddPath: Open paths have been disabled.");var q=e.length-1;if(l)for(;0q||!l&&1>q)return!1;for(var z=[],E=0;E<=q;E++)z.push(new r.TEdge);var L=!0;z[1].Curr.X=e[1].X;z[1].Curr.Y=e[1].Y;r.use_xyz&&(z[1].Curr.Z=e[1].Z);var ca={Value:this.m_UseFullRange};this.RangeTest(e[0],ca);this.m_UseFullRange=ca.Value;ca.Value=this.m_UseFullRange;this.RangeTest(e[q],ca);this.m_UseFullRange=ca.Value;this.InitEdge(z[0],z[1],z[q],e[0]);this.InitEdge(z[q],z[0],z[q-1],e[q]);for(E=q-1;1<=E;--E)ca.Value=this.m_UseFullRange,this.RangeTest(e[E],ca),this.m_UseFullRange=ca.Value, this.InitEdge(z[E],z[E+1],z[E-1],e[E]);for(E=e=q=z[0];;)if(e.Curr!=e.Next.Curr||!l&&e.Next==q){if(e.Prev==e.Next)break;else if(l&&r.ClipperBase.SlopesEqual(e.Prev.Curr,e.Curr,e.Next.Curr,this.m_UseFullRange)&&(!this.PreserveCollinear||!this.Pt2IsBetweenPt1AndPt3(e.Prev.Curr,e.Curr,e.Next.Curr))){e==q&&(q=e.Next);e=this.RemoveEdge(e);E=e=e.Prev;continue}e=e.Next;if(e==E||!l&&e.Next==q)break}else{if(e==e.Next)break;e==q&&(q=e.Next);E=e=this.RemoveEdge(e)}if(!l&&e==e.Next||l&&e.Prev==e.Next)return!1; l||(this.m_HasOpenPaths=!0,q.Prev.OutIdx=r.ClipperBase.Skip);e=q;do this.InitEdge2(e,g),e=e.Next,L&&e.Curr.Y!=q.Curr.Y&&(L=!1);while(e!=q);if(L){if(l)return!1;e.Prev.OutIdx=r.ClipperBase.Skip;e.Prev.Bot.Xe.X==g.Xe.Y==g.Y=this.m_MinimaList.Y)e.Next=this.m_MinimaList,this.m_MinimaList=e;else{for(var g=this.m_MinimaList;null!==g.Next&&e.Ythis.m_Scanbeam.Y){var g=new r.Scanbeam;g.Y=e;g.Next=this.m_Scanbeam;this.m_Scanbeam=g}else{for(var l=this.m_Scanbeam;null!== l.Next&&e<=l.Next.Y;)l=l.Next;e!=l.Y&&(g=new r.Scanbeam,g.Y=e,g.Next=l.Next,l.Next=g)}};r.Clipper.prototype.Execute=function(){var e=arguments,g=e.length,l=e[1]instanceof r.PolyTree;if(4!=g||l){if(4==g&&l){g=e[0];var q=e[1];l=e[2];e=e[3];if(this.m_ExecuteLocked)return!1;this.m_ExecuteLocked=!0;this.m_SubjFillType=l;this.m_ClipFillType=e;this.m_ClipType=g;this.m_UsingPolyTree=!0;try{(z=this.ExecuteInternal())&&this.BuildResult2(q)}finally{this.DisposeAllPolyPts(),this.m_ExecuteLocked=!1}return z}if(2== g&&!l||2==g&&l)return g=e[0],q=e[1],this.Execute(g,q,r.PolyFillType.pftEvenOdd,r.PolyFillType.pftEvenOdd)}else{g=e[0];q=e[1];l=e[2];e=e[3];if(this.m_ExecuteLocked)return!1;this.m_HasOpenPaths&&r.Error("Error: PolyTree struct is need for open path clipping.");this.m_ExecuteLocked=!0;r.Clear(q);this.m_SubjFillType=l;this.m_ClipFillType=e;this.m_ClipType=g;this.m_UsingPolyTree=!1;try{var z=this.ExecuteInternal();z&&this.BuildResult(q)}finally{this.DisposeAllPolyPts(),this.m_ExecuteLocked=!1}return z}}; r.Clipper.prototype.FixHoleLinkage=function(e){if(null!==e.FirstLeft&&(e.IsHole==e.FirstLeft.IsHole||null===e.FirstLeft.Pts)){for(var g=e.FirstLeft;null!==g&&(g.IsHole==e.IsHole||null===g.Pts);)g=g.FirstLeft;e.FirstLeft=g}};r.Clipper.prototype.ExecuteInternal=function(){try{this.Reset();if(null===this.m_CurrentLM)return!1;var e=this.PopScanbeam();do{this.InsertLocalMinimaIntoAEL(e);r.Clear(this.m_GhostJoins);this.ProcessHorizontals(!1);if(null===this.m_Scanbeam)break;var g=this.PopScanbeam();if(!this.ProcessIntersections(g))return!1; this.ProcessEdgesAtTopOfScanbeam(g);e=g}while(null!==this.m_Scanbeam||null!==this.m_CurrentLM);e=0;for(var l=this.m_PolyOuts.length;ee.Top.Y?g.Top.Xr.Clipper.TopX(g,e.Top.Y):g.Curr.Xe.WindCnt2}case r.ClipType.ctUnion:switch(l){case r.PolyFillType.pftEvenOdd:case r.PolyFillType.pftNonZero:return 0===e.WindCnt2;case r.PolyFillType.pftPositive:return 0>=e.WindCnt2;default:return 0<=e.WindCnt2}case r.ClipType.ctDifference:if(e.PolyTyp==r.PolyType.ptSubject)switch(l){case r.PolyFillType.pftEvenOdd:case r.PolyFillType.pftNonZero:return 0===e.WindCnt2;case r.PolyFillType.pftPositive:return 0>=e.WindCnt2; default:return 0<=e.WindCnt2}else switch(l){case r.PolyFillType.pftEvenOdd:case r.PolyFillType.pftNonZero:return 0!==e.WindCnt2;case r.PolyFillType.pftPositive:return 0e.WindCnt2}case r.ClipType.ctXor:if(0===e.WindDelta)switch(l){case r.PolyFillType.pftEvenOdd:case r.PolyFillType.pftNonZero:return 0===e.WindCnt2;case r.PolyFillType.pftPositive:return 0>=e.WindCnt2;default:return 0<=e.WindCnt2}}return!0};r.Clipper.prototype.SetWindingCount=function(e){for(var g=e.PrevInAEL;null!== g&&(g.PolyTyp!=e.PolyTyp||0===g.WindDelta);)g=g.PrevInAEL;if(null===g)e.WindCnt=0===e.WindDelta?1:e.WindDelta,e.WindCnt2=0,g=this.m_ActiveEdges;else{if(0===e.WindDelta&&this.m_ClipType!=r.ClipType.ctUnion)e.WindCnt=1;else if(this.IsEvenOddFillType(e))if(0===e.WindDelta){for(var l=!0,q=g.PrevInAEL;null!==q;)q.PolyTyp==g.PolyTyp&&0!==q.WindDelta&&(l=!l),q=q.PrevInAEL;e.WindCnt=l?0:1}else e.WindCnt=e.WindDelta;else e.WindCnt=0>g.WindCnt*g.WindDelta?1g.WindDelta*e.WindDelta?g.WindCnt: g.WindCnt+e.WindDelta:0===e.WindDelta?1:e.WindDelta:0===e.WindDelta?0>g.WindCnt?g.WindCnt-1:g.WindCnt+1:0>g.WindDelta*e.WindDelta?g.WindCnt:g.WindCnt+e.WindDelta;e.WindCnt2=g.WindCnt2;g=g.NextInAEL}if(this.IsEvenOddAltFillType(e))for(;g!=e;)0!==g.WindDelta&&(e.WindCnt2=0===e.WindCnt2?1:0),g=g.NextInAEL;else for(;g!=e;)e.WindCnt2+=g.WindDelta,g=g.NextInAEL};r.Clipper.prototype.AddEdgeToSEL=function(e){null===this.m_SortedEdges?(this.m_SortedEdges=e,e.PrevInSEL=null,e.NextInSEL=null):(e.NextInSEL=this.m_SortedEdges, e.PrevInSEL=null,this.m_SortedEdges=this.m_SortedEdges.PrevInSEL=e)};r.Clipper.prototype.CopyAELToSEL=function(){var e=this.m_ActiveEdges;for(this.m_SortedEdges=e;null!==e;)e.PrevInSEL=e.PrevInAEL,e=e.NextInSEL=e.NextInAEL};r.Clipper.prototype.SwapPositionsInAEL=function(e,g){if(e.NextInAEL!=e.PrevInAEL&&g.NextInAEL!=g.PrevInAEL){if(e.NextInAEL==g){var l=g.NextInAEL;null!==l&&(l.PrevInAEL=e);var q=e.PrevInAEL;null!==q&&(q.NextInAEL=g);g.PrevInAEL=q;g.NextInAEL=e;e.PrevInAEL=g;e.NextInAEL=l}else g.NextInAEL== e?(l=e.NextInAEL,null!==l&&(l.PrevInAEL=g),q=g.PrevInAEL,null!==q&&(q.NextInAEL=e),e.PrevInAEL=q,e.NextInAEL=g,g.PrevInAEL=e,g.NextInAEL=l):(l=e.NextInAEL,q=e.PrevInAEL,e.NextInAEL=g.NextInAEL,null!==e.NextInAEL&&(e.NextInAEL.PrevInAEL=e),e.PrevInAEL=g.PrevInAEL,null!==e.PrevInAEL&&(e.PrevInAEL.NextInAEL=e),g.NextInAEL=l,null!==g.NextInAEL&&(g.NextInAEL.PrevInAEL=g),g.PrevInAEL=q,null!==g.PrevInAEL&&(g.PrevInAEL.NextInAEL=g));null===e.PrevInAEL?this.m_ActiveEdges=e:null===g.PrevInAEL&&(this.m_ActiveEdges= g)}};r.Clipper.prototype.SwapPositionsInSEL=function(e,g){if(null!==e.NextInSEL||null!==e.PrevInSEL)if(null!==g.NextInSEL||null!==g.PrevInSEL){if(e.NextInSEL==g){var l=g.NextInSEL;null!==l&&(l.PrevInSEL=e);var q=e.PrevInSEL;null!==q&&(q.NextInSEL=g);g.PrevInSEL=q;g.NextInSEL=e;e.PrevInSEL=g;e.NextInSEL=l}else g.NextInSEL==e?(l=e.NextInSEL,null!==l&&(l.PrevInSEL=g),q=g.PrevInSEL,null!==q&&(q.NextInSEL=e),e.PrevInSEL=q,e.NextInSEL=g,g.PrevInSEL=e,g.NextInSEL=l):(l=e.NextInSEL,q=e.PrevInSEL,e.NextInSEL= g.NextInSEL,null!==e.NextInSEL&&(e.NextInSEL.PrevInSEL=e),e.PrevInSEL=g.PrevInSEL,null!==e.PrevInSEL&&(e.PrevInSEL.NextInSEL=e),g.NextInSEL=l,null!==g.NextInSEL&&(g.NextInSEL.PrevInSEL=g),g.PrevInSEL=q,null!==g.PrevInSEL&&(g.PrevInSEL.NextInSEL=g));null===e.PrevInSEL?this.m_SortedEdges=e:null===g.PrevInSEL&&(this.m_SortedEdges=g)}};r.Clipper.prototype.AddLocalMaxPoly=function(e,g,l){this.AddOutPt(e,l);0==g.WindDelta&&this.AddOutPt(g,l);e.OutIdx==g.OutIdx?(e.OutIdx=-1,g.OutIdx=-1):e.OutIdxg.Dx?(q=this.AddOutPt(e,l),g.OutIdx=e.OutIdx,e.Side=r.EdgeSide.esLeft,g.Side=r.EdgeSide.esRight,z=e,e=z.PrevInAEL==g?g.PrevInAEL:z.PrevInAEL):(q=this.AddOutPt(g,l),e.OutIdx=g.OutIdx,e.Side=r.EdgeSide.esRight,g.Side=r.EdgeSide.esLeft,z=g,e=z.PrevInAEL==e?e.PrevInAEL:z.PrevInAEL);null!==e&&0<=e.OutIdx&&r.Clipper.TopX(e,l.Y)==r.Clipper.TopX(z,l.Y)&&r.ClipperBase.SlopesEqual(z, e,this.m_UseFullRange)&&0!==z.WindDelta&&0!==e.WindDelta&&(l=this.AddOutPt(e,l),this.AddJoin(q,l,z.Top));return q};r.Clipper.prototype.CreateOutRec=function(){var e=new r.OutRec;e.Idx=-1;e.IsHole=!1;e.IsOpen=!1;e.FirstLeft=null;e.Pts=null;e.BottomPt=null;e.PolyNode=null;this.m_PolyOuts.push(e);e.Idx=this.m_PolyOuts.length-1;return e};r.Clipper.prototype.AddOutPt=function(e,g){var l=e.Side==r.EdgeSide.esLeft;if(0>e.OutIdx){var q=this.CreateOutRec();q.IsOpen=0===e.WindDelta;var z=new r.OutPt;q.Pts= z;z.Idx=q.Idx;z.Pt.X=g.X;z.Pt.Y=g.Y;r.use_xyz&&(z.Pt.Z=g.Z);z.Next=z;z.Prev=z;q.IsOpen||this.SetHoleState(e,q);e.OutIdx=q.Idx}else{q=this.m_PolyOuts[e.OutIdx];e=q.Pts;if(l&&r.IntPoint.op_Equality(g,e.Pt))return e;if(!l&&r.IntPoint.op_Equality(g,e.Prev.Pt))return e.Prev;z=new r.OutPt;z.Idx=q.Idx;z.Pt.X=g.X;z.Pt.Y=g.Y;r.use_xyz&&(z.Pt.Z=g.Z);z.Next=e;z.Prev=e.Prev;z.Prev.Next=z;e.Prev=z;l&&(q.Pts=z)}return z};r.Clipper.prototype.SwapPoints=function(e,g){var l=new r.IntPoint(e.Value);e.Value.X=g.Value.X; e.Value.Y=g.Value.Y;r.use_xyz&&(e.Value.Z=g.Value.Z);g.Value.X=l.X;g.Value.Y=l.Y;r.use_xyz&&(g.Value.Z=l.Z)};r.Clipper.prototype.HorzSegmentsOverlap=function(e,g,l,q){var z;e>g&&(z=e,e=g,g=z);l>q&&(z=l,l=q,q=z);return e=z&&q>=l||e>=z&&e>=l}; r.Clipper.prototype.GetBottomPt=function(e){for(var g=null,l=e.Next;l!=e;)l.Pt.Y>e.Pt.Y?(e=l,g=null):l.Pt.Y==e.Pt.Y&&l.Pt.X<=e.Pt.X&&(l.Pt.Xq.Pt.Y?e:l.Pt.Yq.Pt.X?g:l.Next==l?g:q.Next==q?e:this.FirstIsBottomPt(l,q)?e:g};r.Clipper.prototype.Param1RightOfParam2=function(e,g){do if(e=e.FirstLeft,e==g)return!0;while(null!==e);return!1};r.Clipper.prototype.GetOutRec=function(e){for(e=this.m_PolyOuts[e];e!=this.m_PolyOuts[e.Idx];)e=this.m_PolyOuts[e.Idx];return e};r.Clipper.prototype.AppendPolygon=function(e,g){var l=this.m_PolyOuts[e.OutIdx],q=this.m_PolyOuts[g.OutIdx];var z=this.Param1RightOfParam2(l, q)?q:this.Param1RightOfParam2(q,l)?l:this.GetLowermostRec(l,q);var E=l.Pts,L=E.Prev,ca=q.Pts,la=ca.Prev;e.Side==r.EdgeSide.esLeft?(g.Side==r.EdgeSide.esLeft?(this.ReversePolyPtLinks(ca),ca.Next=E,E.Prev=ca,L.Next=la,la.Prev=L,l.Pts=la):(la.Next=E,E.Prev=la,ca.Prev=L,L.Next=ca,l.Pts=ca),E=r.EdgeSide.esLeft):(g.Side==r.EdgeSide.esRight?(this.ReversePolyPtLinks(ca),L.Next=la,la.Prev=L,ca.Next=E,E.Prev=ca):(L.Next=ca,ca.Prev=L,E.Prev=la,la.Next=E),E=r.EdgeSide.esRight);l.BottomPt=null;z==q&&(q.FirstLeft!= l&&(l.FirstLeft=q.FirstLeft),l.IsHole=q.IsHole);q.Pts=null;q.BottomPt=null;q.FirstLeft=l;z=e.OutIdx;L=g.OutIdx;e.OutIdx=-1;g.OutIdx=-1;for(ca=this.m_ActiveEdges;null!==ca;){if(ca.OutIdx==L){ca.OutIdx=z;ca.Side=E;break}ca=ca.NextInAEL}q.Idx=l.Idx};r.Clipper.prototype.ReversePolyPtLinks=function(e){if(null!==e){var g=e;do{var l=g.Next;g.Next=g.Prev;g=g.Prev=l}while(g!=e)}};r.Clipper.SwapSides=function(e,g){var l=e.Side;e.Side=g.Side;g.Side=l};r.Clipper.SwapPolyIndexes=function(e,g){var l=e.OutIdx;e.OutIdx= g.OutIdx;g.OutIdx=l};r.Clipper.prototype.IntersectEdges=function(e,g,l){var q=0<=e.OutIdx,z=0<=g.OutIdx;r.use_xyz&&this.SetZ(l,e,g);if(!r.use_lines||0!==e.WindDelta&&0!==g.WindDelta){if(e.PolyTyp==g.PolyTyp)if(this.IsEvenOddFillType(e)){var E=e.WindCnt;e.WindCnt=g.WindCnt;g.WindCnt=E}else e.WindCnt=0===e.WindCnt+g.WindDelta?-e.WindCnt:e.WindCnt+g.WindDelta,g.WindCnt=0===g.WindCnt-e.WindDelta?-g.WindCnt:g.WindCnt-e.WindDelta;else this.IsEvenOddFillType(g)?e.WindCnt2=0===e.WindCnt2?1:0:e.WindCnt2+= g.WindDelta,this.IsEvenOddFillType(e)?g.WindCnt2=0===g.WindCnt2?1:0:g.WindCnt2-=e.WindDelta;var L,ca,la;e.PolyTyp==r.PolyType.ptSubject?(L=this.m_SubjFillType,la=this.m_ClipFillType):(L=this.m_ClipFillType,la=this.m_SubjFillType);g.PolyTyp==r.PolyType.ptSubject?(ca=this.m_SubjFillType,E=this.m_ClipFillType):(ca=this.m_ClipFillType,E=this.m_SubjFillType);switch(L){case r.PolyFillType.pftPositive:L=e.WindCnt;break;case r.PolyFillType.pftNegative:L=-e.WindCnt;break;default:L=Math.abs(e.WindCnt)}switch(ca){case r.PolyFillType.pftPositive:ca= g.WindCnt;break;case r.PolyFillType.pftNegative:ca=-g.WindCnt;break;default:ca=Math.abs(g.WindCnt)}if(q&&z)0!=L&&1!=L||0!=ca&&1!=ca||e.PolyTyp!=g.PolyTyp&&this.m_ClipType!=r.ClipType.ctXor?this.AddLocalMaxPoly(e,g,l):(this.AddOutPt(e,l),this.AddOutPt(g,l),r.Clipper.SwapSides(e,g),r.Clipper.SwapPolyIndexes(e,g));else if(q){if(0===ca||1==ca)this.AddOutPt(e,l),r.Clipper.SwapSides(e,g),r.Clipper.SwapPolyIndexes(e,g)}else if(z){if(0===L||1==L)this.AddOutPt(g,l),r.Clipper.SwapSides(e,g),r.Clipper.SwapPolyIndexes(e, g)}else if(!(0!=L&&1!=L||0!=ca&&1!=ca)){switch(la){case r.PolyFillType.pftPositive:q=e.WindCnt2;break;case r.PolyFillType.pftNegative:q=-e.WindCnt2;break;default:q=Math.abs(e.WindCnt2)}switch(E){case r.PolyFillType.pftPositive:z=g.WindCnt2;break;case r.PolyFillType.pftNegative:z=-g.WindCnt2;break;default:z=Math.abs(g.WindCnt2)}if(e.PolyTyp!=g.PolyTyp)this.AddLocalMinPoly(e,g,l);else if(1==L&&1==ca)switch(this.m_ClipType){case r.ClipType.ctIntersection:0= q&&0>=z&&this.AddLocalMinPoly(e,g,l);break;case r.ClipType.ctDifference:(e.PolyTyp==r.PolyType.ptClip&&0=q&&0>=z)&&this.AddLocalMinPoly(e,g,l);break;case r.ClipType.ctXor:this.AddLocalMinPoly(e,g,l)}else r.Clipper.SwapSides(e,g)}}else if(0!=e.WindDelta||0!=g.WindDelta)e.PolyTyp==g.PolyTyp&&e.WindDelta!=g.WindDelta&&this.m_ClipType==r.ClipType.ctUnion?0===e.WindDelta?z&&(this.AddOutPt(e,l),q&&(e.OutIdx=-1)):q&&(this.AddOutPt(g,l),z&&(g.OutIdx=-1)):e.PolyTyp!= g.PolyTyp&&(0!==e.WindDelta||1!=Math.abs(g.WindCnt)||this.m_ClipType==r.ClipType.ctUnion&&0!==g.WindCnt2?0!==g.WindDelta||1!=Math.abs(e.WindCnt)||this.m_ClipType==r.ClipType.ctUnion&&0!==e.WindCnt2||(this.AddOutPt(g,l),z&&(g.OutIdx=-1)):(this.AddOutPt(e,l),q&&(e.OutIdx=-1)))};r.Clipper.prototype.DeleteFromAEL=function(e){var g=e.PrevInAEL,l=e.NextInAEL;if(null!==g||null!==l||e==this.m_ActiveEdges)null!==g?g.NextInAEL=l:this.m_ActiveEdges=l,null!==l&&(l.PrevInAEL=g),e.NextInAEL=null,e.PrevInAEL=null}; r.Clipper.prototype.DeleteFromSEL=function(e){var g=e.PrevInSEL,l=e.NextInSEL;if(null!==g||null!==l||e==this.m_SortedEdges)null!==g?g.NextInSEL=l:this.m_SortedEdges=l,null!==l&&(l.PrevInSEL=g),e.NextInSEL=null,e.PrevInSEL=null};r.Clipper.prototype.UpdateEdgeIntoAEL=function(e){null===e.NextInLML&&r.Error("UpdateEdgeIntoAEL: invalid call");var g=e.PrevInAEL,l=e.NextInAEL;e.NextInLML.OutIdx=e.OutIdx;null!==g?g.NextInAEL=e.NextInLML:this.m_ActiveEdges=e.NextInLML;null!==l&&(l.PrevInAEL=e.NextInLML); e.NextInLML.Side=e.Side;e.NextInLML.WindDelta=e.WindDelta;e.NextInLML.WindCnt=e.WindCnt;e.NextInLML.WindCnt2=e.WindCnt2;e=e.NextInLML;e.Curr.X=e.Bot.X;e.Curr.Y=e.Bot.Y;r.use_xyz&&(e.Curr.Z=e.Bot.Z);e.PrevInAEL=g;e.NextInAEL=l;r.ClipperBase.IsHorizontal(e)||this.InsertScanbeam(e.Top.Y);return e};r.Clipper.prototype.ProcessHorizontals=function(e){for(var g=this.m_SortedEdges;null!==g;)this.DeleteFromSEL(g),this.ProcessHorizontal(g,e),g=this.m_SortedEdges};r.Clipper.prototype.GetHorzDirection=function(e, g){e.Bot.X=z){if(pa==ca&&la){if(0<=e.OutIdx){q=this.AddOutPt(e,e.Top);for(l=this.m_SortedEdges;null!==l;)0<=l.OutIdx&&this.HorzSegmentsOverlap(e.Bot.X,e.Top.X,l.Bot.X,l.Top.X)&&(z=this.AddOutPt(l,l.Bot),this.AddJoin(z,q,l.Top)),l=l.NextInSEL;this.AddGhostJoin(q,e.Bot);this.AddLocalMaxPoly(e,ca,e.Top)}this.DeleteFromAEL(e);this.DeleteFromAEL(ca); return}if(q==r.Direction.dLeftToRight){var La=new r.IntPoint(pa.Curr.X,e.Curr.Y);this.IntersectEdges(e,pa,La)}else La=new r.IntPoint(pa.Curr.X,e.Curr.Y),this.IntersectEdges(pa,e,La);this.SwapPositionsInAEL(e,pa)}else if(q==r.Direction.dLeftToRight&&pa.Curr.X>=E||q==r.Direction.dRightToLeft&&pa.Curr.X<=z)break;pa=l}if(null!==e.NextInLML&&r.ClipperBase.IsHorizontal(e.NextInLML))e=this.UpdateEdgeIntoAEL(e),0<=e.OutIdx&&this.AddOutPt(e,e.Bot),l={Dir:q,Left:z,Right:E},this.GetHorzDirection(e,l),q=l.Dir, z=l.Left,E=l.Right;else break}null!==e.NextInLML?0<=e.OutIdx?(q=this.AddOutPt(e,e.Top),g&&this.AddGhostJoin(q,e.Bot),e=this.UpdateEdgeIntoAEL(e),0!==e.WindDelta&&(ca=e.PrevInAEL,l=e.NextInAEL,null!==ca&&ca.Curr.X==e.Bot.X&&ca.Curr.Y==e.Bot.Y&&0!==ca.WindDelta&&0<=ca.OutIdx&&ca.Curr.Y>ca.Top.Y&&r.ClipperBase.SlopesEqual(e,ca,this.m_UseFullRange)?(z=this.AddOutPt(ca,e.Bot),this.AddJoin(q,z,e.Top)):null!==l&&l.Curr.X==e.Bot.X&&l.Curr.Y==e.Bot.Y&&0!==l.WindDelta&&0<=l.OutIdx&&l.Curr.Y>l.Top.Y&&r.ClipperBase.SlopesEqual(e, l,this.m_UseFullRange)&&(z=this.AddOutPt(l,e.Bot),this.AddJoin(q,z,e.Top)))):this.UpdateEdgeIntoAEL(e):(0<=e.OutIdx&&this.AddOutPt(e,e.Top),this.DeleteFromAEL(e))};r.Clipper.prototype.GetNextInAEL=function(e,g){return g==r.Direction.dLeftToRight?e.NextInAEL:e.PrevInAEL};r.Clipper.prototype.IsMinima=function(e){return null!==e&&e.Prev.NextInLML!=e&&e.Next.NextInLML!=e};r.Clipper.prototype.IsMaxima=function(e,g){return null!==e&&e.Top.Y==g&&null===e.NextInLML};r.Clipper.prototype.IsIntermediate=function(e, g){return e.Top.Y==g&&null!==e.NextInLML};r.Clipper.prototype.GetMaximaPair=function(e){var g=null;r.IntPoint.op_Equality(e.Next.Top,e.Top)&&null===e.Next.NextInLML?g=e.Next:r.IntPoint.op_Equality(e.Prev.Top,e.Top)&&null===e.Prev.NextInLML&&(g=e.Prev);return null===g||-2!=g.OutIdx&&(g.NextInAEL!=g.PrevInAEL||r.ClipperBase.IsHorizontal(g))?g:null};r.Clipper.prototype.ProcessIntersections=function(e){if(null==this.m_ActiveEdges)return!0;try{this.BuildIntersectList(e);if(0==this.m_IntersectList.length)return!0; if(1==this.m_IntersectList.length||this.FixupIntersectionOrder())this.ProcessIntersectList();else return!1}catch(g){this.m_SortedEdges=null,this.m_IntersectList.length=0,r.Error("ProcessIntersections error")}this.m_SortedEdges=null;return!0};r.Clipper.prototype.BuildIntersectList=function(e){if(null!==this.m_ActiveEdges){var g=this.m_ActiveEdges;for(this.m_SortedEdges=g;null!==g;)g.PrevInSEL=g.PrevInAEL,g.NextInSEL=g.NextInAEL,g.Curr.X=r.Clipper.TopX(g,e),g=g.NextInAEL;for(var l=!0;l&&null!==this.m_SortedEdges;){l= !1;for(g=this.m_SortedEdges;null!==g.NextInSEL;){e=g.NextInSEL;var q=new r.IntPoint;g.Curr.X>e.Curr.X?(this.IntersectPoint(g,e,q),l=new r.IntersectNode,l.Edge1=g,l.Edge2=e,l.Pt.X=q.X,l.Pt.Y=q.Y,r.use_xyz&&(l.Pt.Z=q.Z),this.m_IntersectList.push(l),this.SwapPositionsInSEL(g,e),l=!0):g=e}if(null!==g.PrevInSEL)g.PrevInSEL.NextInSEL=null;else break}this.m_SortedEdges=null}};r.Clipper.prototype.EdgesAdjacent=function(e){return e.Edge1.NextInSEL==e.Edge2||e.Edge1.PrevInSEL==e.Edge2};r.Clipper.IntersectNodeSort= function(e,g){return g.Pt.Y-e.Pt.Y};r.Clipper.prototype.FixupIntersectionOrder=function(){this.m_IntersectList.sort(this.m_IntersectNodeComparer);this.CopyAELToSEL();for(var e=this.m_IntersectList.length,g=0;ge?Math.ceil(e-.5):Math.round(e)};Ha=function(e){return 0>e?Math.ceil(e-.5):Math.floor(e+.5)};Jb=function(e){return 0>e?-Math.round(Math.abs(e)):Math.round(e)};Rb=function(e){if(0>e)return e-= .5,-2147483648>e?Math.ceil(e):e|0;e+=.5;return 2147483647g.Top.Y)return l.Y=e.Top.Y,l.X=r.Clipper.TopX(g,e.Top.Y),l.Xe.Curr.Y&&(l.Y= e.Curr.Y,l.X=Math.abs(e.Dx)>Math.abs(g.Dx)?r.Clipper.TopX(g,l.Y):r.Clipper.TopX(e,l.Y))}};r.Clipper.prototype.ProcessEdgesAtTopOfScanbeam=function(e){for(var g=this.m_ActiveEdges;null!==g;){var l=this.IsMaxima(g,e);l&&(l=this.GetMaximaPair(g),l=null===l||!r.ClipperBase.IsHorizontal(l));if(l){var q=g.PrevInAEL;this.DoMaxima(g);g=null===q?this.m_ActiveEdges:q.NextInAEL}else{this.IsIntermediate(g,e)&&r.ClipperBase.IsHorizontal(g.NextInLML)?(g=this.UpdateEdgeIntoAEL(g),0<=g.OutIdx&&this.AddOutPt(g,g.Bot), this.AddEdgeToSEL(g)):(g.Curr.X=r.Clipper.TopX(g,e),g.Curr.Y=e);if(this.StrictlySimple&&(q=g.PrevInAEL,0<=g.OutIdx&&0!==g.WindDelta&&null!==q&&0<=q.OutIdx&&q.Curr.X==g.Curr.X&&0!==q.WindDelta)){var z=new r.IntPoint(g.Curr);r.use_xyz&&this.SetZ(z,q,g);l=this.AddOutPt(q,z);q=this.AddOutPt(g,z);this.AddJoin(l,q,z)}g=g.NextInAEL}}this.ProcessHorizontals(!0);for(g=this.m_ActiveEdges;null!==g;)this.IsIntermediate(g,e)&&(l=null,0<=g.OutIdx&&(l=this.AddOutPt(g,g.Top)),g=this.UpdateEdgeIntoAEL(g),q=g.PrevInAEL, z=g.NextInAEL,null!==q&&q.Curr.X==g.Bot.X&&q.Curr.Y==g.Bot.Y&&null!==l&&0<=q.OutIdx&&q.Curr.Y>q.Top.Y&&r.ClipperBase.SlopesEqual(g,q,this.m_UseFullRange)&&0!==g.WindDelta&&0!==q.WindDelta?(q=this.AddOutPt(q,g.Bot),this.AddJoin(l,q,g.Top)):null!==z&&z.Curr.X==g.Bot.X&&z.Curr.Y==g.Bot.Y&&null!==l&&0<=z.OutIdx&&z.Curr.Y>z.Top.Y&&r.ClipperBase.SlopesEqual(g,z,this.m_UseFullRange)&&0!==g.WindDelta&&0!==z.WindDelta&&(q=this.AddOutPt(z,g.Bot),this.AddJoin(l,q,g.Top))),g=g.NextInAEL};r.Clipper.prototype.DoMaxima= function(e){var g=this.GetMaximaPair(e);if(null===g)0<=e.OutIdx&&this.AddOutPt(e,e.Top),this.DeleteFromAEL(e);else{for(var l=e.NextInAEL;null!==l&&l!=g;)this.IntersectEdges(e,l,e.Top),this.SwapPositionsInAEL(e,l),l=e.NextInAEL;-1==e.OutIdx&&-1==g.OutIdx?(this.DeleteFromAEL(e),this.DeleteFromAEL(g)):0<=e.OutIdx&&0<=g.OutIdx?(0<=e.OutIdx&&this.AddLocalMaxPoly(e,g,e.Top),this.DeleteFromAEL(e),this.DeleteFromAEL(g)):r.use_lines&&0===e.WindDelta?(0<=e.OutIdx&&(this.AddOutPt(e,e.Top),e.OutIdx=-1),this.DeleteFromAEL(e), 0<=g.OutIdx&&(this.AddOutPt(g,e.Top),g.OutIdx=-1),this.DeleteFromAEL(g)):r.Error("DoMaxima error")}};r.Clipper.ReversePaths=function(e){for(var g=0,l=e.length;gz)){for(var E=Array(z),L=0;Lz||!q.IsOpen&&3>z)){this.FixHoleLinkage(q);var E=new r.PolyNode;e.m_AllPolys.push(E);q.PolyNode=E;E.m_polygon.length=z;q=q.Pts.Prev;for(var L=0;Lg.Pt.X?r.Direction.dRightToLeft:r.Direction.dLeftToRight;q=l.Pt.X>q.Pt.X?r.Direction.dRightToLeft:r.Direction.dLeftToRight;if(L==q)return!1;if(L==r.Direction.dLeftToRight){for(;e.Next.Pt.X<=z.X&&e.Next.Pt.X>=e.Pt.X&&e.Next.Pt.Y==z.Y;)e=e.Next;E&&e.Pt.X!= z.X&&(e=e.Next);g=this.DupOutPt(e,!E);r.IntPoint.op_Inequality(g.Pt,z)&&(e=g,e.Pt.X=z.X,e.Pt.Y=z.Y,r.use_xyz&&(e.Pt.Z=z.Z),g=this.DupOutPt(e,!E))}else{for(;e.Next.Pt.X>=z.X&&e.Next.Pt.X<=e.Pt.X&&e.Next.Pt.Y==z.Y;)e=e.Next;E||e.Pt.X==z.X||(e=e.Next);g=this.DupOutPt(e,E);r.IntPoint.op_Inequality(g.Pt,z)&&(e=g,e.Pt.X=z.X,e.Pt.Y=z.Y,r.use_xyz&&(e.Pt.Z=z.Z),g=this.DupOutPt(e,E))}if(q==r.Direction.dLeftToRight){for(;l.Next.Pt.X<=z.X&&l.Next.Pt.X>=l.Pt.X&&l.Next.Pt.Y==z.Y;)l=l.Next;E&&l.Pt.X!=z.X&&(l=l.Next); q=this.DupOutPt(l,!E);r.IntPoint.op_Inequality(q.Pt,z)&&(l=q,l.Pt.X=z.X,l.Pt.Y=z.Y,r.use_xyz&&(l.Pt.Z=z.Z),q=this.DupOutPt(l,!E))}else{for(;l.Next.Pt.X>=z.X&&l.Next.Pt.X<=l.Pt.X&&l.Next.Pt.Y==z.Y;)l=l.Next;E||l.Pt.X==z.X||(l=l.Next);q=this.DupOutPt(l,E);r.IntPoint.op_Inequality(q.Pt,z)&&(l=q,l.Pt.X=z.X,l.Pt.Y=z.Y,r.use_xyz&&(l.Pt.Z=z.Z),q=this.DupOutPt(l,E))}L==r.Direction.dLeftToRight==E?(e.Prev=l,l.Next=e,g.Next=q,q.Prev=g):(e.Next=l,l.Prev=e,g.Prev=q,q.Next=g);return!0};r.Clipper.prototype.JoinPoints= function(e,g,l){var q=e.OutPt1,z;new r.OutPt;var E=e.OutPt2,L;new r.OutPt;if((L=e.OutPt1.Pt.Y==e.OffPt.Y)&&r.IntPoint.op_Equality(e.OffPt,e.OutPt1.Pt)&&r.IntPoint.op_Equality(e.OffPt,e.OutPt2.Pt)){if(g!=l)return!1;for(z=e.OutPt1.Next;z!=q&&r.IntPoint.op_Equality(z.Pt,e.OffPt);)z=z.Next;z=z.Pt.Y>e.OffPt.Y;for(L=e.OutPt2.Next;L!=E&&r.IntPoint.op_Equality(L.Pt,e.OffPt);)L=L.Next;if(z==L.Pt.Y>e.OffPt.Y)return!1;z?(z=this.DupOutPt(q,!1),L=this.DupOutPt(E,!0),q.Prev=E,E.Next=q,z.Next=L,L.Prev=z):(z=this.DupOutPt(q, !0),L=this.DupOutPt(E,!1),q.Next=E,E.Prev=q,z.Prev=L,L.Next=z);e.OutPt1=q;e.OutPt2=z;return!0}if(L){for(z=q;q.Prev.Pt.Y==q.Pt.Y&&q.Prev!=z&&q.Prev!=E;)q=q.Prev;for(;z.Next.Pt.Y==z.Pt.Y&&z.Next!=q&&z.Next!=E;)z=z.Next;if(z.Next==q||z.Next==E)return!1;for(L=E;E.Prev.Pt.Y==E.Pt.Y&&E.Prev!=L&&E.Prev!=z;)E=E.Prev;for(;L.Next.Pt.Y==L.Pt.Y&&L.Next!=E&&L.Next!=q;)L=L.Next;if(L.Next==E||L.Next==q)return!1;l={Left:null,Right:null};if(!this.GetOverlap(q.Pt.X,z.Pt.X,E.Pt.X,L.Pt.X,l))return!1;g=l.Left;var ca= l.Right;l=new r.IntPoint;q.Pt.X>=g&&q.Pt.X<=ca?(l.X=q.Pt.X,l.Y=q.Pt.Y,r.use_xyz&&(l.Z=q.Pt.Z),g=q.Pt.X>z.Pt.X):E.Pt.X>=g&&E.Pt.X<=ca?(l.X=E.Pt.X,l.Y=E.Pt.Y,r.use_xyz&&(l.Z=E.Pt.Z),g=E.Pt.X>L.Pt.X):z.Pt.X>=g&&z.Pt.X<=ca?(l.X=z.Pt.X,l.Y=z.Pt.Y,r.use_xyz&&(l.Z=z.Pt.Z),g=z.Pt.X>q.Pt.X):(l.X=L.Pt.X,l.Y=L.Pt.Y,r.use_xyz&&(l.Z=L.Pt.Z),g=L.Pt.X>E.Pt.X);e.OutPt1=q;e.OutPt2=E;return this.JoinHorz(q,z,E,L,l,g)}for(z=q.Next;r.IntPoint.op_Equality(z.Pt,q.Pt)&&z!=q;)z=z.Next;if(ca=z.Pt.Y>q.Pt.Y||!r.ClipperBase.SlopesEqual(q.Pt, z.Pt,e.OffPt,this.m_UseFullRange)){for(z=q.Prev;r.IntPoint.op_Equality(z.Pt,q.Pt)&&z!=q;)z=z.Prev;if(z.Pt.Y>q.Pt.Y||!r.ClipperBase.SlopesEqual(q.Pt,z.Pt,e.OffPt,this.m_UseFullRange))return!1}for(L=E.Next;r.IntPoint.op_Equality(L.Pt,E.Pt)&&L!=E;)L=L.Next;var la=L.Pt.Y>E.Pt.Y||!r.ClipperBase.SlopesEqual(E.Pt,L.Pt,e.OffPt,this.m_UseFullRange);if(la){for(L=E.Prev;r.IntPoint.op_Equality(L.Pt,E.Pt)&&L!=E;)L=L.Prev;if(L.Pt.Y>E.Pt.Y||!r.ClipperBase.SlopesEqual(E.Pt,L.Pt,e.OffPt,this.m_UseFullRange))return!1}if(z== q||L==E||z==L||g==l&&ca==la)return!1;ca?(z=this.DupOutPt(q,!1),L=this.DupOutPt(E,!0),q.Prev=E,E.Next=q,z.Next=L,L.Prev=z):(z=this.DupOutPt(q,!0),L=this.DupOutPt(E,!1),q.Next=E,E.Prev=q,z.Prev=L,L.Next=z);e.OutPt1=q;e.OutPt2=z;return!0};r.Clipper.GetBounds=function(e){for(var g=0,l=e.length;gq.right&&(q.right=e[g][z].X),e[g][z].Yq.bottom&&(q.bottom=e[g][z].Y);return q};r.Clipper.prototype.GetBounds2=function(e){var g=e,l=new r.IntRect;l.left=e.Pt.X;l.right=e.Pt.X;l.top=e.Pt.Y;l.bottom=e.Pt.Y;for(e=e.Next;e!=g;)e.Pt.Xl.right&&(l.right=e.Pt.X),e.Pt.Yl.bottom&&(l.bottom=e.Pt.Y),e=e.Next;return l};r.Clipper.PointInPolygon=function(e,g){var l=0,q=g.length;if(3>q)return 0;for(var z= g[0],E=1;E<=q;++E){var L=E==q?g[0]:g[E];if(L.Y==e.Y&&(L.X==e.X||z.Y==e.Y&&L.X>e.X==z.X=e.X)if(L.X>e.X)l=1-l;else{var ca=(z.X-e.X)*(L.Y-e.Y)-(L.X-e.X)*(z.Y-e.Y);if(0==ca)return-1;0z.Y&&(l=1-l)}else if(L.X>e.X){ca=(z.X-e.X)*(L.Y-e.Y)-(L.X-e.X)*(z.Y-e.Y);if(0==ca)return-1;0z.Y&&(l=1-l)}z=L}return l};r.Clipper.prototype.PointInPolygon=function(e,g){var l=0,q=g,z=e.X;e=e.Y;var E=g.Pt.X,L=g.Pt.Y;do{g=g.Next;var ca=g.Pt.X,la=g.Pt.Y;if(la==e&&(ca== z||L==e&&ca>z==E=z)if(ca>z)l=1-l;else{E=(E-z)*(la-e)-(ca-z)*(L-e);if(0==E)return-1;0L&&(l=1-l)}else if(ca>z){E=(E-z)*(la-e)-(ca-z)*(L-e);if(0==E)return-1;0L&&(l=1-l)}E=ca;L=la}while(q!=g);return l};r.Clipper.prototype.Poly2ContainsPoly1=function(e,g){var l=e;do{var q=this.PointInPolygon(l.Pt,g);if(0<=q)return 0g)return 0;for(var l=0,q=0,z=g-1;qMath.abs(e.Y-g.Y)?e.X>g.X==e.Xe.X==g.Xg.Y==e.Ye.Y==g.Yl&&(l=0);e=Array(l);for(z=0;zq)){var z=new r.PolyNode;z.m_jointype=g;z.m_endtype=l;if(l==r.EndType.etClosedLine||l==r.EndType.etClosedPolygon)for(;0z.m_polygon[g].Y||e[L].Y==z.m_polygon[g].Y&&e[L].XE)&&(this.m_polyNodes.AddChild(z),l==r.EndType.etClosedPolygon))if(0>this.m_lowest.X)this.m_lowest=new r.IntPoint(this.m_polyNodes.ChildCount()-1,g);else if(e=this.m_polyNodes.Childs()[this.m_lowest.X].m_polygon[this.m_lowest.Y],z.m_polygon[g].Y>e.Y||z.m_polygon[g].Y==e.Y&&z.m_polygon[g].X=this.ArcTolerance?r.ClipperOffset.def_arc_tolerance:this.ArcTolerance>Math.abs(e)*r.ClipperOffset.def_arc_tolerance?Math.abs(e)*r.ClipperOffset.def_arc_tolerance:this.ArcTolerance)/Math.abs(e));this.m_sin=Math.sin(r.ClipperOffset.two_pi/q);this.m_cos=Math.cos(r.ClipperOffset.two_pi/q);this.m_StepsPerRad=q/r.ClipperOffset.two_pi;0>e&&(this.m_sin=-this.m_sin); for(g=0;g=e&&(3>z||l.m_endtype!=r.EndType.etClosedPolygon))){this.m_destPoly=[];if(1==z)if(l.m_jointype==r.JoinType.jtRound){l=1;z=0;for(var E=1;E<=q;E++){this.m_destPoly.push(new r.IntPoint(r.ClipperOffset.Round(this.m_srcPoly[0].X+l*e),r.ClipperOffset.Round(this.m_srcPoly[0].Y+z*e)));var L=l;l=l*this.m_cos-this.m_sin*z;z=L*this.m_sin+z*this.m_cos}}else for(z=l=-1, E=0;4>E;++E)this.m_destPoly.push(new r.IntPoint(r.ClipperOffset.Round(this.m_srcPoly[0].X+l*e),r.ClipperOffset.Round(this.m_srcPoly[0].Y+z*e))),0>l?l=1:0>z?z=1:l=-1;else{for(E=this.m_normals.length=0;EMath.abs(this.m_sinA*this.m_delta)){if(0< this.m_normals[g].X*this.m_normals[e].X+this.m_normals[e].Y*this.m_normals[g].Y)return this.m_destPoly.push(new r.IntPoint(r.ClipperOffset.Round(this.m_srcPoly[e].X+this.m_normals[g].X*this.m_delta),r.ClipperOffset.Round(this.m_srcPoly[e].Y+this.m_normals[g].Y*this.m_delta))),g}else 1this.m_sinA&&(this.m_sinA=-1);if(0>this.m_sinA*this.m_delta)this.m_destPoly.push(new r.IntPoint(r.ClipperOffset.Round(this.m_srcPoly[e].X+this.m_normals[g].X*this.m_delta),r.ClipperOffset.Round(this.m_srcPoly[e].Y+ this.m_normals[g].Y*this.m_delta))),this.m_destPoly.push(new r.IntPoint(this.m_srcPoly[e])),this.m_destPoly.push(new r.IntPoint(r.ClipperOffset.Round(this.m_srcPoly[e].X+this.m_normals[e].X*this.m_delta),r.ClipperOffset.Round(this.m_srcPoly[e].Y+this.m_normals[e].Y*this.m_delta)));else switch(l){case r.JoinType.jtMiter:l=1+(this.m_normals[e].X*this.m_normals[g].X+this.m_normals[e].Y*this.m_normals[g].Y);l>=this.m_miterLim?this.DoMiter(e,g,l):this.DoSquare(e,g);break;case r.JoinType.jtSquare:this.DoSquare(e, g);break;case r.JoinType.jtRound:this.DoRound(e,g)}return e};r.ClipperOffset.prototype.DoSquare=function(e,g){var l=Math.tan(Math.atan2(this.m_sinA,this.m_normals[g].X*this.m_normals[e].X+this.m_normals[g].Y*this.m_normals[e].Y)/4);this.m_destPoly.push(new r.IntPoint(r.ClipperOffset.Round(this.m_srcPoly[e].X+this.m_delta*(this.m_normals[g].X-this.m_normals[g].Y*l)),r.ClipperOffset.Round(this.m_srcPoly[e].Y+this.m_delta*(this.m_normals[g].Y+this.m_normals[g].X*l))));this.m_destPoly.push(new r.IntPoint(r.ClipperOffset.Round(this.m_srcPoly[e].X+ this.m_delta*(this.m_normals[e].X+this.m_normals[e].Y*l)),r.ClipperOffset.Round(this.m_srcPoly[e].Y+this.m_delta*(this.m_normals[e].Y-this.m_normals[e].X*l))))};r.ClipperOffset.prototype.DoMiter=function(e,g,l){l=this.m_delta/l;this.m_destPoly.push(new r.IntPoint(r.ClipperOffset.Round(this.m_srcPoly[e].X+(this.m_normals[g].X+this.m_normals[e].X)*l),r.ClipperOffset.Round(this.m_srcPoly[e].Y+(this.m_normals[g].Y+this.m_normals[e].Y)*l)))};r.ClipperOffset.prototype.DoRound=function(e,g){var l=Math.max(r.Cast_Int32(r.ClipperOffset.Round(this.m_StepsPerRad* Math.abs(Math.atan2(this.m_sinA,this.m_normals[g].X*this.m_normals[e].X+this.m_normals[g].Y*this.m_normals[e].Y)))),1),q=this.m_normals[g].X;g=this.m_normals[g].Y;for(var z,E=0;Eg)return e;l||(e=[e]);for(var q=e.length,z,E,L,ca,la,pa,La,bb=[],Va=0;Vaz)L=E,bb.push(L);else{L=E;ca=g*g;la=E[0];for(La=pa=1;Lag)return r.JS.Clone(e);e[0]instanceof Array||(e=[e]);var l,q,z,E,L,ca=e.length,la=g*g,pa=[];for(g=0;gz;z++){var La=[];E=q.length;q[E-1].X!=q[0].X||q[E-1].Y!=q[0].Y?(L=1,q.push({X:q[0].X,Y:q[0].Y}),E=q.length):L= 0;var bb=[];for(l=0;lE)return 0;for(g&&(e[E]=e[0],E++);--E;){var L=e[E];var ca=L.X;L=L.Y;var la=e[E-1];var pa=la.X;la=la.Y;z+=q((ca-pa)*(ca-pa)+(L-la)*(L-la))}g&&e.pop();return z/l};r.JS.PerimeterOfPaths=function(e,g,l){l||(l=1);for(var q=0,z=0;zJ?-1:1},Qc=function(J){J=Number(J);return-1>J||yb(J)?NaN:0===J||Infinity===J?J:-1===J?-Infinity:0===1+J-1?J:J*(E(1+J)/(1+J-1))},ge=function(J){return"[object Arguments]"===rb(J)},he=function(J){return null!== J&&"object"===typeof J&&"number"===typeof J.length&&0<=J.length&&"[object Array]"!==rb(J)&&"[object Function]"===rb(J.callee)},Gd=ge(arguments)?ge:he,Ab={primitive:function(J){return null===J||"function"!==typeof J&&"object"!==typeof J},string:function(J){return"[object String]"===rb(J)},regex:function(J){return"[object RegExp]"===rb(J)},symbol:function(J){return"function"===typeof U.Symbol&&"symbol"===typeof J}},Fa=function(J,x,v){var K=J[x];Ga(J,x,v,!0);Ya.preserveToString(J[x],K)},Ic="function"=== typeof Sa&&"function"===typeof Sa["for"]&&Ab.symbol(Sa()),bc=Ab.symbol(Sa.iterator)?Sa.iterator:"_es6-shim iterator_";U.Set&&"function"===typeof(new U.Set)["@@iterator"]&&(bc="@@iterator");U.Reflect||Ga(U,"Reflect",{},!0);var Rc=U.Reflect,od=String,Hd="undefined"!==typeof document&&document?document.all:null,pc=null==Hd?function(J){return null==J}:function(J){return null==J&&J!==Hd},S={Call:function(J,x){var v=2>0},ToUint32:function(J){return S.ToNumber(J)>>>0},ToNumber:function(J){if(Ic&&"[object Symbol]"=== rb(J))throw new TypeError("Cannot convert a Symbol value to a number");return+J},ToInteger:function(J){J=S.ToNumber(J);return yb(J)?0:0!==J&&Yb(J)?(0=J?0:J>Number.MAX_SAFE_INTEGER?Number.MAX_SAFE_INTEGER:J},SameValue:function(J,x){return J===x?0===J?1/J===1/x:!0:yb(J)&&yb(x)},SameValueZero:function(J,x){return J===x||yb(J)&&yb(x)},IsIterable:function(J){return S.TypeIsObject(J)&&("undefined"!==typeof J[bc]||Gd(J))},GetIterator:function(J){if(Gd(J))return new Jc(J, "value");var x=S.GetMethod(J,bc);if(!S.IsCallable(x))throw new TypeError("value is not an iterable");J=S.Call(x,J);if(!S.TypeIsObject(J))throw new TypeError("bad iterator");return J},GetMethod:function(J,x){J=S.ToObject(J)[x];if(!pc(J)){if(!S.IsCallable(J))throw new TypeError("Method not callable: "+x);return J}},IteratorComplete:function(J){return!!J.done},IteratorClose:function(J,x){var v=S.GetMethod(J,"return");if(void 0!==v){try{var K=S.Call(v,J)}catch(B){var V=B}if(!x){if(V)throw V;if(!S.TypeIsObject(K))throw new TypeError("Iterator's return method returned a non-object."); }}},IteratorNext:function(J){var x=1"+J+""},IsRegExp:function(J){if(!S.TypeIsObject(J))return!1;var x=J[Sa.match];return"undefined"!==typeof x?!!x:Ab.regex(J)},ToString:function(J){if(Ic&&"[object Symbol]"===rb(J))throw new TypeError("Cannot convert a Symbol value to a number"); return od(J)}};if(ha&&Ic){var pd=function(J){if(Ab.symbol(Sa[J]))return Sa[J];var x=Sa["for"]("Symbol."+J);Object.defineProperty(Sa,J,{configurable:!1,enumerable:!1,writable:!1,value:x});return x};if(!Ab.symbol(Sa.search)){var ie=pd("search"),qd=String.prototype.search;Ga(RegExp.prototype,ie,function(J){return S.Call(qd,J,[this])});Fa(String.prototype,"search",function(J){var x=S.RequireObjectCoercible(this);if(!pc(J)){var v=S.GetMethod(J,ie);if("undefined"!==typeof v)return S.Call(v,J,[x])}return S.Call(qd, x,[S.ToString(J)])})}if(!Ab.symbol(Sa.replace)){var Ke=pd("replace"),Wc=String.prototype.replace;Ga(RegExp.prototype,Ke,function(J,x){return S.Call(Wc,J,[this,x])});Fa(String.prototype,"replace",function(J,x){var v=S.RequireObjectCoercible(this);if(!pc(J)){var K=S.GetMethod(J,Ke);if("undefined"!==typeof K)return S.Call(K,J,[v,x])}return S.Call(Wc,v,[S.ToString(J),x])})}if(!Ab.symbol(Sa.split)){var je=pd("split"),ke=String.prototype.split;Ga(RegExp.prototype,je,function(J,x){return S.Call(ke,J,[this, x])});Fa(String.prototype,"split",function(J,x){var v=S.RequireObjectCoercible(this);if(!pc(J)){var K=S.GetMethod(J,je);if("undefined"!==typeof K)return S.Call(K,J,[v,x])}return S.Call(ke,v,[S.ToString(J),x])})}var Zb=Ab.symbol(Sa.match),Sc=Zb&&function(){var J={};J[Sa.match]=function(){return 42};return 42!=="a".match(J)}();if(!Zb||Sc){var le=pd("match"),xb=String.prototype.match;Ga(RegExp.prototype,le,function(J){return S.Call(xb,J,[this])});Fa(String.prototype,"match",function(J){var x=S.RequireObjectCoercible(this); if(!pc(J)){var v=S.GetMethod(J,le);if("undefined"!==typeof v)return S.Call(v,J,[x])}return S.Call(xb,x,[S.ToString(J)])})}}var Kc=function(J,x,v){Ya.preserveToString(x,J);Object.setPrototypeOf&&Object.setPrototypeOf(J,x);ha?ia(Object.getOwnPropertyNames(J),function(K){K in la||v[K]||Ya.proxy(J,K,x)}):ia(Object.keys(J),function(K){K in la||v[K]||(x[K]=J[K])});x.prototype=J.prototype;Ya.redefine(J.prototype,"constructor",x)},Id=function(){return this},Xc=function(J){ha&&!ca(J,fc)&&Ya.getter(J,fc,Id)}, hc=function(J,x){x=x||function(){return this};Ga(J,bc,x);!J[bc]&&Ab.symbol(bc)&&(J[bc]=x)},Yc=function(J,x,v){ha?Object.defineProperty(J,x,{configurable:!0,enumerable:!0,writable:!0,value:v}):J[x]=v;if(!S.SameValue(J[x],v))throw new TypeError("property is nonconfigurable");},M=function(J,x,v,K){if(!S.TypeIsObject(J))throw new TypeError("Constructor requires `new`: "+x.name);J=x.prototype;S.TypeIsObject(J)||(J=v);v=ab(J);for(var V in K)ca(K,V)&&Ga(v,V,K[V],!0);return v};if(String.fromCodePoint&&1!== String.fromCodePoint.length){var Y=String.fromCodePoint;Fa(String,"fromCodePoint",function(J){return S.Call(Y,this,arguments)})}var Da={fromCodePoint:function(J){for(var x=[],v,K=0,V=arguments.length;Kv||1114111v?Kb(x,String.fromCharCode(v)):(v-=65536,Kb(x,String.fromCharCode((v>>10)+55296)),Kb(x,String.fromCharCode(v%1024+56320)))}return zb(x,"")},raw:function(J){var x=S.ToObject(J, "bad template");x=S.ToObject(x.raw,"bad raw value");var v=S.ToLength(x.length);if(0>=v)return"";for(var K=[],V=0,B;V=v)break;B=V+1v)return"";if(v%2)return K(x,v-1)+x;x=K(x,v/2);return x+x},Tc={repeat:function(x){var v=S.ToString(S.RequireObjectCoercible(this)); x=S.ToInteger(x);if(0>x||Infinity<=x)throw new RangeError("repeat count must be less than infinity and not overflow maximum string size");return uc(v,x)},startsWith:function(x){var v=S.ToString(S.RequireObjectCoercible(this));if(S.IsRegExp(x))throw new TypeError('Cannot call method "startsWith" with a regex');var K=S.ToString(x),V;1x||56319v||57343=x.length)return this._s=void 0,vc();var K=x.charCodeAt(v);55296>K||56319K||57343B?e(V+B,0):g(B,V);O=0>O?e(V+O,0):g(O,V);var da;2da?e(V+da,0):g(da,V);V=g(da-O,V-B);da=1;Ov?e(B+v,0):g(v,B);for(K=0>K?B+K:K;v1/[!0].indexOf(!0,-0)&&Ga(Array.prototype,"indexOf",function(x){var v=Jb(this,arguments);return 0===v&&0>1/v?0:v},!0);hc(Array.prototype,function(){return this.values()});Object.getPrototypeOf&&hc(Object.getPrototypeOf([].values()));var xc=function(){return na(function(){return 0===Array.from({length:-1}).length})}(),Zc=function(){var x=Array.from([0].entries());return 1=== x.length&&T(x[0])&&0===x[0][0]&&0===x[0][1]}();xc&&Zc||Fa(Array,"from",wc.from);if(!function(){return na(function(){return Array.from([0],void 0)})}()){var sd=Array.from;Fa(Array,"from",function(x){return 1>>0)-1:0]=!0;return na(function(){H(x,K,function(){throw new RangeError("should not reach here");},[]);return!0})};if(!Ec(Array.prototype.forEach)){var Uc= Array.prototype.forEach;Fa(Array.prototype,"forEach",function(x){return S.Call(Uc,0<=this.length?this:[],arguments)})}if(!Ec(Array.prototype.map)){var Qe=Array.prototype.map;Fa(Array.prototype,"map",function(x){return S.Call(Qe,0<=this.length?this:[],arguments)})}if(!Ec(Array.prototype.filter)){var Re=Array.prototype.filter;Fa(Array.prototype,"filter",function(x){return S.Call(Re,0<=this.length?this:[],arguments)})}if(!Ec(Array.prototype.some)){var $c=Array.prototype.some;Fa(Array.prototype,"some", function(x){return S.Call($c,0<=this.length?this:[],arguments)})}if(!Ec(Array.prototype.every)){var Kd=Array.prototype.every;Fa(Array.prototype,"every",function(x){return S.Call(Kd,0<=this.length?this:[],arguments)})}if(!Ec(Array.prototype.reduce)){var jf=Array.prototype.reduce;Fa(Array.prototype,"reduce",function(x){return S.Call(jf,0<=this.length?this:[],arguments)})}if(!Ec(Array.prototype.reduceRight,!0)){var kf=Array.prototype.reduceRight;Fa(Array.prototype,"reduceRight",function(x){return S.Call(kf, 0<=this.length?this:[],arguments)})}var Se=8!==Number("0o10"),Te=2!==Number("0b10"),ad=Xa("\u0085\u200b\ufffe",function(x){return 0===Number(x+0+x)});if(Se||Te||ad){var yc=Number,oe=/^0b[01]+$/i,pe=/^0o[0-7]+$/i,ic=oe.test.bind(oe),qe=pe.test.bind(pe),Ld=function(x,v){if("function"===typeof x.valueOf&&(v=x.valueOf(),Ab.primitive(v))||"function"===typeof x.toString&&(v=x.toString(),Ab.primitive(v)))return v;throw new TypeError("No default value");},lf=Ne.test.bind(Ne),Ue=Oe.test.bind(Oe),bd=function(){var x= function(v){var K=0K?0:K);for(var V=x;Vx)return NaN;if(1===v)return 0;if(Infinity===v)return v;x=1/(v*v);if(2>v)return Qc(v-1+L(1-x)*v);v/=2;return Qc(v+L(1-x)*v-1)+1/Pd},asinh:function(x){var v=Number(x);if(0===v||!ya(v))return v;x=q(v);var K=x*x;v=gc(v);return 1>x?v*Qc(x+K/(L(K+1)+1)):v*(Qc(x/2+L(1+1/K)*x/2-1)+1/Pd)},atanh:function(x){x=Number(x);if(0===x)return x; if(-1===x)return-Infinity;if(1===x)return Infinity;if(yb(x)||-1>x||1x;v&&(x=-x);if(Infinity===x)var K=Infinity;else K=z(E(x)/3),K=(x/(K*K)+2*K)/3;return v?-K:K},clz32:function(x){x=S.ToUint32(Number(x));return 0===x?32:Lb?S.Call(Lb,x):31-l(E(x+.5)*Pd)},cosh:function(x){x=Number(x);if(0===x)return 1;if(yb(x))return NaN;if(!ya(x))return Infinity;x=z(q(x)-1);return ed/2*(x+1/(x*ed*ed))},expm1:function(x){x= Number(x);if(-Infinity===x)return-1;if(!ya(x)||0===x)return x;if(.5v)return v=Math.expm1(v), gc(x)*v*(1+1/(v+1))/2;v=z(v-1);return gc(x)*(v-1/(v*ed*ed))*(ed/2)},tanh:function(x){x=Number(x);return yb(x)||0===x?x:20<=x?1:-20>=x?-1:(Math.expm1(x)-Math.expm1(-x))/(z(x)+z(-x))},trunc:function(x){x=Number(x);return 0>x?-l(-x):l(x)},imul:function(x,v){x=S.ToUint32(x);v=S.ToUint32(v);var K=x&65535,V=v&65535;return K*V+((x>>>16&65535)*V+K*(v>>>16&65535)<<16>>>0)|0},fround:function(x){var v=Number(x);if(0===v||Infinity===v||-Infinity===v||yb(v))return v;x=gc(v);v=q(v);if(vqf||yb(v)?Infinity*x:x*v}};$a(Math,ib);Ga(Math,"sinh",ib.sinh,Infinity===Math.sinh(710));Ga(Math,"cosh",ib.cosh,Infinity===Math.cosh(710));Ga(Math,"log1p",ib.log1p,-1E-17!==Math.log1p(-1E-17));Ga(Math,"asinh",ib.asinh,Math.asinh(-1E7)!==-Math.asinh(1E7));Ga(Math,"asinh",ib.asinh,Infinity===Math.asinh(1E300));Ga(Math,"atanh",ib.atanh,0===Math.atanh(1E-300));Ga(Math,"tanh",ib.tanh,-2E-17!==Math.tanh(-2E-17));Ga(Math,"acosh",ib.acosh,Infinity=== Math.acosh(Number.MAX_VALUE));Ga(Math,"acosh",ib.acosh,!(8>q(1-Math.acosh(1+Number.EPSILON)/Math.sqrt(2*Number.EPSILON))/Number.EPSILON));Ga(Math,"cbrt",ib.cbrt,!(8>q(1-Math.cbrt(1E-300)/1E-100)/Number.EPSILON));Ga(Math,"sinh",ib.sinh,-2E-17!==Math.sinh(-2E-17));var Ma=Math.expm1(10);Ga(Math,"expm1",ib.expm1,22025.465794806718Ma);Ga(Math,"hypot",ib.hypot,Infinity!==Math.hypot(Infinity,NaN));var Gc=Math.round,Qd=0===Math.round(.5-Number.EPSILON/4)&&1===Math.round(-.5+Number.EPSILON/ 3.99),fd=[$b+1,2*$b-1].every(function(x){return Math.round(x)===x});Ga(Math,"round",function(x){var v=l(x);return.5>x-v?v:-1===v?-0:v+1},!Qd||!fd);Ya.preserveToString(Math.round,Gc);var af=Math.imul;2!==Math.imul.length&&Fa(Math,"imul",function(x,v){return S.Call(af,Math,arguments)});var Ad=function(){var x=U.setTimeout;if("function"===typeof x||"object"===typeof x){S.IsPromise=function(qa){return S.TypeIsObject(qa)&&"undefined"!==typeof qa._promise?!0:!1};var v=function(qa){if(!S.IsConstructor(qa))throw new TypeError("Bad promise constructor"); var wa=this;wa.resolve=void 0;wa.reject=void 0;wa.promise=new qa(function(ta,Wa){if(void 0!==wa.resolve||void 0!==wa.reject)throw new TypeError("Bad Promise implementation!");wa.resolve=ta;wa.reject=Wa});if(!S.IsCallable(wa.resolve)||!S.IsCallable(wa.reject))throw new TypeError("Bad promise constructor");},K;"undefined"!==typeof window&&S.IsCallable(window.postMessage)&&(K=function(){var qa=[];window.addEventListener("message",function(wa){wa.source===window&&"zero-timeout-message"===wa.data&&(wa.stopPropagation(), 0!==qa.length&&nd(qa)())},!0);return function(wa){Kb(qa,wa);window.postMessage("zero-timeout-message","*")}});var V=function(){var qa=U.Promise,wa=qa&&qa.resolve&&qa.resolve();return wa&&function(ta){return wa.then(ta)}},B=S.IsCallable(U.setImmediate)?U.setImmediate:"object"===typeof process&&process.nextTick?process.nextTick:V()||(S.IsCallable(K)?K():function(qa){x(qa,0)}),O=function(qa){return qa},da=function(qa){throw qa;},ka={},va=function(qa,wa,ta){B(function(){if(wa===ka)qa(ta);else{try{var Wa= qa(ta);var db=wa.resolve}catch(Ba){Wa=Ba,db=wa.reject}db(Wa)}})},Oa=function(qa,wa){var ta=qa._promise,Wa=ta.reactionLength;if(0T&&(T=0);++T;return function(){--T;0>T&&console.error("Wait count mismatch: "+Z);if(0===T)for(var ia=0,ra=aa.length;ia=T?ia.startup():!1!==Z.autostart&&aa.push(ia);return ia}var T=-1,aa=[];Math.sign||(Math.sign=function(Z){return(0Z)||+Z});"undefined"===typeof document||"undefined"===typeof window|| "undefined"===typeof document.addEventListener||"undefined"!==typeof window.cindyDontWait&&!0===window.cindyDontWait||document.addEventListener("DOMContentLoaded",D("DOMContentLoaded"));var ba=null,na=null,ea={};H.getBaseDir=function(){if(null!==ba)return ba;for(var Z=document.getElementsByTagName("script"),ia=0;ia tag for Cindy.js"); return ba=na=!1};H.addNewScript=function(Z,ia){ia||console.error.bind(console);var ra=H.getBaseDir();if(!1===ra)return!1;ia=document.createElement("script");ia.src=ra+Z;Z=na.nextSibling;ra=na.parentElement;Z?ra.insertBefore(ia,Z):ra.appendChild(ia);return ia};H.loadScript=function(Z,ia,ra,Qa){for(var Xa=String(Z).split("."),Ga=window;Xa.length&&"object"===typeof Ga&&null!==Ga;)Ga=Ga[Xa.shift()];if(Ga&&!Xa.length)return ra(),!0;Qa||(Qa=console.error.bind(console));Xa=ea[Z];if(!Xa){Xa=H.addNewScript(ia, Qa);if(!1===Xa)return Qa("Can't load additional components."),!1;ea[Z]=Xa}Xa.addEventListener("load",ra);Xa.addEventListener("error",Qa);return null};H._autoLoadingPlugin={};H.autoLoadPlugin=function(Z,ia,ra){if(H._pluginRegistry[Z])return ra(),!0;var Qa=H._autoLoadingPlugin[Z];if(!Qa){ia||(ia=Z+"-plugin.js");Qa=H._autoLoadingPlugin[Z]=[];Z=H.addNewScript(ia);if(!1===Z)return!1;Z.addEventListener("error",console.error.bind(console))}Qa.push(ra);return null};var A={ctype:"undefined"};H.waitFor=D;H._pluginRegistry= {};H.instances=[];H.registerPlugin=function(Z,ia,ra){if(1!==Z)return console.error("Plugin API version "+Z+" not supported"),!1;H._pluginRegistry[ia]=ra;(H._autoLoadingPlugin[ia]||[]).forEach(function(Qa){Qa()})};var ha=0;H.dumpState=function(Z){Z=H.instances[Z||0].saveState();console.log(JSON.stringify(Z))};H.debugState=function(Z){H.instances.map(function(ia){var ra=ia.config;ra=JSON.parse(JSON.stringify(ra));var Qa=ia.saveState();console.log(JSON.stringify(Qa));for(var Xa in Qa)ra[Xa]=Qa[Xa];ia.shutdown(); return ra}).forEach(function(ia){H(ia)})};H.newInstance=function(Z){function ia(){mb.width=nb=mb.clientWidth;mb.height=fb=mb.clientHeight;tb=1;if(Vd||Wd)tb=Math.max(Vd?Vd/mb.width:0,Wd?Wd/mb.height:0),nb=tb*mb.clientWidth,fb=tb*mb.clientHeight;Q.setTransform(1/tb,0,0,1/tb,0,0);P.setMat(25,0,0,25,250.5,250.5);if(Xd)for(var a=$jscomp.makeIterator(Xd),b=a.next();!b.done;b=a.next()){b=b.value;var c=Object.keys(b)[0];"scale"===c&&(Ud=b.scale,P[c](b.scale));if("translate"===c)P[c](b.translate[0],b.translate[1]); "scaleAndOrigin"===c&&(Ud=b[c][0]/25,P[c].apply(null,b[c]));"visibleRect"===c&&(P[c].apply(null,b[c]),Ud=P.drawingstate.initialmatrix.a/25)}P.createnewbackup();P.greset();a=1;"undefined"!==typeof window&&window.devicePixelRatio&&(a=window.devicePixelRatio);b=Q.webkitBackingStorePixelRatio||Q.mozBackingStorePixelRatio||Q.msBackingStorePixelRatio||Q.oBackingStorePixelRatio||Q.backingStorePixelRatio||1;a!==b&&(a/=b,mb.width=nb*a,mb.height=fb*a,Q.scale(a,a))}function ra(a){if("canvas"!==a.tagName.toLowerCase()){var b= a;for(mb=document.createElement("canvas");b.firstChild;)b.removeChild(b.firstChild)}else{mb=a;b=document.createElement("div");var c=null,d=null;Array.prototype.slice.call(mb.attributes).forEach(function(f){"width"===f.name?c=f.value:"height"===f.name?d=f.value:b.setAttributeNodeNS(mb.removeAttributeNode(f))});null===c||b.style.width||(b.style.width=c+"px");null===d||b.style.height||(b.style.height=d+"px");mb.parentNode.replaceChild(b,mb)}b.classList.add("CindyJS-widget");a=mb.style;a.position="absolute"; a.border="none";a.margin=a.padding=a.left=a.top="0px";a.width=a.height="100%";a="static";window.getComputedStyle&&(a=window.getComputedStyle(b).getPropertyValue("position"),a=String(a||"static"));"static"===a&&(b.style.position="relative");b.appendChild(mb);return mb}function Qa(){var a=Z.cinderella;if(!a||!a.version)return!1;for(var b=0;b=c.HAVE_METADATA?(d.width=c.videoWidth,d.height=c.videoHeight):(d.ready=!1,c.addEventListener("loadedmetadata",function(){d.width=c.videoWidth;d.height=c.videoHeight;d.ready=!0;d.whenReady=ab;f.forEach(ab);E()}),d.whenReady=f.push.bind(f));else if("canvas"===a)d.width=c.width,d.height=c.height;else return console.error("Not a valid image element",a,c),A;return{ctype:"image", value:d}}function r(a){function b(C,F){var I=document.createElement("button"),W=document.createElement("img");I.appendChild(W);w.appendChild(I);id(W,C);I.addEventListener("click",F);qc[C]=function(R){R?I.classList.add("CindyJS-active"):I.classList.remove("CindyJS-active")}}function c(C){if(y){var F=p.getBoundingClientRect();Ya(m*(C.clientX-F.left-p.clientLeft+.5)/F.width+f)}}var d=document.createElement("div");d.className="CindyJS-animcontrols";mb.parentNode.appendChild(d);var f=0,k=1,m=1;a.animation&& a.animation.speedRange&&Bb(a.animation.speedRange[0])&&Bb(a.animation.speedRange[1])&&(f=a.animation.speedRange[0],k=a.animation.speedRange[1],m=k-f);var p=document.createElement("div");p.className="CindyJS-animspeed";d.appendChild(p);var u=document.createElement("div");p.appendChild(u);g(p,"mousedown",function(C){y=!0;c(C)});g(p,"mousemove",c);g(mb.parentNode,"mouseup",function(C){y=!1},!0);var w=document.createElement("div");w.className="CindyJS-animbuttons";d.appendChild(w);b("play",Ha);b("pause", Jb);b("stop",Rb);qc.stop(!0);De=function(C){C=(C-f)/m;C=Math.max(0,Math.min(1,C));C=.1*Math.round(1E3*C);u.style.width=C+"%"};var y=!1}function Ya(a){af=a;De&&De(a)}function ab(a){return a()}function eb(a,b,c){var d=null;Z.plugins&&(d=Z.plugins[a]);d||(d=Lb._pluginRegistry[a]);d?B.use$1([v.wrap(a)],{}):(++Ee,Lb.autoLoadPlugin(a,b,function(){B.use$1([v.wrap(a)],{});U(c)}))}function U(a){0===--Ee&&(a?E():(M(Ma.init),(Z.animation||Z).autoplay&&Ha(),Mb.canvas&&l(Mb.canvas,Z)))}function ya(){null!==jd&& (Hb.set(jd.state),Object.keys(jd.speeds).forEach(function(a){var b=G.csnames[a];"undefined"!==typeof b.behavior&&(a=jd.speeds[a],b.behavior.vx=a[0],b.behavior.vy=a[1],b.behavior.vz=a[2],b.behavior.fx=0,b.behavior.fy=0,b.behavior.fz=0)}),se())}function Ha(){if(!Gc){if(Qd){var a=Nc.backup;a.set(Hb);for(var b={},c=$jscomp.makeIterator(G.points),d=c.next();!d.done;d=c.next())d=d.value,"undefined"!==typeof d.behavior&&(b[d.name]=[d.behavior.vx,d.behavior.vy,d.behavior.vz]);jd={state:a,speeds:b};fd=0;Qd= !1;qc.stop(!1)}else qc.pause(!1);Ad=Date.now();qc.play(!0);"function"===typeof ze&&vf&&Pd();Gc=!0;M(Ma.simulationstart);E()}}function Jb(){Gc&&(qc.play(!1),qc.pause(!0),Gc=!1)}function Rb(){Qd||(Gc?(M(Ma.simulationstop),Gc=!1,qc.play(!1)):qc.pause(!1),qc.stop(!0),Qd=!0,ya())}function Fb(){if(!Yd){Yd=!0;for(var a=Lb.instances.length;0
';document.body.appendChild(b);var c=document.getElementById("cmd");var d=document.getElementById("log");c.onkeydown=function(f){13===f.keyCode&&""!== c.value&&(a.in(c.value),f=B.parse$1([v.wrap(c.value)],[]),f=M(f),console.log(Ca(f)),"undefined"!==f.ctype&&ib.out(Ca(f)),c.value="",d.scrollTop=d.scrollHeight)};this.append=function(f){d.appendChild(f)};this.clear=function(){d.innerHTML=""}}function zb(a){var b=a;"string"===typeof a&&(b=document.getElementById(a));this.append=function(c){b.appendChild(c)};this.clear=function(){b.innerHTML=""}}function nd(){this.append=function(a){};this.clear=function(){}}function e(a){for(var b=null,c=1E6,d,f=$jscomp.makeIterator(G.free), k=f.next();!k.done;k=f.next())if(k=k.value,!k.pinned&&!1!==k.visible&&!0!==k.tmp){var m=P.drawingstate.matrix.sdet;if("P"===k.kind){var p=h.normalizeZ(k.homog);if(!h._helper.isAlmostReal(p))continue;var u=p.value[0].value.real-a.x;p=p.value[1].value.real-a.y;var w=Math.sqrt(u*u+p*p);if(k.narrow&&w>("number"===typeof k.narrow?k.narrow:20)/m)continue}else if("C"===k.kind){p=h.normalizeZ(G.csnames[k.args[0]].homog);u=k.radius;if(!h._helper.isAlmostReal(p)||!n._helper.isAlmostReal(u))continue;w=p.value[0].value.real; var y=p.value[1].value.real;p=a.x-w;var C=a.y-y,F=Math.sqrt(p*p+C*C);if(0===F)continue;y+=C/F*u.value.real;u=w+p/F*u.value.real-a.x;p=y-a.y;w=Math.sqrt(u*u+p*p);w+=30/m;if(k.narrow&&w>(("number"===typeof k.narrow?k.narrow:20)+30)/m)continue}else if("L"===k.kind)u=k.homog,w=n,p=w.add(w.mult(u.value[0],w.conjugate(u.value[0])),w.mult(u.value[1],w.conjugate(u.value[1]))),p=h.scaldiv(w.sqrt(p),u),w=p.value[0].value.real*a.x+p.value[1].value.real*a.y+p.value[2].value.real,u=-p.value[0].value.real*w,p= -p.value[1].value.real*w,0>w&&(w=-w),w+=25/m;else if("Text"===k.kind){if(!k.homog||k.dock||!k._bbox)continue;p=P.from(a.x,a.y,1);u=Math.max(0,p[0]-k._bbox.right,k._bbox.left-p[0]);p=Math.max(0,p[1]-k._bbox.bottom,k._bbox.top-p[1]);w=Math.sqrt(u*u+p*p);if(20(I|0)+1&&(Nb[y]=(I|0)+1,F=!0);F||(Nb[y]=C.length+1);return Nb[y]}function k(y){var C=y.changedTouches;c(y,!1);for(var F=0;Fk[0]&&(k=[u.value.real,p]),w.value.realm[0]&&(m=[w.value.real,p])))}k[0]-b[0]>m[0]-c[0]?(b=b[1],k=k[1]):(b=c[1],k=m[1]);if(b!==k){B.draw$2([b, k],{dashtype:d.dashtype,size:d.size,color:d.color,alpha:d.alpha,overhang:d.overhang});break a}}B.draw$1([d.homog],{dashtype:d.dashtype,size:d.size,color:d.color,alpha:d.alpha})}for(a=0;a"+Ca(a.value):"shape"===a.ctype?a.type:"error"===a.ctype?"Error: "+a.message:"variable"===a.ctype?Ca(da.getvar(a.name)):"geo"===a.ctype?a.value.name:"image"=== a.ctype?"IMAGE":"_?_"}function Sa(a,b){b="undefined"===a[0].ctype;var c="undefined"===a[1].ctype,d=M(a[1]);if(b||c)return A;"variable"===a[0].ctype?("list"===d.ctype&&(d.internal_usage=void 0),da.setvar(a[0].name,d)):"infix"===a[0].ctype?"_"===a[0].oper?O.assigntake(a[0],d):sb("Can't use infix expression as lvalue"):"field"===a[0].ctype?O.assigndot(a[0],d):"userdata"===a[0].ctype?O.assigncolon(a[0],d):"function"===a[0].ctype&&"genList"===a[0].oper?"list"===d.ctype?O.assignlist(a[0].args,d.value): sb("Expected list in rhs of assignment"):sb("Left hand side of assignment is not a recognized lvalue");return d}function fc(a,b){b=M(a[0]);a=M(a[1]);if(b.ctype===a.ctype){if("number"===b.ctype)return v.bool(b.value.real===a.value.real&&b.value.imag===a.value.imag);if("string"===b.ctype||"boolean"===b.ctype)return v.bool(b.value===a.value);if("list"===b.ctype)return h.equals(b,a);if("geo"===b.ctype||"JSON"===b.ctype)return v.bool(b.value===a.value)}return{ctype:"boolean",value:!1}}function yb(a,b){return v.not(fc(a, b))}function Yb(a,b){b=Y(a[0]);a=Y(a[1]);return"number"===b.ctype&&"number"===a.ctype?{ctype:"boolean",value:n._helper.isAlmostEqual(b,a)}:"string"===b.ctype&&"string"===a.ctype||"boolean"===b.ctype&&"boolean"===a.ctype?{ctype:"boolean",value:b.value===a.value}:"list"===b.ctype&&"list"===a.ctype?h.almostequals(b,a):{ctype:"boolean",value:!1}}function gc(a,b){b=Y(a[0]);a=Y(a[1]);return"boolean"===b.ctype&&"boolean"===a.ctype?{ctype:"boolean",value:b.value&&a.value}:A}function Qc(a,b){b=Y(a[0]);a=Y(a[1]); return"boolean"===b.ctype&&"boolean"===a.ctype?{ctype:"boolean",value:b.value||a.value}:A}function ge(a,b){b=a[0];"void"!==b.ctype&&(b=Y(b));a=Y(a[1]);var c=v.add(b,a);"Angle"===b.usage&&"Angle"===a.usage&&(c=v.withUsage(c,"Angle"));return c}function he(a,b){b=a[0];"void"!==b.ctype&&(b=Y(b));a=Y(a[1]);var c=v.sub(b,a);"Angle"===b.usage&&"Angle"===a.usage&&(c=v.withUsage(c,"Angle"));return c}function Gd(a,b){b=Y(a[0]);a=Y(a[1]);var c=v.mult(b,a);"Angle"!==b.usage||a.usage?"Angle"!==a.usage||b.usage|| (c=v.withUsage(c,"Angle")):c=v.withUsage(c,"Angle");return c}function Ab(a,b){b=Y(a[0]);a=Y(a[1]);"number"===a.ctype&&n._helper.isZero(a)&&sb("WARNING: Division by zero!");var c=v.div(b,a);"Angle"!==b.usage||a.usage?"Angle"!==a.usage||b.usage||(c=v.withUsage(c,"Angle")):c=v.withUsage(c,"Angle");return c}function Fa(a,b){b=Y(a[0]);a=Y(a[1]);return"number"===b.ctype&&"number"===a.ctype?n.pow(b,a):A}function Ic(a,b){b=Da(a[0]);a=Da(a[1]);if(b!==A&&a!==A){var c=h.cross(b,a);"Point"===b.usage&&"Point"=== a.usage&&(c=v.withUsage(c,"Line"));"Line"===b.usage&&"Line"===a.usage&&(c=v.withUsage(c,"Point"));return c}return A}function bc(a){var b=a.length;if(0===b)return[];if(1===b)return[0];if(2===b)return a[0][0]+a[1][1]<=a[0][1]+a[1][0]?[0,1]:[1,0];if(4a[m][p]&&(u[m].cost=a[m][p]);for(;;){for(m=0;my[m][p]&&(C=y[m][p]);for(m=0;ma&&(a=b.value.length+a+1);if(0I.left&&(u=I.left);wI.top&&(y=I.top);CF.left&&(u=F.left);wF.top&&(y=F.top);C"===u.oper){var w=u.args[0];if("variable"!==w.ctype)throw xb("Modifier name must be an identifier",u.start);p[w.name]=u.args[1]}else f.push(u); k.oper=k.name.toLowerCase()+"$"+k.args.length}else if("||"===p)if(1===m.length)c.push({ctype:"function",oper:"abs_infix",args:m,modifs:{}});else if(2===m.length)c.push({ctype:"function",oper:"dist_infix",args:m,modifs:{}});else throw xb("Don't support |\u2026| with "+m.length+" arguments",f.start);else"{}"===p?c.push({ctype:"function",oper:"genJSON",args:m,modifs:{}}):"[]"!==p&&1===m.length?c.push({ctype:"paren",args:m}):0===m.length?c.push({ctype:"list",value:[]}):c.push({ctype:"function",oper:"genList", args:m,modifs:{}});break;case "EOF":break a}}for(c.length&1||c.push(null);3<=c.length;)Id(c);return{expr:c[0],closedBy:f}}function Yc(a){this.usedFunctions={};this.usedVariables={}}function M(a){if(void 0===a)return A;if("infix"===a.ctype)return a.impl(a.args,{},a);if("variable"===a.ctype)return M(da.getvar(a.name));if("function"===a.ctype)return He.push(a),a=O.evaluate(a.oper,a.args,a.modifs),He.pop(),a;if("void"===a.ctype)return A;if("field"===a.ctype){var b=M(a.obj);if("geo"===b.ctype){var c=J._helper.self; J._helper.self=b;a=M(ka.getField(b.value,a.key));J._helper.self=c;return a}return"list"===b.ctype?(c=J._helper.self,J._helper.self=b,a=h.getField(b,a.key),J._helper.self=c,a):"JSON"===b.ctype?(c=J._helper.self,J._helper.self=b,a=M(J.getField(b,a.key)),J._helper.self=c,a):A}return"userdata"===a.ctype?(b=M(a.obj),a=v.string(Ca(M(a.key))),"_?_"===a.value&&(a=A),"geo"===b.ctype?(c=J._helper.self,J._helper.self=b,a=M(ka.getuserData(b.value,a)),J._helper.self=c,a):"list"===b.ctype||"string"===b.ctype?(c= J._helper.self,J._helper.self=b,a=M(ka.getuserData(b,a)),J._helper.self=c,a):"JSON"===b.ctype?(c=J._helper.self,J._helper.self=b,a=M(J.getField(b,a.value)),J._helper.self=c,a):A):a}function Y(a){a=M(a);if("geo"===a.ctype){var b=a.value;if("P"===b.kind)return ka.getField(b,"xy");if("V"===b.kind)return b.value}return a}function Da(a){a=M(a);if("geo"===a.ctype){var b=a.value;if("P"===b.kind||"L"===b.kind)return ka.getField(b,"homog")}return h._helper.isNumberVecN(a,3)?a:h._helper.isNumberVecN(a,2)?(b= h.turnIntoCSList([a.value[0],a.value[1],n.real(1)]),a.usage&&(b=v.withUsage(b,a.usage)),b):A}function uc(a){var b=new Yc;b.usedFunctions=kd;b.infixmap=V;a=b.parse(a);for(var c in b.usedVariables)da.create(c);return a}function Tc(a,b){return{ctype:"infix",args:[],impl:function(){He=[{oper:b}];var c=M(a);He=[];return c}}}function sb(a){ib.err(a+He.map(function(b){return"\n at "+b.oper}).join("\n"))}function Le(){this._path=[];this._defs=[""];this._imgcache=[];this._body=[];this._saveStack=[""]; this._clipIndex=0;this._stroke=this._fill="#000";this._strokeOpacity=this._fillOpacity=null;this.height=this.width=0;this.lineWidth=1;this.lineCap="butt";this.lineJoin="miter";this.miterLimit=10;this.globalAlpha=1}function Me(){this._body=[];this._yPos=this._xPos=NaN;this._extGState={Af255:"<< /ca 1 >>",As255:"<< /CA 1 >>"};this._objects=[["%PDF-1.4\n"]];this._offset=this._objects[0][0].length;this._nextIndex=5;this._imgcache=[];this._xobjects={};this._pathUsed=-1;this._fillAlpha=this._strokeAlpha= this._globalAlpha=1;this.height=this.width=0;this.lineWidth=1;this.lineCap="butt";this.lineJoin="miter";this.miterLimit=10}function me(a,b){var c=a.width,d=a.height,f=document.createElement("canvas");f.setAttribute("width",c);f.setAttribute("height",d);f.setAttribute("style","display:none;");var k=Mb.canvas;k.parentNode.insertBefore(f,k.nextSibling);try{return f.getContext("2d").drawImage(a,0,0,c,d),f.toDataURL(b||"image/png")}finally{f.parentNode.removeChild(f)}}function Ne(a){a=a.replace(RegExp("[^ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/]+", "g"),"");var b=new Uint8Array(3*a.length>>2),c,d;for(d=c=0;c+3>4;b[d++]=k<<4|m>>2;b[d++]= m<<6|p}switch(a.length-c){case 0:break;case 2:f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c));k="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c+1));b[d++]=f<<2|k>>4;break;case 3:f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c));k="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c+1));m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c+ 2));b[d++]=f<<2|k>>4;b[d++]=k<<4|m>>2;break;default:throw Error("Malformed Base64 input: "+(a.length-c)+" chars left: "+a.substr(c));}if(d!==b.length)throw Error("Failed assertion: "+d+" should be "+b.length);return b}function Oe(a){function b(p){return(a[p]<<24|a[p+1]<<16|a[p+2]<<8|a[p+3])>>>0}if(57>a.length)throw Error("Too short to be a PNG file");if(2303741511!==b(0)||218765834!==b(4))throw Error("PNG signature missing");for(var c=[],d=8;da.length)throw Error("Incomplete chunk at offset 0x"+ d.toString(16));var f=b(d);if(2147483648<=f)throw Error("Chunk too long");var k=d+12+f;if(k>a.length)throw Error("Incomplete chunk at offset 0x"+d.toString(16));var m=a.subarray(d+4,d+8);m=String.fromCharCode.apply(String,m);c.push({len:f,type:m,data:a.subarray(d+8,d+8+f),crc:b(d+8+f)});d=k}return c}function vc(a,b){var c;if(c=/^rgba\(([0-9.]+), *([0-9.]+), *([0-9.]+), *([0-9.]+)\)$/.exec(a))b(+c[1],+c[2],+c[3],+c[4]);else if(c=/^rgb\(([0-9.]+), *([0-9.]+), *([0-9.]+)\)$/.exec(a))b(+c[1],+c[2],+c[3], 1);else throw Error("Can't handle color style "+a);}function ne(a){var b=1;Object.keys(Cc).forEach(function(c){var d=Cc[c].value.img;if(void 0===d.cachedDataURL&&d.src)if("data:"===d.src.substr(0,5))d.cachedDataURL=d.src;else{++b;d.cachedDataURL=null;var f=new XMLHttpRequest;f.responseType="blob";f.onreadystatechange=function(){if(f.readyState===XMLHttpRequest.DONE)if(200===f.status){var k=new FileReader;k.onloadend=function(){d.cachedDataURL=k.result;console.log("Cached data for image "+d.src);0=== --b&&a()};k.readAsDataURL(f.response)}else console.error("Failed to load "+d.src+": "+f.statusText),0===--b&&a()};f.open("GET",d.src,!0);f.send()}});0===--b&&a()}function wc(a,b,c){for(c||(c="0");a.length20/u&&(p=1E4)}else if("C"===f.kind)m=G.csnames[f.args[0]],p=0,"undefined"!==typeof f.radius&&(p=f.radius.value.real),k=n.div(m.homog.value[0],m.homog.value[2]).value.real, m=n.div(m.homog.value[1],m.homog.value[2]).value.real,k-=a.x,m-=a.y,p=Math.sqrt(k*k+m*m)-p,m=k=0,0>p&&(p=-p),p+=30/u;else if("L"===f.kind||"S"===f.kind)k=f.homog,p=n,m=p.add(p.mult(k.value[0],p.conjugate(k.value[0])),p.mult(k.value[1],p.conjugate(k.value[1]))),m=h.scaldiv(p.sqrt(m),k),p=m.value[0].value.real*a.x+m.value[1].value.real*a.y+m.value[2].value.real,k=m.value[0].value.real*p,m=m.value[1].value.real*p,0>p&&(p=-p),p+=1;if(pMath.abs(a.offset.x)&&.5>Math.abs(a.offset.y)&&!a.mover.tmp}function Pe(a){return sd(a)&&("L"===a.mover.kind||"S"===a.mover.kind)}function Ec(a){pb={mover:a,offset:{x:0,y:0},prev:{x:Za.x,y:Za.y}}}function Uc(){var a=rd(Za);sd(a)&&"P"===a.mover.kind?cc[Oc]=a.mover:(cc[Oc]={type:"Free",name:xc(),labeled:!0,pos:[Cb[0], Cb[1],1]},ic(cc[Oc]));Oc++}function Qe(){var a=rd(Za);return Pe(a)?(cc[Oc]=a.mover,Oc++,!0):!1}function Re(){var a=rd(Za);return Pe(a)||sd(a)&&"C"===a.mover.kind?(cc[Oc]=a.mover,Oc++,!0):!1}function $c(){var a=rd(Za);if(sd(a)&&"P"===a.mover.kind){Je.args[1]=a.mover.name;a=$jscomp.makeIterator(G.gslp);for(var b=a.next();!b.done;b=a.next())b=b.value,!0===b.tmp&&Ld(b.name)}else for(a=$jscomp.makeIterator(G.gslp),b=a.next();!b.done;b=a.next())b=b.value,!0===b.tmp&&(b.tmp=!1)}function Kd(a){var b={type:"Free", name:xc(),labeled:!0,pos:[Cb[0],Cb[1],1],tmp:!0};b=ic(b);Je=ic({type:a,name:xc(),labeled:!0,args:[cc[0].name,b.name]});Ec(b)}function jf(a){for(var b in a)null!==a[b]&&(ub[b]=a[b])}function kf(a){Object.keys(t).forEach(function(b){var c=t[b];Lc(c.signature||"_helper"===b,b+" has no signature");void 0!==c.updatePosition&&void 0===c.stateSize&&(c.stateSize=0)});G.gslp=[];G.csnames={};G.points=[];G.lines=[];G.conics=[];G.texts=[];G.free=[];G.polygons=[];G.ifs=[];G.sets={points:[],lines:[],conics:[]}; a.forEach(function(b,c){qe(b);try{Fc(b)}catch(d){console.error(d)}});Nd()}function Se(a){"undefined"===typeof a.tracedim&&(a.tracedim=1);"undefined"===typeof a.tracelength&&(a.tracelength=100);"undefined"===typeof a.traceskip&&(a.traceskip=1);a._traces=Array(a.tracelength);a._traces_index=0;a._traces_tick=0}function Te(a){void 0===a.size&&(a.size=ub.pointSize);a.size=n.real(a.size);!a.movable||a.pinned?(a.color=h.realVector(a.color||ub.pointColor),a.color=h.scalmult(n.real(ub.dimDependent),a.color)): a.color=h.realVector(a.color||ub.pointColor);void 0===a.alpha&&(a.alpha=ub.alpha);a.alpha=n.real(a.alpha);"boolean"!==typeof a.noborder&&(a.noborder=ub.noborder);a.noborder=v.bool(a.noborder);"boolean"!==typeof a.border&&(a.border=!ub.noborder);a.border=v.bool(a.border);a.drawtrace&&Se(a)}function ad(a){void 0===a.size&&(a.size=ub.lineSize);a.size=n.real(a.size);a.color=h.realVector(a.color||ub.lineColor);void 0===a.alpha&&(a.alpha=ub.alpha);a.alpha=n.real(a.alpha);a.clip=v.string(a.clip||ub.clip); void 0===a.overhang&&(a.overhang=ub.overhangLine);a.overhang=n.real(a.overhang);a.dashtype&&(a.dashtype=v.wrap(a.dashtype))}function yc(a){void 0===a.overhang&&(a.overhang=ub.overhangSeg);a.arrow&&(a.arrow=v.bool(a.arrow));a.arrowsize&&(a.arrowsize=n.real(a.arrowsize));a.arrowposition&&(a.arrowposition=n.real(a.arrowposition));a.arrowshape&&(a.arrowshape=v.string(a.arrowshape));a.arrowsides&&(a.arrowsides=v.string(a.arrowsides));ad(a);a.clip=v.string("end")}function oe(a){a.size=void 0!==a.textsize? a.textsize:ub.textsize;a.size=n.real(+a.size)}function pe(a){a.filled=void 0!==a.filled?v.bool(a.filled):v.bool(!0);a.fillcolor=void 0===a.fillcolor?A:h.realVector(a.fillcolor);void 0===a.fillalpha&&(a.fillalpha=0);a.fillalpha=n.real(a.fillalpha);ad(a)}function ic(a,b){a=qe(a);try{kb(a),Fc(a)}catch(c){console.error(c)}Nd();return"boolean"===typeof b&&b&&a.Duplicate?(b=a.Duplicate,console.log("duplication detected: removing "+a.name+" (type "+a.kind+") (duplicate of "+b.name+")."),Ld(a.name),b):a} function qe(a){if(void 0!==G.csnames[a.name]){console.log("Element name '"+a.name+"' already exists");var b=G.csnames[a.name];t[b.type].isMovable&&"P"===t[b.type].kind&&Vb(b,a.pos,"homog");return b}for(;de.hasOwnProperty(a.type);)a.type=de[a.type];if(b=xf[a.type]){var c=b(a),d=null;for(b=0;ba*a):!1}function bd(a,b){a.isshowing=!0;if(a.args)for(var c=0;c1E12*b(lc[c+1])&&(lc[c+1]=0)}function td(){if(ee)rc=!0;else throw Ef;}function Xe(a,b,c,d,f){return v.add(d,v.mult(c,v.sub(f,d)))}function mf(){xa&&(xa.currentMouseAndScripts=[]);zf=!0;if(pb){var a=pb.mover,b=h.realVector([Za.x+pb.offset.x,Za.y+pb.offset.y,1]);Ye(a,b,"mouse");pb.prev.x=Za.x;pb.prev.y= Za.y}M(Ma.move);M(Ma.draw);rc||cd();zf=!1;xa&&(xa.fullLog.push(h.turnIntoCSList([h.turnIntoCSList(xa.currentMouseAndScripts)])),xa.length>xa.logLength&&xa.splice(0,xa.length-xa.logLength),xa.currentMouseAndScripts=null,xa.postMouseHooks.forEach(function(c){c()}))}function Vb(a,b,c){Ye(a,b,c);zf||rc||cd()}function Ye(a,b,c){xa&&xa.currentMouseAndScripts&&(xa.currentMover=[]);a===Ff?(Hb.set(lc),rc=!1):(Ff=a,cd());Dc.set(Hb);var d=1E4;var f=gf[a.name];if(!f){var k={},m=0;f=[];k[a.name]=a;for(var p=$jscomp.makeIterator(G.gslp), u=p.next();!u.done;u=p.next()){u=u.value;var w=u.args;if(w){w=$jscomp.makeIterator(w);for(var y=w.next();!y.done;y=w.next())k.hasOwnProperty(y.value)&&(k[u.name]=u,f[m++]=u)}}gf[a.name]=f}k=-1;m=.9;var C;p=t[a.type];u=p.parameterPath||Xe;dc=a.stateIdx;w=p.getParamFromState(a);dc=mc=a.stateIdx;y=p.getParamForInput(a,b,c);for(var F=k+m;k!==F;){var I=F*F,W=.5/(1+I);W=n.complex(2*F*W+.5,(1-I)*W);ee=k+.5*m<=k||0===d;0===d&&console.log("tracing limit Reached");I=!1;xa&&xa.currentMouseAndScripts&&(xa.currentStep= []);try{dc=mc=a.stateIdx;var R=u(a,F,W,w,y);xa&&(xa.currentParam=R);W=Dc;Dc=Hb;p.putParamToState(a,R);Dc=W;mc=a.stateIdx;xa&&(xa.currentElement=a);p.updatePosition(a,!0);Lc(dc===a.stateIdx+p.stateSize,"State fully consumed");Lc(mc===a.stateIdx+p.stateSize,"State fully updated");for(C=0;CC){var F=[b,a];y=C}else F=[a,b];C=function(){};if(xa&&xa.currentStep){var I=[xa.labelTracing2,v.wrap(xa.currentElement.name),h.turnIntoCSList(F),h.turnIntoCSList([c,d]),h.realMatrix([[f,k],[m,p]]),v.wrap(y),v.wrap(u),v.wrap(w),A];xa.currentStep.push(h.turnIntoCSList(I));C=function(W){xa.hasOwnProperty(W)||(xa[W]=v.wrap(W));I[I.length- 1]=xa[W]}}h._helper.isNaN(a)||h._helper.isNaN(b)?(C("Tracing failed due to NaNs."),rc=!0):u>3*y&&w>3*y?C("Normal case, everything all right."):1E-5>w?1E-5>u?C("Staying inside singularity."):(C("Moved into singularity."),rc=!0):1E-5>u?C("Moved out of singularity."):(ee?C("Reached refinement limit, giving up."):C("Need to refine."),td());return F}function ue(a,b,c,d){var f=cb(3),k=cb(3),m=cb(3),p=cb(3);a=pf(a,b,c,d,f,k,m,p);Ua(a[0]);Ua(a[1]);Ua(a[2]);Ua(a[3]);return h.turnIntoCSList(a)}function pf(a, b,c,d,f,k,m,p){var u=function(){};f=[f,k,m,p];a=[a,b,c,d];if(ld)return a;k=0;d=Array(4);for(c=0;4>c;c++)for(d[c]=Array(4),p=0;4>p;p++)m=h.projectiveDistMinScal(f[c],a[p]),d[c][p]=m;m=bc(d);b=Array(4);for(c=0;4>c;++c)b[c]=a[m[c]],k+=d[c][m[c]];var w=1*k,y=Infinity,C=Infinity;for(c=0;4>c;c++){if(h._helper.isNaN(a[c]))return u("Tracing failed due to NaNs."),rc=!0,b;for(p=c+1;4>p;p++)m=h.projectiveDistMinScal(f[c],f[p]),y>m&&(y=m),m=h.projectiveDistMinScal(b[c],b[p]),C>m&&(C=m)}if(xa&&xa.currentStep){var F= [xa.labelTracing4,v.wrap(xa.currentElement.name),h.turnIntoCSList(b),h.turnIntoCSList(f),h.realMatrix(d),v.wrap(k),v.wrap(y),v.wrap(C),A];xa.currentStep.push(h.turnIntoCSList(F));u=function(I){xa.hasOwnProperty(I)||(xa[I]=v.wrap(I));F[F.length-1]=xa[I]}}y>w&&C>w||(1E-5>C?1E-5>y?u("Staying inside singularity."):(u("Moved into singularity."),rc=!0):1E-5>y?u("Moved out of singularity."):(ee?u("Reached refinement limit, giving up."):u("Need to refine."),td()));return b}function ve(a){var b=a.length,c, d;if(ld){for(c=0;c1-y&&(p= 1-y),y=h.sesquilinearproduct(a[c],a[d]).value,y=(y.real*y.real+y.imag*y.imag)/(m[c]*m[d]),u>1-y&&(u=1-y)}y=bc(w);d=Array(b);k=0;m=!1;for(c=0;c3*k&&u>3*k?a("Normal case, everything all right."):1E-5>u?1E-5>p?a("Staying inside singularity."):(a("Moved into singularity."),rc=!0):1E-5>p?a("Moved out of singularity."):(ee?a("Reached refinement limit, giving up."):a("Need to refine."),td());return d}function ud(a,b){a=t._helper.flattenConicMatrix(a);b=t._helper.flattenConicMatrix(b);var c=cb(6),d=cb(6);b=te(a,b,c,d);Ua(b[0]);Ua(b[1]);a=t._helper.buildConicMatrix(b[0].value);b= t._helper.buildConicMatrix(b[1].value);return h.turnIntoCSList([a,b])}function kb(a){if(kb.hasOwnProperty(a.kind))kb[a.kind](a)}function Fc(a){Fc.hasOwnProperty(a.kind)&&(a.incidences=[],Fc[a.kind](a))}function we(a,b){return function(){a.incidences.push(b.name);b.incidences.push(a.name)}}function vd(a,b){return function(){a.Duplicate=b}}function $e(a,b){return{getInvolved:function(){return[a,b]},toString:function(){return"point "+a.name+" incident line "+b.name},apply:we(a,b),holds:function(){var c= h.scaldiv(h.abs(a.homog),a.homog),d=h.scaldiv(h.abs(b.homog),b.homog);return n.abs(h.scalproduct(c,d)).value.realk;k++){for(var m in a){var p=G.csnames[m];!p.pinned&&t[p.type].isMovable&&(f=t[p.type].getRandomMove(p),Vb(p,f.value,f.type),Tb=Tb.filter(d))}b()}Hb.set(Nc.prover); se();for(b=0;b-n.eps&&a-n.eps},isAlmostReal:function(a){a=a.value.imag;return a-n.epsbig},isNaN:function(a){return isNaN(a.value.real)||isNaN(a.value.imag)},isFinite:function(a){return isFinite(a.value.real)&&isFinite(a.value.imag)},isAlmostImag:function(a){a=a.value.real;return a-n.epsbig},seed:"NO",seedrandom:function(a){a-=Math.floor(a);n._helper.seed=.8*a+.1},rand:function(){if("NO"=== n._helper.seed)return Math.random();var a=n._helper.seed;a=1E3*Math.sin(1E3*a);a-=Math.floor(a);return n._helper.seed=a},randnormal:function(){var a=n._helper.rand(),b=n._helper.rand();return Math.sqrt(-2*Math.log(a))*Math.cos(2*Math.PI*b)},isEqual:function(a,b){return a.value.real===b.value.real&&a.value.imag===b.value.imag},isLessThan:function(a,b){return a.value.real-d&&a-d},get z3a(){return n.complex(-.5,.5*Math.sqrt(3))},get z3b(){return n.complex(-.5,-.5*Math.sqrt(3))},get cub1(){return{ctype:"list",value:[n.one,n.one,n.one]}},get cub2(){return{ctype:"list",value:[n._helper.z3a,n.one,n._helper.z3b]}},get cub3(){return{ctype:"list",value:[n._helper.z3b,n.one,n._helper.z3a]}},solveCubicHelper:function(a, b,c,d){var f=a.value.real;a=a.value.imag;var k=b.value.real;b=b.value.imag;var m=c.value.real,p=c.value.imag,u=d.value.real,w=d.value.imag,y=f*m-a*p;c=f*p+a*m;d=4*y-(k*k-b*b);var C=4*c-2*k*b,F=f*k-a*b,I=f*b+a*k,W=d*m-C*p-18*(F*u-I*w);C=d*p+C*m-18*(F*w+I*u);d=27*(f*f-a*a);var R=54*a*f,fa=d*u-R*w,X=d*w+R*u,oa=k*k-b*b,ma=2*k*b,Ea=oa*k-ma*b,Ka=oa*b+ma*k,ua=fa+4*Ea;R=X+4*Ka;d=27*(W*m-C*p+ua*u-R*w);C=27*(W*p+C*m+ua*w+R*u);ua=Math.sqrt(Math.sqrt(d*d+C*C));R=Math.atan2(C,d);C=ua*Math.sin(R/2);d=ua*Math.cos(R/ 2);Ea=-2*Ea+9*(F*m-I*p)-fa+(d*f-C*a);Ka=-2*Ka+9*(F*p+I*m)-X+(d*a+C*f);d=Math.exp(Math.log(Math.sqrt(Ea*Ea+Ka*Ka))/3);m=Math.atan2(Ka,Ea);R=d*Math.sin(m/3);C=d*Math.cos(m/3);d*=d;m*=2;y=2*oa-6*y;c=2*ma-6*c;ma=-1.5874010519681994*(k*C-b*R);k=-1.5874010519681994*(k*R+b*C);b=1.2599210498948732*d*Math.cos(m/3);m=1.2599210498948732*d*Math.sin(m/3);d=4.762203155904598*(C*f-R*a);C=4.762203155904598*(C*a+R*f);f=d*d+C*C;R=(-y*C+c*d)/f;y=(y*d+c*C)/f;c=R;R=(-ma*C+k*d)/f;ma=(ma*d+k*C)/f;k=R;R=(-b*C+m*d)/f;b=(b* d+m*C)/f;m=R;return{ctype:"list",value:[n.complex(y,c),n.complex(ma,k),n.complex(b,m)]}},getRangeRand:function(a,b){return Math.random()*(b-a)+a}},niceprint:function(a,b){b=void 0===b?n._helper.roundingfactor:b;if("Angle"===a.usage)return n._helper.niceangle(a);var c=n._helper.niceround(a.value.real,b);a=n._helper.niceround(a.value.imag,b);return 0===a?""+c:0b?n.powIntegerExponent(n.inv(a), -b):0===b?n.one:0===b%2?n.powIntegerExponent(n.mult(a,a),b/2):n.mult(a,n.powIntegerExponent(n.mult(a,a),(b-1)/2))},log:function(a){var b=a.value.real;a=a.value.imag;var c=Math.sqrt(b*b+a*a),d=Math.atan2(a,b);0>a&&(d+=2*Math.PI);0===a&&0>b&&(d=Math.PI);d>Math.PI&&(d-=2*Math.PI);return n.snap({ctype:"number",value:{real:Math.log(c),imag:d}})},pow:function(a,b){return n._helper.isZero(b)?n.one:n._helper.isZero(a)?n.zero:[a,b].every(n._helper.isReal)?n.real(Math.pow(a.value.real,b.value.real)):n._helper.isReal(b)? (b=b.value.real,Number.isInteger(b)?n.powIntegerExponent(a,b):n.powRealExponent(a,b)):n.exp(n.mult(n.log(a),b))},mod:function(a,b){var c=a.value.real,d=b.value.real,f=a.value.imag,k=b.value.imag;c-=Math.floor(c/d)*d;f-=Math.floor(f/k)*k;0===d&&(c=0);0===k&&(f=0);return n.snap(Object.assign({},[a,b].every(function(m){return"Angle"===m.usage})&&{usage:"Angle"},{ctype:"number",value:{real:c,imag:f}}))},solveCubic:function(a,b,c,d){a=n._helper.solveCubicHelper(a,b,c,d);return[h.scalproduct(n._helper.cub1, a),h.scalproduct(n._helper.cub2,a),h.scalproduct(n._helper.cub3,a)]},getRandReal:function(a,b){a=n._helper.getRangeRand(a,b);return n.real(a)},getRandComplex:function(a,b){var c=n._helper.getRangeRand(a,b);a=n._helper.getRangeRand(a,b);return n.complex(c,a)}},h={_helper:{},turnIntoCSList:function(a){return{ctype:"list",value:a}}};h.EMPTY=h.turnIntoCSList([]);h.asList=function(a){return"list"===a.ctype?a:"number"===a.ctype||"boolean"===a.ctype||"geo"===a.ctype?h.turnIntoCSList([a]):h.EMPTY};h.realVector= function(a){for(var b=[],c=0;c=c||f>=d)&&v.isEqual(a.value[f],b.value[f]);)f++;return f===c&&ff&&(c=d,f=k)}return c};h.normalizeMax=function(a){var b=n.inv(h.maxval(a));return n._helper.isFinite(b)?h.scalmult(b,a):a};h.normalizeZ=function(a){var b=n.inv(a.value[2]);return h.scalmult(b,a)};h.dehom=function(a){a=a.value.slice();var b=a.length-1,c=n.inv(a[b]);a.length=b;for(var d=0;db&&(c=a.value[d],b=f.value.real)}return h.scaldiv(c,a)};h.recursive=function(a,b){for(var c=[],d=0;dh.abs(w).value.real&&0===p&&(w=h._helper.inverseIteration(a,d.value[c]));k.value[c]=h._helper.isAlmostZeroVec(w)?w:h.scaldiv(h.abs(w),w);cn.abs(n.sub(d.value[c],d.value[c+1])).value.real)?p++:p=0)}k=h.transpose(k)}return h.turnIntoCSList([d,k])};h._helper.isNormalMatrix=function(a){return 1E-10>h.abs(h.sub(a, h.transjugate(a))).value.real};h._helper.QRIteration=function(a,b){var c=n.real(a.value.length),d=c.value.real,f=c.value.real;n.real(0);h.idMatrix(c,c);var k=h.zeromatrix(c,c);c=h.idMatrix(c,c);var m=b?b:2500,p=0,u=Array(f);for(b=0;bn.abs2(a.value[a.value.length-1].value[a.value[0].value.length-2]).value.real&&1f;f++)d=h.scaldiv(h.abs(d),d),d=h.LUsolve(h.sub(a,h.scalmult(b,c)),JSON.parse(JSON.stringify(d)));return h.scaldiv(h.abs(d),d)};h._helper.swapEl=function(a,b,c){if("[object Array]"===Object.prototype.toString.call(a)){var d=a[b];a[b]=a[c]; a[c]=d}else"list"===a.ctype&&(d=a.value[b],a.value[b]=a.value[c],a.value[c]=d)};h.RRQRdecomp=function(a,b){var c=Math.sqrt(n.eps);void 0!==b&&(c=.1*b.value.real);b=c*c;var d;c=a.value.length;var f=n.real(c),k=n.real(1),m=h._helper.unitvector(n.real(a.value.length),k),p=h.idMatrix(f,f),u=JSON.parse(JSON.stringify(a)),w=h.transpose(a);a=Array(c);for(d=0;db&&C++;break}f=n.sub(f,k);m.value= m.value.splice(0,m.value.length-1)}return{Q:p,R:u,P:h.turnIntoCSList(w),rank:n.real(C)}};h._helper.getHouseHolder=function(a){var b=n.real(a.value.length);if(1E-16>h.abs2(a))return h.idMatrix(b,b);var c=n.real(1),d=h._helper.unitvector(n.real(a.value.length),c);var f=h._helper.QRgetAlpha(a,0);f=h.sub(a,h.scalmult(f,d));f=h.scaldiv(h.abs(f),f);a=n.div(h.sesquilinearproduct(a,f),h.sesquilinearproduct(f,a));b=h.idMatrix(b,b);return b=h.sub(b,h.scalmult(n.add(c,a),h._helper.transposeMult(f,h.conjugate(f))))}; h._helper.reOrderbyPivots=function(a,b){var c=a.value.length.length;a=h.transpose(a);c=Array(c);for(var d=0;da.value[b].value.real?h.abs(a):n.neg(h.abs(a))};h.LUdecomp=function(a){a=JSON.parse(JSON.stringify(a));var b,c,d=0,f=a.value.length,k=f-1,m=Array(f);for(c=0;c=k&&console.log("CG did not converge");return d};h.det=function(a){if(1===a.value.length)return a.value[0].value[0]; if(2===a.value.length)return h.det2(a.value[0],a.value[1]);if(3===a.value.length)return h.det3(a.value[0],a.value[1],a.value[2]);if(4===a.value.length)return h.det4m(a);var b=a.value.length,c=n.real(1),d,f=JSON.parse(JSON.stringify(a));for(a=0;an.abs(f.value[k].value[a]).value.real&&(k=d);k!==a&&(d=f.value[k],f.value[k]=f.value[a],f.value[a]=d,c=n.neg(c));var m=f.value[a];for(d=a+1;df.maxElVisit||f.level>f.maxLevel)return d&&!d.printedWarning&&(console.log("Warning: We visited a key-value pair very often or encountered a very deeply nested dictionary. Dictionary is probably cyclic. Output will be probably incomplete."),d.printedWarning=!0),k+":...";f.newLevel&&(f.tracker.set(m, f.tracker.get(m)+1),f.newLevel=!1)}else f.tracker.set(m,1);return k+":"+J._helper.niceprint(m,b,d)}).join(", ")+"}"}},x={key:function(a){if("string"===a.ctype)return"s"+a.value.length+":"+a.value+";";if("number"===a.ctype)return"n"+a.value.real+","+a.value.imag+";";if("list"===a.ctype)return"l"+a.value.length+":"+a.value.map(x.key).join(",")+";";if("boolean"===a.ctype)return"b"+a.value+";";if("dict"===a.ctype)return a=Object.keys(a.value).sort(),"d"+a.length+":"+a.join(",")+";";"undefined"!==a.ctype&& ib.err("Bad dictionary key: "+Ca(a));return"undef"},create:function(){return{ctype:"dict",value:{}}},clone:function(a){var b=x.create(),c;for(c in a.value)a.value.hasOwnProperty(c)&&(b.value[c]=a.value[c]);return b},put:function(a,b,c){a.value[x.key(b)]={key:b,value:c}},get:function(a,b,c){return(a=a.value[x.key(b)])?a.value:c},niceprint:function(a){return"{"+Object.keys(a.value).sort().map(function(b){b=a.value[b];return Ca(b.key)+":"+Ca(b.value)}).join(", ")+"}"}},v={_helper:{},order:{undefined:0, boolean:1,number:2,term:3,atomic:4,variable:5,geo:6,string:7,list:8},string:function(a){return{ctype:"string",value:a}},bool:function(a){return{ctype:"boolean",value:a}},not:function(a){return v.bool(!a.value)},isLessThan:function(a,b){return-1===v.compare(a,b)},isEqual:function(a,b){return 0===v.compare(a,b)},compareResults:function(a,b){return v.compare(a.result,b.result)},compare:function(a,b){if(a.ctype!==b.ctype)return v.order[a.ctype]-v.order[b.ctype];if("number"===a.ctype)return n._helper.compare(a, b);if("list"===a.ctype)return h._helper.compare(a,b);if("geo"===a.ctype)return a.value.name===b.value.name?0:a.value.name"]=function(a,b){b=Y(a[0]);a=Y(a[1]);return"number"===b.ctype&&"number"===a.ctype&&n._helper.isAlmostReal(b)&&n._helper.isAlmostReal(a)?{ctype:"boolean",value:b.value.real-a.value.real>=n.eps}:A};V["=:="]=Va("=:=");V[">="]=function(a, b){b=Y(a[0]);a=Y(a[1]);return"number"===b.ctype&&"number"===a.ctype&&n._helper.isAlmostReal(b)&&n._helper.isAlmostReal(a)?{ctype:"boolean",value:b.value.real>=a.value.real}:"string"===b.ctype&&"string"===a.ctype?{ctype:"boolean",value:b.value>=a.value}:A};V["<="]=function(a,b){b=Y(a[0]);a=Y(a[1]);return"number"===b.ctype&&"number"===a.ctype&&n._helper.isAlmostReal(b)&&n._helper.isAlmostReal(a)?{ctype:"boolean",value:b.value.real<=a.value.real}:"string"===b.ctype&&"string"===a.ctype?{ctype:"boolean", value:b.value<=a.value}:A};V["~>="]=function(a,b){b=Y(a[0]);a=Y(a[1]);return"number"===b.ctype&&"number"===a.ctype&&n._helper.isAlmostReal(b)&&n._helper.isAlmostReal(a)?{ctype:"boolean",value:b.value.real-a.value.real>-n.eps}:A};V["~<="]=function(a,b){b=Y(a[0]);a=Y(a[1]);return"number"===b.ctype&&"number"===a.ctype&&n._helper.isAlmostReal(b)&&n._helper.isAlmostReal(a)?{ctype:"boolean",value:b.value.real-a.value.real"]=function(a,b){b=Y(a[0]);a=Y(a[1]);return"number"===b.ctype&&"number"=== a.ctype&&n._helper.isAlmostReal(b)&&n._helper.isAlmostReal(a)?{ctype:"boolean",value:b.value.real>a.value.real}:"string"===b.ctype&&"string"===a.ctype?{ctype:"boolean",value:b.value>a.value}:A};V["<"]=function(a,b){b=Y(a[0]);a=Y(a[1]);return"number"===b.ctype&&"number"===a.ctype&&n._helper.isAlmostReal(b)&&n._helper.isAlmostReal(a)?{ctype:"boolean",value:b.value.real"]=yb;V["\u2208"]=function(a,b){b= M(a[0]);a=M(a[1]);return"list"===a.ctype?h.contains(a,b):A};V["\u2209"]=function(a,b){b=M(a[0]);a=M(a[1]);return"list"===a.ctype?v.not(h.contains(a,b)):A};V["&"]=gc;V["%"]=Qc;V["!="]=yb;V["~!="]=function(a,b){return v.not(Yb(a,b))};V[".."]=function(a,b){b=M(a[0]);a=M(a[1]);return"number"===b.ctype&&"number"===a.ctype?h.sequence(b,a):A};V["++"]=Hd;V["--"]=S;V["~~"]=pc;V[":>"]=pd;V["<:"]=ie;V["="]=Sa;V[":="]=function(a,b,c){b="undefined"===a[1].ctype;if("undefined"===a[0].ctype||b)return A;if("function"=== a[0].ctype){b=a[0].oper;var d=a[0].args;a=a[1];var f=1;if(K.hasOwnProperty(b)){f=K[b];if(f.definer===c)return A;f=f.generation+1}K[b]={oper:b,body:a,arglist:d,definer:c,generation:f}}else"variable"===a[0].ctype?da.setvar(a[0].name,a[1]):"field"===a[0].ctype?O.assigndotNoVal(a[0],a[1]):"userdata"===a[0].ctype&&O.assigncolonNoVal(a[0],a[1]);return A};V[":=_"]=function(a,b){if("void"!==a[1].ctype)return A;"function"===a[0].ctype&&delete K[a[0].oper];return A};V["::="]=Va("::=");V[";"]=function(a,b){b= "void"===a[0].ctype;var c="void"===a[1].ctype;if(b&&c)return A;if(!b&&c)return M(a[0]);b||c||M(a[0]);return c?A:M(a[1])};Ca.errorTypes=["_?_","_??_","_???_","___"];var B={},O={evaluate:function(a,b,c){if(K.hasOwnProperty(a)){a=K[a];if(void 0===a)b=A;else{var d=[];for(c=0;c "+Ca(b[a]))};da.vstack= [];da.pushVstack=function(a){this.vstack.push(a)};da.popVstack=function(){this.vstack.pop()};da.cleanVstack=function(){for(var a=this.vstack;0 "+Ca(M(a));sb(a);return A};B.errc$1=function(a,b){"variable"===a[0].ctype?(b=M(da.getvar(a[0].name)),console.log(a[0].name+" ===> "+Ca(b))):(b=M(a[0]),console.log(" ===> "+Ca(b)));return A};B.print$1=function(a, b){ib.out(Ca(M(a[0]),b),!0);return A};B.println$1=function(a,b){ib.out(Ca(M(a[0],b)));return A};B.assert$2=function(a,b){var c=M(a[0]);if("boolean"===c.ctype){if(!1===c.value)return B.println$1([a[1]],b)}else sb("Condition for assert is not boolean");return A};B.dump$1=function(a,b){console.log(JSON.stringify(a[0]));return A};B.repeat$2=function(a,b){return B.repeat$3([a[0],null,a[1]],b)};B.repeat$3=function(a,b){var c=Y(a[0]),d="#";null!==a[1]&&"variable"===a[1].ctype&&(d=a[1].name);if("number"!== c.ctype)return A;c=Math.round(c.value.real);var f=1,k=1,m=c+1,p=!1,u=!1,w=!1;if(void 0!==b.start){var y=M(b.start);"number"===y.ctype&&(p=!0,k=y.value.real)}void 0!==b.step&&(y=M(b.step),"number"===y.ctype&&(w=!0,f=y.value.real));void 0!==b.stop&&(y=M(b.stop),"number"===y.ctype&&(u=!0,m=y.value.real));!p||u||w||(m=f*c+k);p||!u||w||(k=-f*(c-1)+m,m+=f);p||u||!w||(m=f*c+k);p&&u&&!w&&(f=(m-k)/(c-1),m+=f);p&&!u&&w&&(m=f*c+k);!p&&u&&w&&(k=-f*(c-1)+m,m+=f);p&&u&&w&&(m+=f);(k<=m&&0=m&&0>f)&&p&&u&&w&& (c=Math.floor((m-k)/f));da.newvar(d);b=A;for(m=0;mk&&(k=d.value.length+k+1);0=d)return h.turnIntoCSList([]);if(n._helper.isZero(a.value[d]))return b=O.roots(h.turnIntoCSList(a.value.slice(0,d))),h.append(b,n.infinity);if(1===d)b[0]=n.neg(n.div(a.value[0],a.value[1]));else if(2===d)b=O.quadratic_roots(a);else{for(var f=0;fa.value.real)return sb("grade cant be < 1"),A;a=n.add(a,n.real(1));return Ra.autodiff(c,b,d,a)};B.cos$1=function(a,b){a=Y(a[0]);return"number"===a.ctype?n.cos(a):A};B.tan$1=function(a,b){a=Y(a[0]);return"number"===a.ctype?n.tan(a):A};B.arccos$1=function(a,b){a=Y(a[0]);return"number"===a.ctype?n.arccos(a):A};B.arcsin$1=function(a,b){a=Y(a[0]);return"number"===a.ctype?n.arcsin(a):A};B.arctan$1=function(a, b){a=Y(a[0]);return"number"===a.ctype?n.arctan(a):A};B.arctan2$2=function(a,b){b=Y(a[0]);a=Y(a[1]);return"number"===b.ctype&&"number"===a.ctype?n.arctan2(b,a):A};B.arctan2$1=function(a,b){a=Y(a[0]);if("list"===a.ctype&&2===a.value.length){if(a=a.value,"number"===a[0].ctype&&"number"===a[1].ctype)return B.arctan2$2(a,b)}else if("number"===a.ctype)return n.arctan2(a);return A};B.log$1=function(a,b){a=Y(a[0]);return"number"===a.ctype?n.log(a):A};O.recursiveGen=function(a){var b=n[a],c=h[a];B[a+"$1"]= function(d,f){d=Y(d[0]);return"number"===d.ctype?b(d):"list"===d.ctype?c(d):A}};O.recursiveGen("im");O.recursiveGen("re");O.recursiveGen("conjugate");O.recursiveGen("round");O.recursiveGen("ceil");O.recursiveGen("floor");O.recursiveGen("abs");B.abs_infix=B.abs$1;B.random$0=function(a,b){return n.real(n._helper.rand())};B.random$1=function(a,b){a=Y(a[0]);return"number"===a.ctype?n.complex(a.value.real*n._helper.rand(),a.value.imag*n._helper.rand()):A};B.seedrandom$1=function(a,b){a=Y(a[0]);"number"=== a.ctype&&n._helper.seedrandom(a.value.real);return A};B.randomnormal$0=function(a,b){return n.real(n._helper.randnormal())};B.randominteger$1=function(a,b){b=Y(a[0]);return"number"===b.ctype?(a=b.value.real|0,b=b.value.imag|0,a=a*n._helper.rand()|0,b=b*n._helper.rand()|0,n.complex(a,b)):A};B.randomint$1=B.randominteger$1;B.randombool$0=function(a,b){return.5f)return n.real(0);if(0===f)return n.real(1);if(1===f)return d;for(var m=b=a=1;m<=f;++m){var p=k-f+m|0,u=m|0,w=qd(p,u)|0;p=p/w|0;u=u/w|0;w=qd(a,u)|0;a=a/w|0;u=u/w|0;w=qd(p,b)|0;p=p/w|0;b=b/w|0;a=a*p|0;b=b*u|0}return n.real(a/b)}if("list"===d.ctype){k=d.value.length;if(0>f||f>k)return h.turnIntoCSList([]); if(0===f)return h.turnIntoCSList([h.turnIntoCSList([])]);if(f===k)return h.turnIntoCSList([d]);var y=[];var C=Array(f);c(0,0);return h.turnIntoCSList(y)}}return A};B.zeromatrix$2=function(a,b){b=Y(a[0]);a=Y(a[1]);return"number"===b.ctype&&"number"===a.ctype?h.zeromatrix(b,a):A};B.zerovector$1=function(a,b){a=Y(a[0]);return"number"===a.ctype?h.zerovector(a):A};B.transpose$1=function(a,b){a=Y(a[0]);return"list"===a.ctype&&-1!==h._helper.colNumb(a)?h.transpose(a):A};B.row$2=function(a,b){b=Y(a[0]);a= Y(a[1]);return"number"===a.ctype&&"list"===b.ctype&&-1!==h._helper.colNumb(b)?h.row(b,a):A};B.column$2=function(a,b){b=Y(a[0]);a=Y(a[1]);return"number"===a.ctype&&"list"===b.ctype&&-1!==h._helper.colNumb(b)?h.column(b,a):A};B.dict$0=function(a,b){a=x.create();for(var c in b)b.hasOwnProperty(c)&&x.put(a,v.string(c),M(b[c]));return a};B.put$3=function(a,b){b=M(a[0]);var c=M(a[1]);a=M(a[2]);return"dict"===b.ctype?(b=x.clone(b),x.put(b,c,a),b):A};B.get$2=function(a,b){b=M(a[0]);a=M(a[1]);return"dict"=== b.ctype?x.get(b,a,A):A};B.red$1=function(a,b){a=M(a[0]);return"number"===a.ctype?h.realVector([Math.min(1,Math.max(0,a.value.real)),0,0]):A};B.green$1=function(a,b){a=M(a[0]);return"number"===a.ctype?h.realVector([0,Math.min(1,Math.max(0,a.value.real)),0]):A};B.blue$1=function(a,b){a=M(a[0]);return"number"===a.ctype?h.realVector([0,0,Math.min(1,Math.max(0,a.value.real))]):A};B.gray$1=function(a,b){a=M(a[0]);return"number"===a.ctype?(a=Math.min(1,Math.max(0,a.value.real)),h.realVector([a,a,a])):A}; B.grey$1=B.gray$1;O.HSVtoRGB=function(a,b,c){a&&void 0===b&&void 0===c&&(b=a.s,c=a.v,a=a.h);var d=Math.floor(6*a);var f=6*a-d;a=c*(1-b);var k=c*(1-f*b);b=c*(1-(1-f)*b);switch(d%6){case 0:var m=c;var p=b;var u=a;break;case 1:m=k;p=c;u=a;break;case 2:m=a;p=c;u=b;break;case 3:m=a;p=k;u=c;break;case 4:m=b;p=a;u=c;break;case 5:m=c,p=a,u=k}return h.realVector([m,p,u])};B.hue$1=function(a,b){a=M(a[0]);return"number"===a.ctype?(a=a.value.real,a-=Math.floor(a),O.HSVtoRGB(a,1,1)):A};O.shapeconvert=function(a){if("circle"=== a.type){var b=a.value.value[0];b=v.div(b,b.value[2]);var c=b.value[0].value.real,d=b.value[1].value.real;a=a.value.value[1].value.real;var f=Array(125);var k=2*Math.PI/125;for(b=0;125>b;b++)f[b]={X:c+Math.cos(b*k)*a,Y:d+Math.sin(b*k)*a};return[f]}if("polygon"===a.type){c=[];for(b=0;b=b?b=String.fromCharCode(b):(b-=65536,b=String.fromCharCode((b>>10)+55296,(b&1023)+56320));return v.string(b)};B.international$1=function(a,b){return B.international$2([a[0],null],b)};B.international$2=function(a,b){b=M(a[0]);if("string"!==b.ctype)return A;var c=(Z.translations||{})[Z.language||"en"]||{};if(!c.hasOwnProperty(b.value))return b;var d=c[b.value];if("string"===typeof d)return v.string(d);if(null===a[1])return b;a=M(a[1]);a="number"===a.ctype?a.value.real:0;a=(c._pluralFormFunction|| Ke)(a);return aMath.min(p[0],p[1])};a=G.points.filter(function(p){return.5>d(p.homog)});b=G.lines.filter(function(p){var u=f(p.homog);u=h.normalizeMax(h.cross(p.homog,u));if((u=.5>d(u))&&"S"===p.kind){var w=p.homog;w=h.turnIntoCSList([w.value[0],w.value[1],n.zero]);p=h.crossratio3(p.farpoint,p.startpos,p.endpos,c,w).value.real;if(0>p||1p.value.real&&(w=n.neg(w));0>w.value.real&&(u=!1)}return u});a=a.concat(b,m);return h.ofGeos(a)};B.incidences$1=B.allelements$1;B.createpoint$2=function(a,b){b=M(a[0]);a=Da(a[1]);return"string"!==b.ctype?(sb("Name must be a string"),A):"list"!==a.ctype&&h.isNumberVector(a)? (sb("Position must be a number vector"),A):{ctype:"geo",value:qe({name:b.value,type:"Free",labeled:!0,pos:a})}};B.create$3=function(a,b){var c=M(a[0]),d=M(a[1]),f=M(a[2]);a={};for(var k in b)a[k]=Y(b[k]);if("string"===c.ctype)k=c.value;else{if("list"!==c.ctype)return sb("Names must be a string or a list of strings"),A;if(1!==c.value.length){k=v.string(c.value.map(function(w){return w.value}).join("__"));f=B.create$3([k,d,f],a);var m=[];if(f!==A)for(d=v.string(f.value.kind.replace(/^(.*)s$/,"Select$1")), f=h.turnIntoCSList([v.string(f.value.name)]),b=0;bC&!y;C++)8!==C&&9!==C&&w(String.fromCharCode(65+ C));else if("L"===u||"S"===u)for(C=0;26>C&!y;C++)8!==C&&9!==C&&w(String.fromCharCode(97+C));for(C=0;!y;C++)w(u+C);return y}var d=M(a[0]);a=M(a[1]);var f={};for(k in b)f[k]=Y(b[k]);if(!t.hasOwnProperty(d.value)&&!de.hasOwnProperty(d.value)&&!xf.hasOwnProperty(d.value))return sb("Invalid geometric operation: '"+d.value+"'"),A;for(;de.hasOwnProperty(d.value);)d.value=de[d.value];var k=t[d.value];b=v.string(c(k.kind));if(a.value.length>k.signature.length){var m="Operation "+d.value+" requieres only "+ k.signature.length+" argument"+(1===k.signature.length?"":"s")+" ("+a.value.length+" argument"+(1===a.value.length?"":"s")+" given) to create "+b.value+". Ignoring the last arguments.";if(!f.pos){var p=Da(a.value[a.value.length-1]);p!==A&&(m+=" Use the last argument as modifier `pos`.",f.pos=p)}sb(m);a=h.turnIntoCSList(a.value.slice(0,k.signature.length))}k=B.create$3([b,d,a],f);if(k!==A&&"s"===k.value.kind[1]&&k.value.results){d=v.string("Select"+k.value.kind[0]);a=h.turnIntoCSList([v.string(k.value.name)]); if(f.pos)return b=v.string(c(k.value.kind[0])),B.create$3([b,d,a],f);m=[];for(p=0;pu&&(u=y.length)});k=[];for(p=0;p d.length)for(m=d.length;m")};B.guess$1=function(a,b){function c(u){if((u=ec.doPSLQ([u,1,Math.PI*Math.E],15))&&0===u[2])return[Math.round(u[0]),Math.round(u[1])]}function d(u){if(n._helper.isAlmostZero(u))return"0";if(!n._helper.isAlmostReal(u)){var w= u.value.real,y=u.value.imag,C=c(w),F=c(w*w+y*y);if(C&&F){w=-C[0]*F[0];var I=-C[1]*F[0]*2,W=C[0]*F[1];C=k(-I,2*w);F=I*I-4*W*w;u=m(F);F/=u*u;F=u===2*w?"+i*sqrt("+-F+")":u===-2*w?"+i*sqrt("+-F+")":"+i*"+k(u,2*w).substring(1)+"*sqrt("+-F+")";u="-"+F.substring(1);I=Math.abs((I*I-4*W*w)/(4*w*w));w=Math.sqrt(I);I=-Math.sqrt(I);if("+0"===C||"-0"===C)C="";y=Math.abs(y-w)(C=f(R))){w=u.value.real;I=R[0];F=-R[1];R=R[2];var X="";if(0!==I){var oa=Math.round(I);var ma=Math.round(F);X=k(oa,ma)+"*pi"}oa="";0!==R&&(oa=Math.round(R),ma=Math.round(F),oa=k(oa,ma));p=Math.abs(w-(R/F+Math.PI*I/F));w=oa+X;""===w?w="0":w.startsWith("+")&&(w=w.substring(1));I=p}X=ec.doPSLQ([u.value.real*u.value.real,u.value.real,1],15);F=1E5;if(X&&9E3>(F=10+f(X))){u=u.value.real;fa=X[0];R=X[1];X=X[2];oa=Math.round(fa);ma=Math.round(R);var Ea=Math.round(X);W=k(-ma, 2*oa);ma=ma*ma-4*Ea*oa;Ea=m(ma);ma/=Ea*Ea;oa=Ea===2*oa?"+sqrt("+ma+")":Ea===-2*oa?"-sqrt("+ma+")":k(Ea,2*oa)+"*sqrt("+ma+")";ma=-R/(2*fa);X=Math.abs((R*R-4*X*fa)/(4*fa*fa));oa="+"+oa.substring(1);fa="-"+oa.substring(1);R=ma+Math.sqrt(X);X=ma-Math.sqrt(X);if("+0"===W||"-0"===W)W="";Math.abs(u-R)I&&(y=w);Ffa&&(y=W);return y}function f(u){var w=Math.abs(u[0]);Math.abs(u[1])> w&&(w=Math.abs(u[1]));Math.abs(u[2])>w&&(w=Math.abs(u[2]));return w}function k(u,w){var y="+";0>u*w&&(u=Math.abs(u),w=Math.abs(w),y="-");var C=qd(u,w);u/=C;w/=C;0>u&&0>w&&(u=-u,w=-w);return 1===w?y+u:y+u+"/"+w}function m(u){for(var w=3E3;0(c.x-b.x)*(c.x-b.x)+(c.y-b.y)*(c.y-b.y)||1E-12>p||1E-12>k)return A;0>h.crossratio3(d,a,f,h.cross(h.cross(d,f),h.linfty),h.ii).value.real?N.drawsegcore(c,m):N.drawRaySegment(d,a)}return A};O.drawcircle=function(a,b,c){var d=Y(a[0]);a=Y(a[1]);var f=O.extractPoint(d);if(!f.ok||"number"!==a.ctype||!n._helper.isAlmostReal(a))return A;d=P.drawingstate.matrix;var k=f.x*d.a-f.y*d.b+d.tx;f=f.x*d.c-f.y*d.d-d.ty;N.handleModifs(b,N.conicModifs); N.preDrawCurve();Q.lineJoin="miter";Q.beginPath();Q.arc(k,f,Math.abs(a.value.real)*d.sdet,0,2*Math.PI);Q.closePath();"D"===c&&Q.stroke();"F"===c&&(Q.fillStyle=N.lineColor,Q.fill());"C"===c&&Q.clip();return A};B.drawconic$1=function(a,b){a=Y(a[0]);if("list"!==a.ctype||3!==a.value.length&&6!==a.value.length)return console.error("could not parse conic"),A;if(6===a.value.length){for(var c=0;6>c;c++)if("number"!==a.value[c].ctype)return console.error("could not parse conic"),A;var d=n.real(.5);c=a.value[0]; var f=a.value[2];f=n.mult(f,d);var k=a.value[1],m=a.value[3];m=n.mult(m,d);var p=a.value[4];p=n.mult(p,d);a=a.value[5];a=h.turnIntoCSList([h.turnIntoCSList([c,f,m]),h.turnIntoCSList([f,k,p]),h.turnIntoCSList([m,p,a])])}else{if(!h.isNumberMatrix(a).value||3!==a.value.length||3!==a.value[0].value.length)return A;c=h.transpose(a);h.equals(a,c).value||(a=h.add(c,a))}return O.drawconic(a,b)};O.drawconic=function(a,b){function c(za,vb){za=(u*za+w*vb+y)*za+(C*vb+F)*vb+I;return 0<=za?1:0>za?-1:NaN}function d(za){Aa.next= za;za.prev=Aa;return Aa=za}function f(za,vb,Ub,Qb){return{a:za,b1:vb,b2:Ub,vertical:!0,index:Qb,sign:function(Ib){return c(za,Ib)},mkp:function(Ib){return{x:za,y:Ib}},sol:Wc(C,w*za+F,(u*za+y)*za+I),discr:function(){return Wc(ma,-2*fa,W)},tpt:function(Ib){return{x:Ib,y:-.5*(w*Ib+F)/C}}}}function k(za,vb,Ub,Qb){return{a:za,b1:vb,b2:Ub,vertical:!1,index:Qb,sign:function(Ib){return c(Ib,za)},mkp:function(Ib){return{x:Ib,y:za}},sol:Wc(u,w*za+y,(C*za+F)*za+I),discr:function(){return Wc(ma,-2*oa,X)},tpt:function(Ib){return{x:-.5* (w*Ib+y)/u,y:Ib}}}}function m(za){var vb=Math.min(za.b1,za.b2),Ub=Math.max(za.b1,za.b2),Qb=za.sign(vb),Ib=za.sign(Ub);if(!isFinite(Qb*Ib))return!1;var qb=za.sol;if(Qb!==Ib){if(null===qb)return!1;var wb=.5*(qb[0]+qb[1]);wb>vb&&wb=Ea)return!0;qb=za.discr();if(null===qb)return!0;za=za.tpt(qb[za.index]);za.x>=Ka&&za.x<=Ia&&za.y>=ua&&za.y<=Ja&&d(za);return!0}wb= .5*(qb[0]+qb[1]);if(!(wb>vb&&wbza.b2&&(qb=[qb[1],qb[0]]);Na.push(d(za.mkp(qb[0])));Na.push(d(za.mkp(qb[1])))}return!0}function p(za,vb,Ub,Qb,Ib){var qb=vb-Qb,wb=Ub-za,oc=za*Qb-vb*Ub,Xb=fa*qb+oa*wb+ma*oc;if(1E-14>Math.abs(Xb))return Q.lineTo(Ub,Qb);var fe=(W*qb+R*wb+fa*oc)/Xb;qb=(R*qb+X*wb+oa*oc)/Xb;if(!isFinite(fe)||!isFinite(qb)||.04>Math.abs(za*qb+fe*Qb+Ub*vb-Ub*qb-fe*vb-za*Qb))return Q.lineTo(Ub,Qb);do if(!(10sc*sc+Xb*Xb)){var Gf=u*sc*sc+w*sc*Xb+C*Xb*Xb,Bf=2*u*sc*oc+w*(sc*wb+Xb*oc)+2*C*Xb*wb+y*sc+F*Xb,Hf=(u*oc+w*wb+y)*oc+(C*wb+F)*wb+I,Pc=Wc(Gf,Bf,Hf);Pc||(Pc=[-.5*Bf/Gf,-2*Hf/Bf]);if(0oc*oc+wb*wb)){p(za,vb,sc,Xb,Ib+1);p(sc,Xb,Ub,Qb,Ib+1);return}}}while(0);Q.quadraticCurveTo(fe,qb,Ub,Qb)}N.handleModifs(b,N.conicModifs);if(0!==N.lsize&&(N.preDrawCurve(), a=h.normalizeMax(a),h._helper.isAlmostReal(a))){b=P.toMat();a=h.mult(h.transpose(b),a);a=h.mult(a,b);a=h.normalizeMax(a);var u=a.value[0].value[0].value.real,w=2*a.value[0].value[1].value.real,y=2*a.value[0].value[2].value.real,C=a.value[1].value[1].value.real,F=2*a.value[1].value[2].value.real,I=a.value[2].value[2].value.real,W=4*I*C-F*F,R=F*y-2*I*w,fa=F*w-2*C*y,X=4*I*u-y*y,oa=y*w-2*F*u,ma=4*C*u-w*w,Ea=ma;a=C*X+w*R+u*W-I*ma;0>a&&(u=-u,w=-w,y=-y,C=-C,F=-F,I=-I,a=-a);a=N.lsize;var Ka=-a,ua=-a,Ia=nb+ a,Ja=fb+a,Na=[],Aa=a={};if(m(f(Ka,ua,Ja,0))&&m(k(Ja,Ka,Ia,1))&&m(f(Ia,Ja,ua,1))&&m(k(ua,Ia,Ka,0))&&Aa!==a){Aa.next=a.next;a.next.prev=Aa;Q.beginPath();if(0===Na.length){var Ta=Aa;Q.moveTo(Ta.x,Ta.y);do{var hb=Ta.next;p(Ta.x,Ta.y,hb.x,hb.y,0);Ta=hb}while(Ta!==Aa);Q.closePath()}b=1===c(Ka,ua)?0:1;if(4===Na.length){var Pb=0;for(a=0;2>a;++a){Ta=Na[a];hb=Na[a+2];var jb=hb.x-Ta.x;Ta=hb.y-Ta.y;Ta=(u*jb+w*Ta)*jb+C*Ta*Ta;Math.abs(Ta)>Math.abs(Pb)&&(Pb=Ta)}if(isNaN(Pb))return;0<=Pb&&(b=1-b)}for(a=b;af&&(f=c[k].value.length);-1===f?(c=c.map(function(I){return[I]}),f=1):c=c.map(function(I){return h.asList(I).value});var m=100,p=null,u=!0,w=P.drawingstate.textcolor;N.handleModifs(b,{size:!0,color:function(I){h._helper.isNumberVecN(I,3)&&(w=N.makeColor([I.value[0].value.real,I.value[1].value.real,I.value[2].value.real]))},alpha:!0,bold:!0, italics:!0,family:!0,align:!0,xoffset:!0,yoffset:!0,offset:!0,width:function(I){"number"===I.ctype&&(m=I.value.real)},height:function(I){"number"===I.ctype&&(p=I.value.real)},border:function(I){"boolean"===I.ctype&&(u=I.value)}});k=P.drawingstate.textsize;null===k&&(k=ub.textsize);null!==N.size&&(k=N.size);null===p&&(p=1.6*k);Q.font=N.bold+N.italics+Math.round(10*k)/10+"px "+N.family;k=P.drawingstate.matrix;var y=f*m,C=a*p;b=d.x*k.a-d.y*k.b+k.tx+N.xOffset;var F=d.x*k.c-d.y*k.d-k.ty-N.yOffset-C;if(u){N.preDrawCurve(); Q.strokeStyle=N.lineColor;Q.beginPath();for(k=1;kIa)!k&&u&&(Q.stroke(),u=!1);else if(Ja||Na){var Aa=n.real((ma.value.real+Ea.value.real)/2);da.setvar(W,Aa);var Ta=M(I),hb=c(Ta);if(Ja&&Na&&hb){var Pb=Ka.value.real;Na=Ta.value.real;hb=ua.value.real;if(Ja=1>Math.abs(Pb+hb-2*Na)/m){var jb=n.real((ma.value.real+Aa.value.real)/2);da.setvar(W,jb);jb=M(I);var za=n.real((Aa.value.real+Ea.value.real)/2);da.setvar(W,za);za=M(I);Pb=Math.abs(Pb+Na-2*jb.value.real)/m;Na=Math.abs(Na+hb-2*za.value.real)/m;Ja=Ja&&1>Pb&&1>Na}Ja?(d(ma,Aa,Ka,Ta,Ia/2),d(Aa, Ea,Ta,ua,Ia/2)):(f(ma,Aa,Ka,Ta,Ia/2),f(Aa,Ea,Ta,ua,Ia/2))}else f(ma,Aa,Ka,Ta,Ia/2),f(Aa,Ea,Ta,ua,Ia/2)}}var k=!1,m=.2/Ud,p=0,u=!1,w=-10,y=10,C=.1,F=1E3,I=a[0];if(null!==a[1]&&"variable"===a[1].ctype)var W=a[1].name;else a=O.plotvars(I),W="#",a.includes("t")&&(W="t"),a.includes("z")&&(W="z"),a.includes("y")&&(W="y"),a.includes("x")&&(W="x");da.newvar(W);var R=P.drawingstate.matrix;N.handleModifs(b,{color:!0,alpha:!0,size:!0,dashpattern:!0,dashtype:!0,dashing:!0,lineCap:!0,lineJoin:!0,miterLimit:!0, connect:function(ma){"boolean"===ma.ctype&&(k=ma.value)},start:function(ma){"number"===ma.ctype&&(w=ma.value.real)},stop:function(ma){"number"===ma.ctype&&(y=ma.value.real)},steps:function(ma){"number"===ma.ctype&&(F=ma.value.real)}});Q.strokeStyle=N.lineColor;Q.lineWidth=N.lsize;u=!1;b=n.real(14.32);da.setvar(W,b);var fa=M(I);if("number"!==fa.ctype){if(h.isNumberVector(fa).value&&2===fa.value.length){u=!1;C=(y-w)/F;for(b=w;bw&&f(oa,b,X,fa,C),oa=b,X=fa;u&&Q.stroke();da.removevar(W);return A};B.plotX$1=function(a,b){a=a[0];var c=O.plotvars(a);b="#";c.includes("t")&&(b="t");c.includes("z")&&(b="z");c.includes("y")&&(b="y");c.includes("x")&&(b="x"); da.newvar(b);c=P.drawingstate.matrix;Q.fillStyle=P.drawingstate.linecolor;Q.lineWidth=1;Q.lineCap=N.lineCap;Q.lineJoin=N.lineJoin;Q.miterLimit=N.miterLimit;for(var d=!1,f=-10;10>f;f+=.01){da.setvar(b,n.real(f));var k=M(a);if("number"===k.ctype){var m=+k.value.real;k=f*c.a-m*c.b+c.tx;m=f*c.c-m*c.d-c.ty;d?Q.lineTo(k,m):(Q.beginPath(),Q.moveTo(k,m),d=!0)}}Q.stroke();da.removevar(b);return A};O.plotvars=function(a){function b(p,u){var w={},y;for(y=p.length-1;0<=y;--y)w[p[y]]=p[y];for(y=u.length-1;0<= y;--y)w[u[y]]=u[y];p=[];for(var C in w)w.hasOwnProperty(C)&&p.push(w[C]);return p}function c(p,u){for(var w=0;wb||!Number.isInteger(b)?(d.video.aspectRatio=b,d.video.advanced[0].aspectRatio={min:b,max:b}, d.video.advanced[1].aspectRatio={ideal:b}):(d.video.height=b,d.video.advanced[0].height={min:b,max:b},d.video.advanced[1].height={ideal:b})));a&&(d=[320,640,1024,1280,1920,2560],d=d.map(function(m){return{width:{min:m}}}),d={video:{width:16E3,height:9E3,advanced:d},audio:!1});a=JSON.stringify(d);if(yd[a])return yd[a];b=null;var f=navigator.mediaDevices&&navigator.mediaDevices.getUserMedia;f?b=function(m,p){navigator.mediaDevices.getUserMedia(d).then(m,p)}:(f=navigator.getUserMedia||navigator.webkitGetUserMedia|| navigator.mozGetUserMedia||navigator.msGetUserMedia)&&(b=function(m,p){f.call(navigator,d,m,p)});if(!b)return console.warn("getUserMedia call not supported"),yd[a]=A;var k=document.createElement("video");k.autoplay=!0;yd[a]=rb(k,!0);console.log("Opening stream.");b(function(m){k.srcObject=m;k.setAttribute("autoplay","");k.setAttribute("muted","");k.setAttribute("playsinline","");k.play();k.addEventListener("loadeddata",Ha)},function(m){console.error("Could not get user video:",String(m),m)});return yd[a]}; B.playvideo$1=function(a,b){a=Zb(Y(a[0]));a.live&&a.img.play&&a.img.play();return A};B.pausevideo$1=function(a,b){a=Zb(Y(a[0]));a.live&&a.img.pause&&a.img.pause();return A};var xd;B.imagergba$3=function(a,b){b=Zb(Y(a[0]));var c=Y(a[1]);a=Y(a[2]);if(!b||"number"!==c.ctype||"number"!==a.ctype||!b.ready)return A;c=Math.round(c.value.real);a=Math.round(a.value.real);if(!Bb(c)||!Bb(a))return A;a=Sc(b,c,a,1,1);return h.realVector([255*a[0],255*a[1],255*a[2],a[3]])};B.imagergb$3=B.imagergba$3;B.imagergba$4= function(a,b){var c=Zb(Y(a[2]));if(!c||!c.ready)return A;var d=c.width,f=c.height,k=Da(a[0]),m=Da(a[1]),p=Da(h.realVector([0,f,1]));d=Da(h.realVector([d,f,1]));if(k===A||m===A||u===A)return A;u=h.ii;f=h.jj;p=O.basismap(p,d,u,f);k=O.basismap(k,m,f,u);var u=Da(a[3]);f=O.extractPoint(v.mult(p,v.mult(h.adjoint3(k),u)));if(f.ok)if(a=c.width,k=c.height,m=!0,p=!1,void 0!==b.interpolate&&(u=M(b.interpolate),"boolean"===u.ctype&&(m=u.value)),void 0!==b.repeat&&(u=M(b.repeat),"boolean"===u.ctype&&(p=u.value)), m&&(f.x-=.5,f.y-=.5),p&&(f.x=(f.x%a+a)%a,f.y=(f.y%k+k)%k),u=Math.floor(f.x),d=Math.floor(f.y),Bb(u)&&Bb(d)){b=[0,0,0,0];if(m){m=f.x-u;f=f.y-d;var w=Sc(c,u,d,2,2);if(p){if(u===a-1||d===k-1){p=Sc(c,(u+1)%a,d,1,1);var y=Sc(c,u,(d+1)%k,1,1);c=Sc(c,(u+1)%a,(d+1)%k,1,1);w=w.slice(0,4).concat(p,y,c)}}else{if(-1===u||u===a-1)m=Math.round(m);if(-1===d||d===k-1)f=Math.round(f)}for(c=0;4>c;c++)b[c]=(1-f)*((1-m)*w[c]+m*w[c+4])+f*((1-m)*w[c+8]+m*w[c+12])}else b=Sc(c,u,d,1,1);c=h.realVector(b)}else c=A;else c= A;return c};B.imagergb$4=function(a,b){a=B.imagergba$4(a,b);return a===A?A:h.turnIntoCSList(a.value.slice(0,3))};B.readpixels$1=function(a,b){a=Zb(Y(a[0]));a=Sc(a,0,0,a.width,a.height);b=[];for(var c=0;c+3","\u2260"],lt:["<"],gt:[">"],le:["<=","\u2264","\u2266"],ge:[">=","\u2265","\u2267"],aeq:["~=","\u2248"],ane:["~!=","\u2249"],alt:["~<","\u2a89"],agt:["~>","\u2a8a"],ale:["~<=","\u2a85"],age:["~>=","\u2a86"],in:["\u2208"],nin:["\u2209"]},{and:["&","\u2227"],or:["%","\u2228"]},{rassoc:!0,prepend:["<:"]},{concat:["++","\u222a"],remove:["--","\u2216"], common:["~~","\u2229"],append:[":>"]},{rassoc:!0,assign:["="],define:[":="],undefine:[":=_"],bdefine:["::="]},{seq:[";"]},{modif:["->","\u2192"]},{rassoc:!0,list:[","]}],wa=["+","-"],ta=["!","\u221a"],Wa=["\u00b0",":=_"],db=[";",","],Ba=[],ob={},Bc;(function(){var a=0;qa.forEach(function(b){a+=2;var c=!!b.rassoc;b.functionCall&&(Bc=a);for(var d in b){var f=b[d];if("boolean"!==typeof f){var k={name:d,sym:f[0],symbols:f,rassoc:c,precedence:a,prefix:!1,postfix:!1,infix:!0,bare:!1};f=$jscomp.makeIterator(f); for(var m=f.next();!m.done;m=f.next()){m=m.value;if(ob.hasOwnProperty(m))throw Error("Duplicate operator: "+m);ob[m]=k;Ba.push(m)}}}});wa.forEach(function(b){ob[b].prefix=!0});ta.forEach(function(b){ob[b].prefix=!0;ob[b].infix=!1});Wa.forEach(function(b){ob[b].postfix=!0;ob[b].infix=!1});db.forEach(function(b){ob[b].prefix=!0;ob[b].postfix=!0;ob[b].infix=!0;ob[b].bare=!0})})();Ba.sort(function(a,b){return b.length-a.length});var gd="(?:[\u207a\u207b] )?[\u2070\u00b9\u00b2\u00b3\u2074\u2075\u2076\u2077\u2078\u2079](?: [\u2070\u00b9\u00b2\u00b3\u2074\u2075\u2076\u2077\u2078\u2079])*".replace(/ /g, "[ \t]*"),zd="(?:[\u208a\u208b] )?[\u2080\u2081\u2082\u2083\u2084\u2085\u2086\u2087\u2088\u2089](?: [\u2080\u2081\u2082\u2083\u2084\u2085\u2086\u2087\u2088\u2089])*".replace(/ /g,"[ \t]*"),Sd=function(a,b,c){var d,f=0,k="(?:[",m=b.length;for(d=0;d &%C( / . $$!L! %5%;( D#!*!* 4'&*$W + !#&]F %6&]% !#% !#!(# & ! !#% # %1!#$ !/#L!S( @?$\u00817-!*''#$!$%+ ',6!:= !&!#7 \u0090 ##& ! ##D ##B ##& ! ##9 K ##^Y2*V#'$\u009d#5 4&p((+, #2*2*2, 5OC!'!Uy.D !&_)0J<#$,E'4Q/1Pv!|8:&K<9%)E>@7 )@\u0080# #$%1gT\u008e#'#=#'#( ! ! ! 0#P & !$ &$##'',& &d!9!*,b!'!#. !$$(! ! ! # 1##&$'!G%\u00a58 8 \u0084(#$%6= !&!#Q+!*/1& & & & & & & &t!\u0097%E$&%'V( z #&D${:Aj2\u0099\u00a6q\u00a9E\u00a4UZ#\u008d$2)%-8*0#_J+#b#M#(S1 # /0O2[R'$! !6>)/A?+8?G)-):9*\ud803!`KJ9J\ud804#PriL3>@7M$!6F2#/! !C* 3V& ! # 9 .+8N(#%#- & % $$!;!6$\ud805eF-% !\u008987#=F-!k7x4\ud806\u0087RB!\u0095K\ud808!\u00a2\ud809e\u008a\ud80d!8\ud811!\u009c\ud81a!\u009b+0c<;F*#BH&:\ud81b\u00a0U,!l,\ud82c!%\ud82f!\"&,$++.\ud835!w m %#!#%## ) ! & S ##( & > # $ !$& \u0091#3 3 0 3 0 3 0 3 0 3 (\ud83a!\u008b\ud83b\u0098# A % !#! . # ! !(!'! ! ! % !#! ! ! ! ! % !## & # # ! . 5& $ 5\ud869!\u009f7\u008c\ud86d!\u00a1,g\ud86e!<#\u00a3\ud873!\u009e\ud87e!\u009a", "\ud80c\ud840-\ud868\ud86a-\ud86c\ud86f-\ud872"),bf=("#(?: [1-9])?|(?:'|"+Sd+")(?: (?:[0-9']|"+Sd+"))*").replace(/ /g,"[ \t]*"),cf=["([ \t\n\r]+)|(//.*)|(/\\*)","("+("(?:[0-9](?: [0-9])*(?: \\.(?! \\.)(?:(?! "+bf+")|(?= (?: [Ee](?: [+-])?(?: [0-9])+)))(?: [0-9])*)?|\\.(?: [0-9])+)(?: [Ee](?: [+-])?(?: [0-9])+)?").replace(/ /g,"[ \t]*")+")","("+Ba.map(le).join("|")+")","("+"[](){}||".split("").map(le).join("|")+")","("+zd+")","("+gd+")","("+bf+")",'("[^"]*")|($)'].join("|"),Ae=new RegExp("[ \t]*".replace(/\*$/, "+"),"g"),Be="ANY WS COMMENT START_COMMENT NUM OP BRA SUB SUP ID STR EOF".split(" ");(function(){var a=(new RegExp(cf,"g")).exec("");if(a.hasOwnProperty(Be.length))throw Error("RE has more groups than expected");if(!a.hasOwnProperty(Be.length-1))throw Error("RE has fewer groups than expected");})();Kc.prototype.advanceBy=function(a){this.advanceTo(this.pos+a)};Kc.prototype.advanceTo=function(a){for(this.pos=a;this.bols[0]<=a;)this.bol=this.bols.shift(),this.line++};Kc.prototype.curPos=function(){return{row:this.line, col:this.pos-this.bol,pos:this.pos}};Kc.prototype.nextInternal=function(){var a=this.re.exec(this.input);if(a.index!==this.pos)throw xb("Invalid token",this.curPos(),this.input.substring(this.pos,a.index));var b=this.curPos();this.advanceBy(a[0].length);var c=this.curPos(),d;for(d=1;null==a[d];++d);return{start:b,end:c,raw:a[0],text:a[0].replace(Ae,""),toktype:Be[d]}};Kc.prototype.next=function(){do{var a=this.nextInternal();if("START_COMMENT"===a.toktype){var b=/\*\/|\/\*/g;b.lastIndex=a.start.pos+ 2;for(var c=1,d;0a.length){for(var d=[],f=0,k=0;fa.length&&(k=0),d[f]=a[k];a=d}b=new Float32Array(a); a=c.createBuffer(1,b.length,c.sampleRate);a.copyToChannel(b,0);c=c.createBufferSource();c.buffer=a;return c},createMonoOscillator:function(a,b){var c=this.getAudioContext().createOscillator();if(0!==b){var d=new Float32Array(2),f=new Float32Array(2);d[1]=Math.sin(b);f[1]=Math.cos(b);b=this.getAudioContext().createPeriodicWave(d,f,{disableNormalization:!0});c.setPeriodicWave(b)}else c.type="sine";c.mono=!0;c.frequency.setValueAtTime(a,this.audioCtx.currentTime);return c},createWaveOscillator:function(a, b,c){for(var d=this.getAudioContext().createOscillator(),f=new Float32Array(b.length+1),k=new Float32Array(b.length+1),m=0;mMath.abs(b-1)});0this.damp&&this.masterGain.gain.setTargetAtTime(1,this.audioCtx.currentTime+this.attack,-this.damp)};tc.prototype.startOscillators=function(){if(this.precompute)this.oscNodes[0]=sa.playOscillator(sa.createWaveOscillator(this.freq,this.harmonics,this.phaseshift),this.masterGain,1,this.attack,this.duration,this.release);else for(var a=0;ab.value.real||b.value.real!==Math.floor(b.value.real))return Ra.root(a,b);for(var c=a,d=1;d=N.psize&&(N.psize=0);0>=N.lsize&&(N.lsize=0);N.overhang=1;N.dashing=!1;N.isArrow=!1;N.arrowSides="==>";N.arrowposition=1;N.headlen=10; N.arrowShape=N.arrowShapes.line;N.alpha=P.drawingstate.alpha;N.fillalpha=0;N.bold="";N.italics="";N.family="sans-serif";N.align=0;N.angle=0;N.xOffset=0;N.yOffset=0;N.lineCap="round";N.lineJoin="round";N.miterLimit=10;N.noborder=!1;var c,d;for(c in a){var f=a[c];f&&((d=b[c])?(!0===d&&(d=N.modifHandlers[c]),d(M(f))):console.log("Modifier not supported: "+c))}null!==N.size?N.psize=N.lsize=N.size:(N.psize=P.drawingstate.pointsize,N.lsize=P.drawingstate.linesize);N.dashing&&N.dashing(N.lsize);null!==N.colorraw? N.pointColor=N.lineColor=N.textColor=N.makeColor(N.colorraw):1===N.alpha?(N.pointColor=P.drawingstate.pointcolor,N.lineColor=P.drawingstate.linecolor,N.textColor=P.drawingstate.textcolor):(N.pointColor=N.makeColor(P.drawingstate.pointcolorraw),N.lineColor=N.makeColor(P.drawingstate.linecolorraw),N.textColor=N.makeColor(P.drawingstate.textcolorraw));N.black=1===N.alpha?"rgb(0,0,0)":"rgba(0,0,0,"+N.alpha+")";N.fillColor=N.fillcolorraw&&0N.size&&(N.size=0),1E3"!==a.value&&"<==>"!==a.value&&"<=="!==a.value?console.error("arrowsides is unknows"):(N.arrowSides=a.value,N.isArrow=!0)},arrowposition:function(a){"number"!==a.ctype?console.error("arrowposition is not of type number"):0>a.value.real?console.error("arrowposition has to be positive"):1a.value.real?console.error("arrowsize has to be positive"):N.headlen*=a.value.real},bold:function(a){"boolean"===a.ctype&&a.value&&(N.bold="bold ")},italics:function(a){"boolean"===a.ctype&&a.value&&(N.italics="italic ")},family:function(a){"string"===a.ctype&&(N.family=a.value)},align:function(a){"string"=== a.ctype&&(a=a.value,"left"===a&&(N.align=0),"right"===a&&(N.align=1),"mid"===a||"center"===a)&&(N.align=.5)},angle:function(a){"number"===a.ctype&&(N.angle=a.value.real)},xoffset:function(a){"number"===a.ctype&&(N.xOffset=a.value.real)},yoffset:function(a){"number"===a.ctype&&(N.yOffset=a.value.real)},offset:function(a){"list"===a.ctype&&2===a.value.length&&"number"===a.value[0].ctype&&"number"===a.value[1].ctype&&(N.xOffset=a.value[0].value.real,N.yOffset=a.value[1].value.real)},lineCap:function(a){"string"!== a.ctype||"round"!==a.value&&"square"!==a.value&&"butt"!==a.value||(N.lineCap=a.value)},lineJoin:function(a){"string"!==a.ctype||"round"!==a.value&&"bevel"!==a.value&&"miter"!==a.value||(N.lineJoin=a.value)},fillrule:function(a){"string"!==a.ctype||"nonzero"!==a.value&&"evenodd"!==a.value||(N.fillrule=a.value)},miterLimit:function(a){"number"===a.ctype&&0p&&(k=a);1c&&(f=a);1b||b>nb||0>d||d>fb||0>a||a>nb||0>u||u>fb){u=N.clipSegment({x:b,y:d},{x:a,y:u});if(2!==u.length||.01>N.lsize)return;b=u[0].x;d=u[0].y;a=u[1].x;u=u[1].y}N.preDrawCurve();if(!N.isArrow||f===k&&m===p).01>N.lsize||(Q.beginPath(),Q.moveTo(b,d),Q.lineTo(a,u),Q.stroke());else{f=m-f;k=p-k;m=N.headlen/Math.sqrt(f*f+k*k);var y=f*m,C=k*m;p=N.arrowposition;w=1-p;f=p*b+w*a;k=p*d+w*u;m=p*a+w*b;p=p*u+w*d;w=N.arrowSides;Q.beginPath(); N.arrowShape.close?("<==>"===w||"<=="===w?(1>N.arrowposition&&(Q.moveTo(b,d),Q.lineTo(f,k)),Q.moveTo(f+y,k+C)):Q.moveTo(b,d),"==>"===w||"<==>"===w?(Q.lineTo(m-y,p-C),1>N.arrowposition&&(Q.moveTo(m,p),Q.lineTo(a,u))):Q.lineTo(a,u)):(Q.moveTo(b,d),Q.lineTo(a,u));Q.stroke();"==>"!==w&&"<==>"!==w||c(m,p,1,N.arrowShape.ratio);"<=="!==w&&"<==>"!==w||c(f,k,-1,-N.arrowShape.ratio)}};N.drawpoint=function(a){var b=P.drawingstate.matrix,c=a.x*b.a-a.y*b.b+b.tx;a=a.x*b.c-a.y*b.d-b.ty;Q.lineWidth=.3*N.psize;Q.beginPath(); Q.arc(c,a,N.psize,0,2*Math.PI);Q.fillStyle=N.pointColor;Q.fill();N.noborder||(Q.beginPath(),Q.arc(c,a,1.15*N.psize,0,2*Math.PI),Q.fillStyle=N.black,Q.strokeStyle=N.black,Q.stroke())};N.clipLineCore=function(a,b,c){var d=Math.SQRT1_2*N.lsize,f=0-d,k=nb+d,m=0-d;d=fb+d;var p=0>f*a+m*b+c,u=0>k*a+m*b+c,w=0>f*a+d*b+c,y=0>k*a+d*b+c,C=[];p!==u&&C.push({x:(-c-b*m)/a,y:m});u!==y&&C.push({x:k,y:(-c-a*k)/b});w!==y&&C.push({x:(-c-b*d)/a,y:d});p!==w&&C.push({x:f,y:(-c-a*f)/b});return C};N.clipLine=function(a){a= h.normalizeMax(h.productVM(a,P.toMat()));return N.clipLineCore(a.value[0].value.real,a.value[1].value.real,a.value[2].value.real)};N.drawline=function(a){h._helper.isAlmostReal(a)&&(a=N.clipLine(a),2===a.length&&.01<=N.lsize&&(N.preDrawCurve(),Q.beginPath(),Q.moveTo(a[0].x,a[0].y),Q.lineTo(a[1].x,a[1].y),Q.stroke()))};N.drawRaySegment=function(a,b){a=O.extractPoint(a);b=O.extractPoint(b);if(a.ok&&b.ok){var c=a.x-b.x,d=a.y-b.y,f=25E3/P.drawingstate.matrix.sdet/Math.sqrt(c*c+d*d);c*=f;d*=f;N.drawsegcore(a, {x:a.x+c,y:a.y+d});N.drawsegcore(b,{x:b.x-c,y:b.y-d})}};N.dashTypes={solid:[],dashed:[10,10],tightdash:[10,4],dotted:[1,3],dashdot:[10,5,1,5],"dashvalue.solid":[],"dashvalue.dashed":[10,10],"dashvalue.tightdash":[10,4],"dashvalue.dotted":[1,3],"dashvalue.dashdot":[10,5,1,5],0:[],1:[10,10],2:[10,4],3:[1,3],4:[10,5,1,5]};N.setDash=function(a,b){b=Math.sqrt(b);a=a.slice();for(var c=0;c=2*Math.PI?this._pathcmd(this._path.length?"L":"M",m,p,"A",c,c,0,0,k?1:0,a-c*Math.cos(d),b-c*Math.sin(d),"A",c,c,0,0,k?1:0,m,p):this._pathcmd(this._path.length?"L": "M",m,p,"A",c,c,0,f>Math.PI?1:0,k?1:0,u,w)},rect:function(a,b,c,d){this._pathcmd("M",a,b,"h",c,"v",d,"h",-c,"z")},_cmd:function(a){1!==this.globalAlpha?(this._body.push(''),this._body.push(a),this._body.push("")):this._body.push(a)},_attrs:function(a){var b="",c;for(c in a)null!==a[c]&&(b+=" "+c+'="'+a[c]+'"');return b},fill:function(){this._cmd("")},stroke:function(){this._cmd("")},clip:function(){++this._clipIndex;this._body.push('','');this._saveStack[this._saveStack.length-1]+=""},save:function(){this._saveStack.push("")}, restore:function(){this._body.push(this._saveStack.pop());0===this._saveStack.length&&this._saveStack.push("")},_transform:function(a){this._body.push('');this._saveStack[this._saveStack.length-1]+=""},translate:function(a,b){this._transform("translate("+a+" "+b+")")},rotate:function(a){this._transform("rotate("+Math.PI/180*a+")")},scale:function(a,b){this._transform("scale("+a+" "+b+")")},transform:function(a,b,c,d,f,k){this._transform("matrix("+[a,b,c,d,f,k].join(" ")+")")}, drawImage:function(a,b,c){if(3!==arguments.length)throw Error("SvgWriterContext only supports 3-argument version of drawImage");var d=this._imgcache.indexOf(a);if(-1===d){d=this._imgcache.length;var f=a.cachedDataURL?a.cachedDataURL:me(a);this._defs.push('');this._imgcache.push(a)}this._cmd('')},toBlob:function(){for(;1\n'+this._defs.join("\n")+'\n\n\n'+this._body.join("\n")+"\n\n\n";return new Blob([a],{type:"image/svg+xml"})}};Me.prototype={_cmd:function(){this._body.push(Array.prototype.join.call(arguments," "))},_setAlpha:function(a,b,c){var d=Math.round(255* a*this._globalAlpha);b+=d;this._extGState[b]="<< /"+c+" "+d/255+" >>";this._cmd("/"+b,"gs");return a},set globalAlpha(a){this._globalAlpha=a;this._setAlpha(this._strokeAlpha,"As","CA");this._setAlpha(this._fillAlpha,"Af","ca")},set fillStyle(a){var b=this;vc(a,function(c,d,f,k){b._cmd(c/255,d/255,f/255,"rg");b._setAlpha(b._fillAlpha=k,"Af","ca")})},set strokeStyle(a){var b=this;vc(a,function(c,d,f,k){b._cmd(c/255,d/255,f/255,"RG");b._setAlpha(b._strokeAlpha=k,"As","CA")})},set lineWidth(a){this._cmd(a, "w")},set lineCap(a){this._cmd({butt:0,round:1,square:2}[a],"J")},set lineJoin(a){this._cmd({miter:0,round:1,bevel:2}[a],"j")},set miterLimit(a){this._cmd(a,"M")},clearRect:function(){},beginPath:function(){this._pathUsed=!1},closePath:function(){this._cmd("h")},moveTo:function(a,b){this._cmd(this._xPos=a,this._yPos=-b,"m")},lineTo:function(a,b){this._cmd(this._xPos=a,this._yPos=-b,"l")},bezierCurveTo:function(a,b,c,d,f,k){this._cmd(a,-b,c,-d,this._xPos=f,this._yPos=-k,"c")},quadraticCurveTo:function(a, b,c,d){this.bezierCurveTo((2*a+this._xPos)/3,(2*b-this._yPos)/3,(c+2*a)/3,(d+2*b)/3,c,d)},_kappa:.5522847498307935,arc:function(a,b,c,d,f,k){if(0===d&&f===2*Math.PI)d=this._kappa*c,this.moveTo(a+c,b),this.bezierCurveTo(a+c,b+d,a+d,b+c,a,b+c),this.bezierCurveTo(a-d,b+c,a-c,b+d,a-c,b),this.bezierCurveTo(a-c,b-d,a-d,b-c,a,b-c),this.bezierCurveTo(a+d,b-c,a+c,b-d,a+c,b);else throw Error("PdfWriterContext.arc only supports full circles");},rect:function(a,b,c,d){this._cmd(a,-b,c,-d,"re")},_usePath:function(a){if(this._pathUsed){var b= this._body[this._pathUsed],c={"S + f":"B","f + S":"B","W n + S":"W S","W n + f":"W f","S + W n":"W S","f + W n":"W f","B + W n":"W B","W S + f":"W B","W f + S":"W B"}[b+" + "+a];if(!c)throw Error("Don't know how to combine '"+b+"' and '"+a+"'");this._body.splice(this._pathUsed,1);a=c}this._pathUsed=this._body.length;this._cmd(a)},fill:function(){this._usePath("f")},stroke:function(){this._usePath("S")},clip:function(){this._usePath("W n")},save:function(){this._cmd("q")},restore:function(){this._cmd("Q")}, translate:function(a,b){this.transform(1,0,0,1,a,b)},rotate:function(a){var b=Math.cos(a);a=Math.sin(a);this.transform(b,a,-a,b,0,0)},scale:function(a,b){this.transform(a,0,0,b,0,0)},transform:function(a,b,c,d,f,k){this._cmd(a,-b,-c,d,f,-k,"cm")},_png:function(a){if("data:image/png;base64,"!==a.substr(0,22))return{error:"Not a base64-encoded PNG file"};a=Ne(a.substr(22));var b=Oe(a);console.log("PNG chunks:",b.map(function(oa){return oa.type}));if("IHDR"!==b[0].type)throw Error("Image does not start with an IHDR"); var c=b[0].data;a=(c[0]<<24|c[1]<<16|c[2]<<8|c[3])>>>0;var d=(c[4]<<24|c[5]<<16|c[6]<<8|c[7])>>>0,f=c[8],k=c[9],m=0===(k&2),p=0!==(k&4),u=c[10],w=c[11];c=c[12];if(0!==u)throw Error("Unsupported PNG compression method: "+u);if(0!==w)throw Error("Unsupported PNG filter method: "+w);if(0!==c)return{error:"Interlaced image not supported"};if(0!==(k&1))return{error:"Indexed PNG image not supported"};w=null;k=m?1:3;u=b.filter(function(oa){return"IDAT"===oa.type}).map(function(oa){return oa.data});if(p){p= window.pako;w=new p.Inflate;for(b=0;b>>3;if(w.length!==d*(a*(k+1)*c+1))throw Error("Data length mismatch");var y=k*c;u=new Uint8Array(d*(a*y+1));for(var C=new Uint8Array(d*(a*c+1)),F=0,I=0,W=0,R=0;R>"},_obj:function(a,b){b||(b=this._nextIndex++);Array.isArray(a)||(a=[this._dict(a)]);a.index=b;a.ref=b+" 0 R";a.offset=this._offset;var c=0;a.unshift(b+" 0 obj\n");a.push("\nendobj\n");for(b=0;bMath.abs(b)&&console.log("PSLQ: inverting singular matrix!");this._e=a.map(function(c){return c/b});return this};Db.prototype.swRow=function(a,b){for(var c=0;9>c;)this.exchange(c+a,c+b),c+=3};Db.prototype.swCol=function(a,b){for(var c=0;3>c;++c)this.exchange(3*a+c,3*b+c)};Db.mult=function(a,b,c){a=[a.get(0)*b.get(0)+a.get(3)*b.get(1)+a.get(6)*b.get(2),a.get(1)*b.get(0)+a.get(4)*b.get(1)+a.get(7)*b.get(2),a.get(2)*b.get(0)+a.get(5)*b.get(1)+ a.get(8)*b.get(2),a.get(0)*b.get(3)+a.get(3)*b.get(4)+a.get(6)*b.get(5),a.get(1)*b.get(3)+a.get(4)*b.get(4)+a.get(7)*b.get(5),a.get(2)*b.get(3)+a.get(5)*b.get(4)+a.get(8)*b.get(5),a.get(0)*b.get(6)+a.get(3)*b.get(7)+a.get(6)*b.get(8),a.get(1)*b.get(6)+a.get(4)*b.get(7)+a.get(7)*b.get(8),a.get(2)*b.get(6)+a.get(5)*b.get(7)+a.get(8)*b.get(8)];c.set(a)};Db.prototype.getString=function(){var a=this._e;return"/"+a[0]+"\t "+a[3]+"\t "+a[6]+"\\\n|"+a[1]+"\t "+a[4]+"\t "+a[7]+"|\n\\"+a[2]+"\t "+a[5]+"\t "+ a[8]+"/\n"};Db.prototype.transpose=function(){this.exchange(1,3);this.exchange(2,6);this.exchange(5,7);return this};Db.VMmult=function(a,b,c){c[0]=b.get(0)*a[0]+b.get(1)*a[1]+b.get(2)*a[2];c[1]=b.get(3)*a[0]+b.get(4)*a[1]+b.get(5)*a[2];c[2]=b.get(6)*a[0]+b.get(7)*a[1]+b.get(8)*a[2]};var ec=function(){};ec.dot=function(a,b){for(var c=0,d=0;da[b]&& (b=c);return b};ec.hermiteReduce=function(a){for(var b=[[1,0,0],[0,1,0],[0,0,1]],c=a.length,d=a.map(function(u){return[].concat($jscomp.arrayFromIterable(u))}),f,k=1;kc;c++)a[c]=d[c];return new Db(b)};ec.doPSLQ=function(a,b){for(var c=a.length,d=[],f=[],k=0;ku?-d[p]*d[u]/f[u]/f[u+1]:p===u?f[p+1]/f[p]:0;p=ec.hermiteReduce(m);u=p.clone().inverse().transpose();Db.VMmult(d,u,d);Db.mult(p,k,k);Db.mult(a,u,a);for(f=0;fMath.pow(this.GAMMA,1)*Math.abs(u[0])&&(p=1);var w=u=0,y=0;pF;F++)C[F]=[];if(pn.sub(n.mult(a.value[0],c.value[1]),n.mult(a.value[1],c.value[0])).value.real&&(b=h.neg(b));return h.turnIntoCSList([b.value[1], n.neg(b.value[0]),n.zero])};t.PointOnCircle.parameterPath=function(a,b,c,d,f){d=h.normalizeAbs(d);f=h.normalizeAbs(f);var k=h.scalproduct(d,f);if(0<=k.value.real)return Xe(a,b,c,d,f);a=h.turnIntoCSList([n.sub(d.value[1],f.value[1]),n.sub(f.value[0],d.value[0]),n.zero]);k=h.scalproduct(d,a);0>k.value.real&&(a=h.neg(a));0>b?(b=2*b+1,c=b*b,k=.25/(1+c),c=n.complex(2*b*k+.25,(1-c)*k)):(b=2*b-1,c=b*b,k=.25/(1+c),c=n.complex(2*b*k+.75,(1-c)*k));var m=n.sub(n.real(1),c);b=n.mult(c,c);k=n.mult(m,m);c=n.mult(c, m);d=h.scalmult(k,d);d=h.add(d,h.scalmult(c,a));return d=h.add(d,h.scalmult(b,f))};t.PointOnCircle.updatePosition=function(a){var b=cb(3);Ua(b);var c=G.csnames[a.args[0]];b=h.productMV(c.matrix,b);c=t._helper.IntersectLC(b,c.matrix);c=jc(c[0],c[1]);b=h.normalizeMax(c.value[0]);a.homog=v.withUsage(b,"Point");a.antipodalPoint=c.value[1]};t.PointOnCircle.getRandomMove=t._helper.getRandPointMove;t.PointOnCircle.stateSize=6+jc.stateSize;t.PointOnCircle.get_angle=function(a){var b=t._helper.CenterOfCircle(G.csnames[a.args[0]].matrix), c=h._helper.isAlmostFarpoint;if(c(a.homog)||c(b))return A;a=h.normalizeZ(a.homog);b=h.normalizeZ(b);b=h.sub(a,b);b=n.arctan2(b.value[0],b.value[1]);a=n.real(Fd);b=n.mod(n.add(b,a),a);return v.withUsage(b,"Angle")};t.PointOnCircle.set_angle=function(a,b){if("number"===b.ctype){var c=G.csnames[a.args[0]],d=t._helper.CenterOfCircle(c.matrix);if(!h._helper.isAlmostFarpoint(d)){d=h.normalizeZ(d);var f=n.cos(b);b=n.sin(b);c=h.turnIntoCSList([n.mult(f,c.radius),n.mult(b,c.radius),n.real(0)]);Vb(a,h.add(d, c),"homog")}}return A};t.OtherPointOnCircle={};t.OtherPointOnCircle.kind="P";t.OtherPointOnCircle.signature=["P"];t.OtherPointOnCircle.signatureConstraints=function(a){return"PointOnCircle"===G.csnames[a.args[0]].type};t.OtherPointOnCircle.updatePosition=function(a){var b=G.csnames[a.args[0]].antipodalPoint;b=h.normalizeMax(b);a.homog=v.withUsage(b,"Point")};t.PointOnSegment={};t.PointOnSegment.kind="P";t.PointOnSegment.signature=["S"];t.PointOnSegment.isMovable=!0;t.PointOnSegment.initialize=function(a){var b= t._helper.initializePoint(a);a=t.PointOnSegment.getParamForInput(a,b);zc(a)};t.PointOnSegment.getParamForInput=function(a,b,c){a=G.csnames[a.args[0]];var d=a.homog;"mouse"===c&&Cd&&0!==Wb&&(b=t._helper.snapPointToLine(b,d));c=h.turnIntoCSList([d.value[0],d.value[1],n.zero]);d=h.sub(a.startpos,a.endpos);b=h.crossratio3(d,a.startpos,a.endpos,b,c);0>b.value.real&&(b=n.complex(0,b.value.imag));1a.value.real&&(b=-1>a.value.real?h.realVector([1,0]):h.realVector([0,1]));return b};t.PointOnArc.getParamFromState=function(a){return cb(2)};t.PointOnArc.putParamToState=function(a,b){Ua(b)};t.PointOnArc.updatePosition=function(a){var b=G.csnames[a.args[0]],c=b.startPoint,d=b.viaPoint,f=b.endPoint,k=h.ii,m=h.cross(c,k);d=h.cross(d,k);var p=h.cross(f,k);p=h.turnIntoCSList([m,p]);m=h.transpose(p);p=h.conjugate(p);m=h.productMM(p,m);d=h.productMV(p, d);m=h.productMV(h.adjoint2(m),d);d=m.value[0];m=m.value[1];p=cb(2);Ua(p);c=h.normalizeMax(h.add(h.scalmult(n.mult(d,p.value[0]),c),h.scalmult(n.mult(m,p.value[1]),f)));b=t._helper.conicOtherIntersection(b.matrix,k,c);a.homog=v.withUsage(b,"Point")};t.PointOnArc.getRandomMove=t._helper.getRandPointMove;t.PointOnArc.stateSize=4;t._helper.CenterOfCircle=function(a){return h.turnIntoCSList([a.value[2].value[0],a.value[2].value[1],n.neg(a.value[0].value[0])])};t._helper.CenterOfConic=function(a){a=h.adjoint3(a); return{ctype:"list",value:[a.value[2].value[0],a.value[2].value[1],a.value[2].value[2]]}};t.CenterOfConic={};t.CenterOfConic.kind="P";t.CenterOfConic.signature=["C"];t.CenterOfConic.updatePosition=function(a){var b=t._helper.CenterOfConic(G.csnames[a.args[0]].matrix);a.homog=b;a.homog=h.normalizeMax(a.homog);a.homog=v.withUsage(a.homog,"Point")};t._helper.CircleMP=function(a,b){var c=a.value[0],d=a.value[1];a=n.neg(a.value[2]);var f=n.zero;c=h.turnIntoCSList([h.turnIntoCSList([a,f,c]),h.turnIntoCSList([f, a,d]),h.turnIntoCSList([c,d,f])]);d=v.mult(v.mult(b,c),b);b=v.mult(v.mult(b,h.fund),b);d=v.mult(d,h.fund);b=v.mult(b,c);return h.sub(d,b)};t.CircleMP={};t.CircleMP.kind="C";t.CircleMP.signature=["P","P"];t.CircleMP.updatePosition=function(a){a.matrix=t._helper.CircleMP(G.csnames[a.args[0]].homog,G.csnames[a.args[1]].homog);a.matrix=h.normalizeMax(a.matrix);a.matrix=v.withUsage(a.matrix,"Circle")};t.CircleMr={};t.CircleMr.kind="C";t.CircleMr.signature=["P"];t.CircleMr.isMovable=!0;t.CircleMr.initialize= function(a){zc(n.real(a.radius))};t.CircleMr.getParamForInput=function(a,b,c){if("radius"===c)return b;a=G.csnames[a.args[0]].homog;a=h.normalizeZ(a);b=h.normalizeZ(b);b=h.sub(a,b);return b=h.abs(b)};t.CircleMr.getParamFromState=function(a){return dd()};t.CircleMr.putParamToState=function(a,b){zc(b)};t.CircleMr.updatePosition=function(a){var b=dd();zc(b);var c=G.csnames[a.args[0]].homog,d=n.mult(c.value[2],b);d=n.mult(d,d);if(!n._helper.isFinite(d)&&!n._helper.isNaN(d))return h.fund;c=t._helper.ScaledCircleMrr(c, d);a.matrix=v.withUsage(c,"Circle");a.radius=b};t.CircleMr.getRandomMove=function(a){a=a.radius;return{type:"radius",value:n.abs(a).value.realn.abs(h.det(a)).value.real)return"degenerate";var b=n.mult(a.value[0].value[0],a.value[1].value[1]);b=n.sub(b,n.pow(a.value[0].value[1],n.real(2)));b=b.value.real;return 1E-16>Math.abs(b)?"parabola":1E-16a;++a)for(var c=0;c<=a;++c)zc(b.value[a].value[c])};t.FreeConic.updatePosition=function(a){var b=cb(6);Ua(b);a.matrix=t._helper.buildConicMatrix(b.value);a.matrix=h.normalizeMax(a.matrix);a.matrix=v.withUsage(a.matrix,"Conic")};t.FreeConic.set_matrix=function(a,b){h._helper.isNumberMatrixMN(b,3,3)&&Vb(a,h.add(b,h.transpose(b)),"matrix")};t.FreeConic.stateSize=12;t._helper.buildConicMatrix=function(a){var b=a[1],c=a[2],d=a[3],f=a[4],k=a[5];return h.turnIntoCSList([h.turnIntoCSList([a[0], b,d]),h.turnIntoCSList([b,c,f]),h.turnIntoCSList([d,f,k])])};t._helper.flattenConicMatrix=function(a){return h.turnIntoCSList([a.value[0].value[0],a.value[0].value[1],a.value[1].value[1],a.value[0].value[2],a.value[1].value[2],a.value[2].value[2]])};t._helper.splitDegenConic=function(a){var b=h.adjoint3(a),c=0,d,f=n.abs2(b.value[0].value[0]).value.real;for(d=1;3>d;d++){var k=n.abs2(b.value[d].value[d]).value.real;k>f&&(c=d,f=k)}d=n.sqrt(n.mult(n.real(-1),b.value[c].value[c]));if(1E-16>n.abs2(d).value.real)return a= h.turnIntoCSList([n.zero,n.zero,n.zero]),[a,a];c=n.real(c+1);k=h.column(b,c);k=h.scaldiv(d,k);d=k.value[0];f=k.value[1];k=k.value[2];d=h.turnIntoCSList([h.turnIntoCSList([n.real(0),k,n.mult(n.real(-1),f)]),h.turnIntoCSList([n.mult(n.real(-1),k),n.real(0),d]),h.turnIntoCSList([f,n.mult(n.real(-1),d),n.real(0)])]);a=h.add(a,d);var m=0;for(d=f=b=0;3>d;d++)for(c=0;3>c;c++)k=n.abs2(a.value[d].value[c]).value.real,k>f&&(m=d,b=c,f=k);d=a.value[m];a=h.transpose(a);a=a.value[b];d=h.normalizeMax(d);a=h.normalizeMax(a); d=v.withUsage(d,"Line");a=v.withUsage(a,"Line");return[d,a]};t._helper.inputConic=function(a){var b="xx xy yy xz yz zz".split(" ").map(function(c){var d=n._helper.input(a[c]);c[0]!==c[1]&&(d=n.realmult(.5,d));return d});return t._helper.buildConicMatrix(b)};t.SelectConic={};t.SelectConic.kind="C";t.SelectConic.signature=["Cs"];t.SelectConic.initialize=function(a){if(void 0!==a.index)return a.index-1;var b=t._helper.inputConic(a.pos);a=G.csnames[a.args[0]].results;for(var c=h.conicDist(b,a[0]),d=0, f=1;fy;++y){var F=(y&2)-1,I=d(n.real(((y&1)<<1)-1),u),W=d(n.real(F),w),R=k(f,I,m,W),fa=k(b,W,a,I);F=k(a,f,b,m);var X=n.add(n.add(k(b,m,a,f),k(m,W,f,I)),k(W,b,I,a));I=d(R,R);W=d(fa,fa);var oa=d(X,X),ma=d(R,fa);R=d(R,X);fa=d(fa,X);ma=n.sub(ma,d(n.real(.5),d(F,F)));F=h.turnIntoCSList([h.turnIntoCSList([I,ma,R]),h.turnIntoCSList([ma,W,fa]),h.turnIntoCSList([R,fa,oa])]);F=h.productMM(p,h.productMM(F, c));F=h.turnIntoCSList([F.value[0].value[0],F.value[0].value[1],F.value[0].value[2],F.value[1].value[1],F.value[1].value[2],F.value[2].value[2]]);C[y]=F}return C};t.ConicBy3p2l={};t.ConicBy3p2l.kind="Cs";t.ConicBy3p2l.signature=["P","P","P","L","L"];t.ConicBy3p2l.updatePosition=function(a){var b=t._helper.ConicBy3p2l(G.csnames[a.args[0]].homog,G.csnames[a.args[1]].homog,G.csnames[a.args[2]].homog,G.csnames[a.args[3]].homog,G.csnames[a.args[4]].homog);b=ve(b);for(var c=Array(4),d=0;4>d;++d){var f= b[d].value;c[d]=h.turnIntoCSList([h.turnIntoCSList([f[0],f[1],f[2]]),h.turnIntoCSList([f[1],f[3],f[4]]),h.turnIntoCSList([f[2],f[4],f[5]])])}a.results=c};t.ConicBy3p2l.stateSize=48;t.ConicBy2p3l={};t.ConicBy2p3l.kind="Cs";t.ConicBy2p3l.signature=["P","P","L","L","L"];t.ConicBy2p3l.updatePosition=function(a){var b=t._helper.ConicBy3p2l(G.csnames[a.args[2]].homog,G.csnames[a.args[3]].homog,G.csnames[a.args[4]].homog,G.csnames[a.args[0]].homog,G.csnames[a.args[1]].homog);b=ve(b);for(var c=Array(4),d= 0;4>d;++d){var f=b[d].value;f=h.turnIntoCSList([h.turnIntoCSList([f[0],f[1],f[2]]),h.turnIntoCSList([f[1],f[3],f[4]]),h.turnIntoCSList([f[2],f[4],f[5]])]);c[d]=h.normalizeMax(h.adjoint3(f))}a.results=c};t.ConicBy2p3l.stateSize=48;t.ConicBy1p4l={};t.ConicBy1p4l.kind="Cs";t.ConicBy1p4l.signature=["P","L","L","L","L"];t.ConicBy1p4l.updatePosition=function(a){var b=t._helper.ConicBy4p1l(a,G.csnames[a.args[1]].homog,G.csnames[a.args[2]].homog,G.csnames[a.args[3]].homog,G.csnames[a.args[4]].homog,G.csnames[a.args[0]].homog), c=b[0];b=b[1];c=h.adjoint3(c);b=h.adjoint3(b);b=[c,b];a.results=b};t.ConicBy1p4l.stateSize=jc.stateSize;t.ConicParabolaPL={};t.ConicParabolaPL.kind="C";t.ConicParabolaPL.signature=["P","L"];t.ConicParabolaPL.updatePosition=function(a){var b=G.csnames[a.args[0]].homog.value,c=G.csnames[a.args[1]].homog.value,d=n.mult,f=n.neg,k=n.add,m=n.sub,p=b[0],u=b[1],w=b[2],y=c[0];b=c[1];c=c[2];var C=d(w,w),F=d(y,y),I=d(b,b),W=d(w,c),R=f(w);w=k(F,I);I=d(C,I);F=d(C,F);f=d(f(C),d(y,b));y=d(R,k(d(p,w),d(W,y)));b= d(R,k(d(u,w),d(W,b)));d=m(d(k(d(p,p),d(u,u)),w),d(C,d(c,c)));d=t._helper.buildConicMatrix([I,f,F,y,b,d]);d=h.normalizeMax(d);a.matrix=v.withUsage(d,"Conic")};t.ConicBy2Foci1P={};t.ConicBy2Foci1P.kind="Cs";t.ConicBy2Foci1P.signature=["P","P","P"];t.ConicBy2Foci1P.updatePosition=function(a){var b=G.csnames[a.args[0]].homog,c=G.csnames[a.args[1]].homog,d=G.csnames[a.args[2]].homog,f=h.ii,k=h.jj,m=h.normalizeMax(h.cross(b,d)),p=h.normalizeMax(h.cross(c,d)),u=h.normalizeMax(h.cross(d,f));d=h.normalizeMax(h.cross(d, k));p=t._helper.coHarmonic(u,d,m,p);m=h.normalizeMax(p[0]);p=h.normalizeMax(p[1]);f=h.turnIntoCSList([f]);u=h.turnIntoCSList([k]);d=h.turnIntoCSList([b]);var w=h.turnIntoCSList([c]);k=t._helper.conicFromTwoDegenerates(f,u,d,w,m);k=h.normalizeMax(k);f=t._helper.conicFromTwoDegenerates(f,u,d,w,p);f=h.normalizeMax(f);k=h.normalizeMax(h.adjoint3(k));f=h.normalizeMax(h.adjoint3(f));"ellipsoid"!==t._helper.getConicType(k)&&(m=k,k=f,f=m);h.almostequals(b,c).value&&(b=n.real(3),f=h.zeromatrix(b,b));a.results= [k,f]};t.ConicBy2Pol1P={};t.ConicBy2Pol1P.kind="C";t.ConicBy2Pol1P.signature=["P","L","P","L","P"];t.ConicBy2Pol1P.updatePosition=function(a){var b=G.csnames[a.args[0]].homog,c=G.csnames[a.args[1]].homog,d=G.csnames[a.args[2]].homog,f=G.csnames[a.args[3]].homog,k=G.csnames[a.args[4]].homog,m=h.scalproduct,p=h.scalmult,u=h.sub,w=h.productMM,y=n.realmult,C=h.transpose,F=h.turnIntoCSList,I=u(p(m(c,b),k),p(y(2,m(c,k)),b)),W=u(p(m(f,d),k),p(y(2,m(f,k)),d)),R=F([h.cross(b,k)]);k=F([h.cross(d,k)]);W=w(C(R), F([h.cross(b,W)]));F=w(C(k),F([h.cross(d,I)]));w=w(C(R),k);b=m(b,f);c=m(d,c);d=h.add(p(c,W),p(b,F));d=u(d,p(y(2,n.mult(b,c)),w));d=h.add(d,C(d));d=h.normalizeMax(d);d=v.withUsage(d,"Conic");a.matrix=d};t.ConicBy2Pol1L={};t.ConicBy2Pol1L.kind="C";t.ConicBy2Pol1L.signature=["P","L","P","L","L"];t.ConicBy2Pol1L.updatePosition=function(a){var b=G.csnames[a.args[0]].homog,c=G.csnames[a.args[1]].homog,d=G.csnames[a.args[2]].homog,f=G.csnames[a.args[3]].homog,k=G.csnames[a.args[4]].homog,m=h.scalproduct, p=h.scalmult,u=h.productMM,w=n.mult,y=h.transpose,C=h.turnIntoCSList,F=m(c,b),I=m(c,d),W=m(f,b),R=m(f,d),fa=m(k,b);m=m(k,d);var X=C([h.sub(p(w(W,m),c),p(w(I,fa),f))]);b=h.add(u(y(C([p(w(W,I),k)])),C([h.sub(h.add(p(n.sub(w(F,m),w(I,fa)),f),p(n.sub(w(R,fa),w(W,m)),c)),p(h.det3(c,f,k),h.cross(b,d)))])),u(y(X),X));b=h.add(b,y(b));b=h.normalizeMax(b);b=v.withUsage(b,"Conic");a.matrix=b};t._helper.conic1Pol3Inc=function(a,b,c,d,f){var k=h.scalproduct,m=h.scalmult,p=h.productMM,u=h.cross,w=n.realmult,y= n.mult,C=h.transpose,F=h.turnIntoCSList,I=h.det3,W=I(a,c,d),R=F([u(c,f)]),fa=F([u(a,f)]),X=F([u(c,d)]),oa=k(b,a),ma=k(b,c);b=k(b,f);u=F([u(d,h.sub(m(oa,f),m(w(2,b),a)))]);R=m(W,p(C(R),u));a=w(2,n.add(y(I(a,d,f),ma),y(W,b)));a=n.sub(y(I(c,d,f),oa),a);R=h.add(R,m(a,p(C(fa),X)));R=h.add(R,C(R));return R=h.normalizeMax(R)};t.ConicBy1Pol3P={};t.ConicBy1Pol3P.kind="C";t.ConicBy1Pol3P.signature=["P","L","P","P","P"];t.ConicBy1Pol3P.updatePosition=function(a){var b=t._helper.conic1Pol3Inc(G.csnames[a.args[0]].homog, G.csnames[a.args[1]].homog,G.csnames[a.args[2]].homog,G.csnames[a.args[3]].homog,G.csnames[a.args[4]].homog);b=v.withUsage(b,"Conic");a.matrix=b};t.ConicBy1Pol3L={};t.ConicBy1Pol3L.kind="C";t.ConicBy1Pol3L.signature=["P","L","L","L","L"];t.ConicBy1Pol3L.updatePosition=function(a){var b=t._helper.conic1Pol3Inc(G.csnames[a.args[1]].homog,G.csnames[a.args[0]].homog,G.csnames[a.args[2]].homog,G.csnames[a.args[3]].homog,G.csnames[a.args[4]].homog);b=h.normalizeMax(h.adjoint3(b));b=v.withUsage(b,"Conic"); a.matrix=b};t.ConicBy1Pol2P1L={};t.ConicBy1Pol2P1L.kind="Cs";t.ConicBy1Pol2P1L.signature=["P","L","P","P","L"];t.ConicBy1Pol2P1L.updatePosition=function(a){var b=G.csnames[a.args[0]].homog,c=G.csnames[a.args[1]].homog,d=G.csnames[a.args[2]].homog,f=G.csnames[a.args[3]].homog,k=G.csnames[a.args[4]].homog,m=n.add,p=h.turnIntoCSList,u=h.cross,w=h.productMM,y=n.mult,C=n.realmult,F=h.scalmult,I=h.scalproduct,W=n.sub,R=h.transpose,fa=I(c,b),X=I(c,d),oa=I(c,f);c=I(k,b);var ma=I(k,d);I=I(k,f);k=p([u(b,d)]); b=p([u(b,f)]);d=p([u(d,f)]);f=n.sqrt(y(y(ma,I),y(W(y(fa,ma),C(2,y(c,X))),W(y(fa,I),C(2,y(c,oa))))));p=w(R(k),b);f=F(f,h.add(p,R(p)));m=F(W(y(fa,y(ma,I)),m(y(c,y(X,I)),y(c,y(ma,oa)))),p);C=h.add(h.sub(F(oa,k),F(X,b)),F(C(.5,fa),d));m=h.add(m,F(y(c,c),w(R(d),C)));m=h.add(m,R(m));w=h.normalizeMax(h.add(f,m));y=h.normalizeMax(h.sub(f,m));a.results=ud(w,y).value};t.ConicBy1Pol2P1L.stateSize=ud.stateSize;t.ConicBy1Pol1P2L={};t.ConicBy1Pol1P2L.kind="Cs";t.ConicBy1Pol1P2L.signature=["P","L","P","L","L"]; t.ConicBy1Pol1P2L.updatePosition=function(a){var b=G.csnames[a.args[0]].homog,c=G.csnames[a.args[1]].homog,d=G.csnames[a.args[2]].homog,f=G.csnames[a.args[3]].homog,k=G.csnames[a.args[4]].homog,m=n.add,p=h.turnIntoCSList,u=h.cross,w=h.productMM,y=n.mult,C=n.realmult,F=h.scalmult,I=h.scalproduct,W=n.sub,R=h.transpose,fa=I(c,b),X=I(c,d),oa=I(f,b),ma=I(f,d),Ea=I(k,b),Ka=I(k,d),ua=y(fa,fa),Ia=y(fa,X);I=y(X,X);var Ja=y(oa,oa),Na=y(oa,ma),Aa=y(ma,ma),Ta=y(Ea,Ea),hb=y(Ea,Ka),Pb=y(Ka,Ka),jb=y(y(ua,Aa),Pb); jb=W(jb,C(2,y(y(Ia,Na),Pb)));jb=W(jb,C(2,y(y(Ia,Aa),hb)));jb=m(jb,C(.5,y(y(I,Ja),Pb)));jb=m(jb,C(3,y(y(I,Na),hb)));jb=m(jb,C(.5,y(y(I,Aa),Ta)));hb=y(y(fa,ma),Ka);hb=W(hb,y(y(X,oa),Ka));hb=W(hb,y(y(X,ma),Ea));hb=y(hb,y(I,Ea));Pb=W(y(fa,ma),C(2,y(X,oa)));Pb=y(Pb,y(I,y(ma,Ea)));jb=w(R(p([c])),p([h.add(h.add(F(jb,c),F(hb,f)),F(Pb,k))]));hb=p([f]);jb=h.add(jb,F(C(.5,y(y(I,I),Ta)),w(R(hb),hb)));jb=h.add(jb,F(I,w(R(p([k])),p([h.add(F(W(W(C(2,y(Ia,Na)),y(ua,Aa)),C(.5,y(I,Ja))),k),F(y(h.det3(c,f,k),W(y(fa, ma),y(X,oa))),u(b,d)))]))));jb=h.add(jb,R(jb));b=n.sqrt(y(y(ma,Ka),y(W(y(fa,ma),C(2,y(X,oa))),W(y(fa,Ka),C(2,y(X,Ea))))));c=w(R(p([c])),p([h.sub(F(W(y(X,m(y(oa,Ka),y(ma,Ea))),y(fa,y(ma,Ka))),c),F(I,h.add(F(Ea,f),F(oa,k))))]));c=h.add(c,F(y(fa,I),w(R(p([f])),p([k]))));c=F(b,c);c=h.add(c,R(c));f=h.normalizeMax(h.add(jb,c));k=h.normalizeMax(h.sub(jb,c));a.results=ud(f,k).value};t.ConicBy1Pol1P2L.stateSize=ud.stateSize;t._helper.coHarmonic=function(a,b,c,d){var f=h.realVector([100*Math.random(),100*Math.random(), 1]),k=h.det3(f,c,a),m=h.det3(f,c,b);c=h.det3(f,d,a);d=h.det3(f,d,b);d=n.sqrt(n.mult(d,m));k=n.sqrt(n.mult(c,k));a=v.mult(a,d);k=v.mult(b,k);b=h.add(a,k);a=h.sub(a,k);return[b,a]};t.ConicInSquare={};t.ConicInSquare.kind="C";t.ConicInSquare.signature=["P","P","P","P"];t.ConicInSquare.updatePosition=function(a){var b=O.basismap(G.csnames[a.args[0]].homog,G.csnames[a.args[1]].homog,G.csnames[a.args[2]].homog,G.csnames[a.args[3]].homog),c=n.one;c=t._helper.buildConicMatrix([c,c,c,n.real(-3),c,c]);b=h.adjoint3(b); b=h.productMM(h.productMM(h.transpose(b),c),b);b=h.normalizeMax(b);a.matrix=v.withUsage(b,"Conic")};t.ConicBy5lines={};t.ConicBy5lines.kind="C";t.ConicBy5lines.signature=["L","L","L","L","L"];t.ConicBy5lines.updatePosition=function(a){var b=t._helper.ConicBy5(a,G.csnames[a.args[0]].homog,G.csnames[a.args[1]].homog,G.csnames[a.args[2]].homog,G.csnames[a.args[3]].homog,G.csnames[a.args[4]].homog);b=h.adjoint3(b);a.matrix=b;a.matrix=h.normalizeMax(a.matrix);a.matrix=v.withUsage(a.matrix,"Conic")};t.ConicFromPrincipalDirections= {};t.ConicFromPrincipalDirections.kind="C";t.ConicFromPrincipalDirections.signature=["P","P","P"];t.ConicFromPrincipalDirections.updatePosition=function(a){var b=G.csnames[a.args[0]].homog,c=G.csnames[a.args[1]].homog,d=G.csnames[a.args[2]].homog,f=t._helper.pointReflection(b,c),k=h.cross(c,b);b=h.turnIntoCSList([k.value[0],k.value[1],n.zero]);k=h.turnIntoCSList([k]);c=h.turnIntoCSList([h.cross(c,b)]);f=h.turnIntoCSList([h.cross(f,b)]);a.matrix=t._helper.conicFromTwoDegenerates(k,k,c,f,d);a.matrix= h.normalizeMax(a.matrix);a.matrix=v.withUsage(a.matrix,"Conic")};t.CircleBy3={};t.CircleBy3.kind="C";t.CircleBy3.signature=["P","P","P"];t.CircleBy3.updatePosition=function(a){var b=t._helper.ConicBy5(a,G.csnames[a.args[0]].homog,G.csnames[a.args[1]].homog,h.ii,h.jj,G.csnames[a.args[2]].homog);a.matrix=h.normalizeMax(b);a.matrix=v.withUsage(a.matrix,"Circle")};t.ArcBy3={};t.ArcBy3.kind="C";t.ArcBy3.signature=["P","P","P"];t.ArcBy3.updatePosition=function(a){t.CircleBy3.updatePosition(a);a.startPoint= G.csnames[a.args[0]].homog;a.viaPoint=G.csnames[a.args[1]].homog;a.endPoint=G.csnames[a.args[2]].homog};t.ArcBy3.initialize=function(a){a.startPoint=G.csnames[a.args[0]].homog;a.viaPoint=G.csnames[a.args[1]].homog;a.endPoint=G.csnames[a.args[2]].homog;a.isArc=!0};t.PolarOfPoint={};t.PolarOfPoint.kind="L";t.PolarOfPoint.signature=["P","C"];t.PolarOfPoint.updatePosition=function(a){var b=v.mult(G.csnames[a.args[1]].matrix,G.csnames[a.args[0]].homog);b=h.normalizeMax(b);a.homog=v.withUsage(b,"Line")}; t.PolarOfLine={};t.PolarOfLine.kind="P";t.PolarOfLine.signature=["L","C"];t.PolarOfLine.updatePosition=function(a){var b=G.csnames[a.args[0]],c=h.adjoint3(G.csnames[a.args[1]].matrix);b=v.mult(c,b.homog);b=h.normalizeMax(b);a.homog=v.withUsage(b,"Point")};t.AngleBisector={};t.AngleBisector.kind="Ls";t.AngleBisector.signature=["L","L","P"];t.AngleBisector.updatePosition=function(a){var b=G.csnames[a.args[0]].homog,c=G.csnames[a.args[1]].homog,d=G.csnames[a.args[2]].homog,f=h.add,k=h.sub,m=h.abs,p= h.cross,u=h.scalmult,w=h.normalizeMax,y=h._helper.isAlmostZero,C=h.linfty,F=u(m(p(p(C,c),C)),b);b=u(m(p(p(C,b),C)),c);k=k(F,b);f=f(F,b);y(k)&&(k=p(p(p(C,f),C),d));y(f)&&(f=p(p(p(C,k),C),d));a.results=jc(w(k),w(f))};t.AngleBisector.stateSize=jc.stateSize;t._helper.IntersectLC=function(a,b){var c=n,d=h.crossOperator(a),f=h.transpose(d);b=v.mult(f,v.mult(b,d));f=h.maxIndex(a,n.abs2);if(0===f){f=b.value[1].value[1];var k=b.value[1].value[2];var m=b.value[2].value[1];var p=b.value[2].value[2];a=a.value[0]}else 1=== f?(f=b.value[0].value[0],k=b.value[0].value[2],m=b.value[2].value[0],p=b.value[2].value[2],a=a.value[1]):(f=b.value[0].value[0],k=b.value[0].value[1],m=b.value[1].value[0],p=b.value[1].value[1],a=a.value[2]);c=c.div(c.sqrt(c.sub(c.mult(k,m),c.mult(f,p))),a);c=h.add(b,h.scalmult(c,d));f=h.maxIndex(c,h.abs2);d=c.value[f];d=h.normalizeMax(d);d=v.withUsage(d,"Point");c=h.transpose(c);f=h.maxIndex(c,h.abs2);c=c.value[f];c=h.normalizeMax(c);c=v.withUsage(c,"Point");return[d,c]};t.IntersectLC={};t.IntersectLC.kind= "Ps";t.IntersectLC.signature=["L","C"];t.IntersectLC.updatePosition=function(a){var b=t._helper.IntersectLC(G.csnames[a.args[0]].homog,G.csnames[a.args[1]].matrix);a.results=jc(b[0],b[1])};t.IntersectLC.stateSize=jc.stateSize;t.OtherIntersectionCL={};t.OtherIntersectionCL.kind="P";t.OtherIntersectionCL.signature=["C","L","P"];t.OtherIntersectionCL.updatePosition=function(a){var b=G.csnames[a.args[2]].homog,c=t._helper.IntersectLC(G.csnames[a.args[1]].homog,G.csnames[a.args[0]].matrix),d=c[0];c=c[1]; var f=h.projectiveDistMinScal(d,b);b=h.projectiveDistMinScal(c,b);a.homog=fp?(u=a,w=b):(w=n.solveCubic(u,w,c,k),c=n.abs2(n.sub(w[0],w[1])).value.real,k=n.abs2(n.sub(w[0],w[2])).value.real,m=n.abs2(n.sub(w[1],w[2])).value.real,c>k?(u=w[1],w=c>m?w[0]:w[2]):(u=w[2],w=k>m?w[0]:w[1]),u=h.add(h.scalmult(u,a),b),w=h.add(h.scalmult(w,a),b));b=t._helper.splitDegenConic(u);a=b[0];b=b[1];u=t._helper.splitDegenConic(w);c=u[0];w=u[1];u=h.cross(a,c);c=h.cross(b,c); a=h.cross(a,w);b=h.cross(b,w);u=h.normalizeMax(u);c=h.normalizeMax(c);a=h.normalizeMax(a);b=h.normalizeMax(b);u=v.withUsage(u,"Point");c=v.withUsage(c,"Point");a=v.withUsage(a,"Point");b=v.withUsage(b,"Point");return[u,c,a,b]};t.IntersectConicConic={};t.IntersectConicConic.kind="Ps";t.IntersectConicConic.signature=["C","C"];t.IntersectConicConic.updatePosition=function(a){var b=t._helper.IntersectConicConic(G.csnames[a.args[0]].matrix,G.csnames[a.args[1]].matrix);b=ue(b[0],b[1],b[2],b[3]);a.results= b};t.IntersectConicConic.stateSize=ue.stateSize;t.SelectP={};t.SelectP.kind="P";t.SelectP.signature=["Ps"];t.SelectP.initialize=function(a){if(void 0!==a.index)return a.index-1;var b=G.csnames[a.args[0]].results.value;a=t._helper.initializePoint(a);for(var c=h.projectiveDistMinScal(a,b[0]),d=0,f=1;fa.isEuclidean,ar:b[0].value[0],ai:b[1].value[0],br:b[0].value[2],bi:b[1].value[2],cr:n.zero,ci:n.zero,dr:b[2].value[2],di:n.zero}};t.TrComposeMtMt={};t.TrComposeMtMt.kind="Mt";t.TrComposeMtMt.signature= ["Mt","Mt"];t.TrComposeMtMt.updatePosition=function(a){t._helper.composeMtMt(a,G.csnames[a.args[0]].moebius,G.csnames[a.args[1]].moebius)};t.TrComposeTrMt={};t.TrComposeTrMt.kind="Mt";t.TrComposeTrMt.signature=["Tr","Mt"];t.TrComposeTrMt.signatureConstraints=function(a){return!!G.csnames[a.args[0]].isEuclidean};t.TrComposeTrMt.updatePosition=function(a){t._helper.composeMtMt(a,t._helper.euc2moeb(G.csnames[a.args[0]]),G.csnames[a.args[1]].moebius)};t.TrComposeMtTr={};t.TrComposeMtTr.kind="Mt";t.TrComposeMtTr.signature= ["Mt","Tr"];t.TrComposeMtTr.signatureConstraints=function(a){return!!G.csnames[a.args[1]].isEuclidean};t.TrComposeMtTr.updatePosition=function(a){t._helper.composeMtMt(a,G.csnames[a.args[0]].moebius,t._helper.euc2moeb(G.csnames[a.args[1]]))};t._helper.pointReflection=function(a,b){return h.normalizeMax(h.sub(h.scalmult(n.realmult(2,b.value[2]),a),h.scalmult(a.value[2],b)))};t._helper.conicOtherIntersection=function(a,b,c){var d=h.productMV(a,c);a=h.scalproduct(c,d);d=h.scalproduct(b,d);d=n.realmult(-2, d);b=h.scalmult(a,b);c=h.scalmult(d,c);c=h.add(b,c);return c=h.normalizeMax(c)};t.Dist={};t.Dist.kind="V";t.Dist.signature=["P","P"];t.Dist.updatePosition=function(a){var b=G.csnames[a.args[1]].homog;a.value=h.abs(h.sub(h.normalizeZ(G.csnames[a.args[0]].homog),h.normalizeZ(b)))};t.Angle={};t.Angle.kind="V";t.Angle.signature=["L","L","P"];t.Angle.initialize=function(a){void 0===a.angle&&(a.angle=.5*Math.PI);zc(n._helper.input(a.angle))};t.Angle.updatePosition=function(a){var b=G.csnames[a.args[1]].homog, c=G.csnames[a.args[2]].homog,d=h.cross(G.csnames[a.args[0]].homog,h.linfty);b=h.cross(b,h.linfty);c=h.crossratio3(d,b,h.ii,h.jj,c);c=n.mult(n.complex(0,.5),n.log(c));d=(dd().value.real-c.value.real)/Math.PI;b=Math.round(d);!ld&&.01a;++a)t.IFS["set_prob"+a]=t.IFS.probSetter.bind(null,a)})();t._helper.snapPointToLine=function(a,b){if(n._helper.isAlmostZero(a.value[2]))return a;var c=t._helper.projectPointToLine(a,b);c=h.normalizeZ(c);var d=c.value[0].value.real;c=c.value[1].value.real;var f=Math.round(d/Wb)*Wb,k=Math.round(c/Wb)*Wb,m=h.realVector([f,k,1]);Math.abs(f-d)a&&c>.999*a;)b=ac.oneRKStep(b),c+=b,b=Math.min(2*b,a-c),b=Math.max(b,1E-16), ac.restorePosition(),ac.doCollisions(),ac.calculateForces(),ac.moveToFinalPos();return!0};ac.restorePosition=function(){nc.forEach(function(a){Pa[a.type].restorePos(a,9)})};ac.doCollisions=function(){nc.forEach(function(a){Pa[a.type].doCollisions(a)})};ac.calculateForces=function(){nc.forEach(function(a){Pa[a.type].calculateForces(a)})};ac.moveToFinalPos=function(){nc.forEach(function(a){Pa[a.type].move(a)})};ac.oneRKStep=function(a){for(var b=function(y){nc.forEach(function(C){Pa[C.type].initRK(C, y);Pa[C.type].storePosition(C)})},c=function(y){nc.forEach(function(C){Pa[C.type].setToTimestep(C,hf[y])})},d=function(y){nc.forEach(function(C){Pa[C.type].proceedMotion(C,hf[y],y,Lf[y])})},f=function(){nc.forEach(function(y){Pa[y.type].resetForces(y)})},k=function(y){nc.forEach(function(C){Pa[C.type].calculateDelta(C,y)})},m=function(y){var C=0;nc.forEach(function(F){Pa[F.type].proceedMotion(F,hf[6],7,Mf);Pa[F.type].savePos(F,8);Pa[F.type].proceedMotion(F,hf[6],7,Nf);Pa[F.type].savePos(F,9);C+=Pa[F.type].sqDist(F, 8,9)});return C=Math.sqrt(C)/a},p=function(y){nc.forEach(function(C){Pa[C.type].recallPosition(C)})},u=!1;!u;){b(a);for(var w=0;7>w;w++)c(w),d(w),f(),ac.calculateForces(),k(w);m(a)>Pa.env.errorbound&&a>Pa.env.lowestdeltat?(a/=Pa.env.slowdownfactor,p()):u=!0}return a};var Pa={Mass:{reset:function(a,b){a.vel=[0,0,0];a.pos=[0,0,0,0];a.el=b;"undefined"===typeof a.mass&&(a.mass=1);"undefined"===typeof a.charge&&(a.charge=0);"undefined"===typeof a.friction&&(a.friction=0);a.lnfrict=0;"undefined"===typeof a.limitspeed&& (a.limitspeed=!1);"undefined"===typeof a.fixed&&(a.fixed=!1);"undefined"===typeof a.radius&&(a.radius=1);a.internalmove=!1;a.fx=0;a.fy=0;a.fz=0;a.vx=a.vx||0;a.vy=a.vy||0;a.vz=a.vz||0;a.mtype=0;a.env=Pa.env;a.deltat=0;a.mx=0;a.my=0;a.mz=0;a.mvx=0;a.mvy=0;a.mvz=0;a.dx=[0,0,0,0,0,0,0,0,0,0];a.dy=[0,0,0,0,0,0,0,0,0,0];a.dz=[0,0,0,0,0,0,0,0,0,0];a.dvx=[0,0,0,0,0,0,0,0,0,0];a.dvy=[0,0,0,0,0,0,0,0,0,0];a.dvz=[0,0,0,0,0,0,0,0,0,0];a.midx=0;a.midy=0;a.midz=0;a.lx=0;a.ly=0;a.lz=0},resetForces:function(a){a.fx= 0;a.fy=0;a.fz=0},getBlock:!1,setToTimestep:function(a,b,c){},initRK:function(a,b){var c=O.extractPoint(a.el.homog);a.x=c.x;a.y=c.y;a.z=0;a.xo=a.x;a.yo=a.y;a.zo=a.z;a.vxo=a.vx;a.vyo=a.vy;a.vzo=a.vz;a.deltat=b;a.fx=0;a.fy=0;a.fz=0},setVelocity:function(a,b,c,d){d||(d=0);a.vx=b;a.vy=c;a.vz=d},move:function(a){a.pos=[a.x,a.y,1];a.internalmove=!0;pb&&Za.down&&a.el===pb.mover||Vb(a.el,h.realVector(a.pos),"homog");a.el.sx=a.x;a.el.sy=a.y;a.internalmove=!1},proceedMotion:function(a,b,c,d){if(!a.fixed)for(a.x= a.mx,a.y=a.my,a.z=a.mz,a.vx=a.mvx,a.vy=a.mvy,a.vz=a.mvz,b=0;bPa.det(d,b,f,c,R,fa)*Pa.det(d,b,f,c,X.value.real,X.value.imag)&&0>Pa.det(d,b,R,fa,X.value.real,X.value.imag)*Pa.det(f,c,R,fa,X.value.real, X.value.imag)&&(W=F.behavior.mvx+a.deltat*(-X.value.real+F.behavior.xo),R=F.behavior.mvy+a.deltat*(-X.value.imag+F.behavior.yo),I=y*W+w*R,W=w*W-y*R,F.behavior.x=X.value.real,F.behavior.y=X.value.imag,F.behavior.vx=y*I*(1-a.xdamp),F.behavior.vy=w*I*(1-a.xdamp),F.behavior.vx+=-w*W*(1-a.ydamp),F.behavior.vy+=y*W*(1-a.ydamp))}a.x1o=d;a.y1o=b;a.x2o=f;a.y2o=c}},Environment:{init:function(a){"undefined"===typeof a.gravity&&(a.gravity=0);"undefined"===typeof a.friction&&(a.friction=0);"undefined"===typeof a.springstrength&& (a.springstrength=1);"undefined"!==typeof a.accuracy&&(Td=a.accuracy);"undefined"!==typeof a.deltat&&Ya(a.deltat/.6);"undefined"===typeof a.charges&&(a.charges=!1);"undefined"===typeof a.balls&&(a.balls=!1);"undefined"===typeof a.newton&&(a.newton=!1);"undefined"===typeof a.ballInteractionBoosting&&(a.ballInteractionBoosting=1);Pa.env=a;a.errorbound=.001;a.lowestdeltat=1E-7;a.slowdownfactor=2},reset:function(a){},resetForces:function(a){},getBlock:!1,setToTimestep:function(a,b,c){},initRK:function(a, b){},setVelocity:function(a,b,c,d){},move:function(a){},proceedMotion:function(a,b,c,d){},calculateForces:function(a){var b,c;if(a.newton)for(b=0;by?0:(w-y)*(w-y)),u=(k-u)/(w*w*w)*(w>y?0:(w-y)*(w-y))):1===a.ballInteractionBoosting?(p=(f-p)/(w*w*w*w)*(w>y?0:(w-y)*(w-y)),u=(k-u)/(w*w*w*w)*(w>y?0:(w-y)*(w-y))):(p=(f-p)/(w*w*w*w*w)*(w>y?0:(w-y)*(w-y)),u=(k-u)/(w*w*w*w*w)*(w>y?0:(w-y)*(w-y)));d.behavior.fx+=p;d.behavior.fy+=u;m.behavior.fx-=p;m.behavior.fy-=u}for(b=0;b