From 227468e2051fe2ecfc373d77d421bec637f965cc Mon Sep 17 00:00:00 2001 From: Rik Roots Date: Sun, 19 Mar 2023 11:33:57 +0000 Subject: [PATCH] minor bugfixes --- demo/dom-004.js | 24 ++--------------------- docs/demo/dom-004.html | 24 ++--------------------- docs/source/mixin/cell-key-functions.html | 3 ++- min/scrawl.js | 2 +- source/mixin/cell-key-functions.js | 3 ++- 5 files changed, 9 insertions(+), 47 deletions(-) diff --git a/demo/dom-004.js b/demo/dom-004.js index 372a8a9b5..9169f7e3a 100644 --- a/demo/dom-004.js +++ b/demo/dom-004.js @@ -4,7 +4,7 @@ // [Run code](../../demo/dom-004.html) import * as scrawl from '../source/scrawl.js' -import { reportSpeed, killTicker } from './utilities.js'; +import { reportSpeed, killTicker, reportFullLibrary } from './utilities.js'; // #### Scene setup @@ -69,27 +69,7 @@ let tween = scrawl.makeTween({ // #### Scene animation // Function to display frames-per-second data, and other information relevant to the demo -const report = reportSpeed('#reportmessage', function () { - - const lib = scrawl.library; - - let t = Object.keys(lib.tween), - a = Object.keys(lib.artefact), - n = Object.keys(lib.animation), - k = Object.keys(lib.animationtickers), - e = Object.keys(lib.element), - tn = lib.tweennames.length, - an = lib.artefactnames.length, - nn = lib.animationnames.length, - kn = lib.animationtickersnames.length, - en = lib.elementnames.length; - - return `Tween - ${t.length}, ${tn}: ${t.join(', ')} -Artefact - ${a.length}, ${an}: ${a.join(', ')} -Element - ${e.length}, ${en}: ${e.join(', ')} -Tickers - ${k.length}, ${kn}: ${k.join(', ')} -Animation - ${n.length}, ${nn}: ${n.join(', ')}`; -}); +const report = reportSpeed('#reportmessage', () => reportFullLibrary(scrawl)); // Create the Display cycle animation diff --git a/docs/demo/dom-004.html b/docs/demo/dom-004.html index 4e2eaed98..ad3ecd791 100644 --- a/docs/demo/dom-004.html +++ b/docs/demo/dom-004.html @@ -1119,7 +1119,7 @@

Demo DOM 004

import * as scrawl from '../source/scrawl.js'
 
-import { reportSpeed, killTicker } from './utilities.js';
+import { reportSpeed, killTicker, reportFullLibrary } from './utilities.js'; @@ -1229,27 +1229,7 @@

Scene animation

-
const report = reportSpeed('#reportmessage', function () {
-
-    const lib = scrawl.library;
-
-    let t = Object.keys(lib.tween),
-        a = Object.keys(lib.artefact),
-        n = Object.keys(lib.animation),
-        k = Object.keys(lib.animationtickers),
-        e = Object.keys(lib.element),
-        tn = lib.tweennames.length,
-        an = lib.artefactnames.length,
-        nn = lib.animationnames.length,
-        kn = lib.animationtickersnames.length,
-        en = lib.elementnames.length;
-
-    return `Tween - ${t.length}, ${tn}: ${t.join(', ')}
-Artefact - ${a.length}, ${an}: ${a.join(', ')}
-Element - ${e.length}, ${en}: ${e.join(', ')}
-Tickers - ${k.length}, ${kn}: ${k.join(', ')}
-Animation - ${n.length}, ${nn}: ${n.join(', ')}`;
-});
+
const report = reportSpeed('#reportmessage', () => reportFullLibrary(scrawl));
diff --git a/docs/source/mixin/cell-key-functions.html b/docs/source/mixin/cell-key-functions.html index 4988c631b..e608f8f42 100644 --- a/docs/source/mixin/cell-key-functions.html +++ b/docs/source/mixin/cell-key-functions.html @@ -997,9 +997,10 @@

Prototype functions

    P.getEntityHits = function () {
 
         const response = [],
-            results = [],
             resultNames = [];
 
+        let results = [];
+
         if (this.groupBuckets) {
 
             this.groupBuckets.forEach(grp => {
diff --git a/min/scrawl.js b/min/scrawl.js
index 3382e6ec5..782cd3c3c 100644
--- a/min/scrawl.js
+++ b/min/scrawl.js
@@ -1 +1 @@
-const t={},e=[],i={},s=[],n={},r=[],o={},a=[],l={},h=[],c={},u={},d=[],f={},p={},m=[],g={},y=[],b={},S={},k=[],A={},O=[],v={},x=[],C={},w={},P=[],D={},R=[],F={};function E(c=""){const u=function(t,e,i=!1){t.forEach((t=>{const s=e[t];s&&s.kill&&s.kill(i)}))};if(c){u(a.filter((t=>0===t.indexOf(c))),o);u(h.filter((t=>0===t.indexOf(c))),l);u(y.filter((t=>0===t.indexOf(c))),g,!0);u(R.filter((t=>0===t.indexOf(c))),D);u(P.filter((t=>0===t.indexOf(c))),w);u(s.filter((t=>0===t.indexOf(c))),i);u(r.filter((t=>0===t.indexOf(c))),n);u(m.filter((t=>0===t.indexOf(c))),p);u(e.filter((t=>0===t.indexOf(c))),t);u(k.filter((t=>0===t.indexOf(c))),S);u(O.filter((t=>0===t.indexOf(c))),A);u(x.filter((t=>0===t.indexOf(c))),v)}}const M={DEFAULTS:{defaults:!0},b:{weight:"bold"},"/b":{weight:"normal"},strong:{weight:"bold"},"/strong":{weight:"normal"},BOLD:{weight:"bold"},"/BOLD":{weight:"normal"},i:{style:"italic"},"/i":{style:"normal"},em:{style:"italic"},"/em":{style:"normal"},ITALIC:{style:"italic"},"/ITALIC":{style:"normal"},u:{underline:!0},"/u":{underline:!1},UNDERLINE:{underline:!0},"/UNDERLINE":{underline:!1},OVERLINE:{overline:!0},"/OVERLINE":{overline:!1},"SMALL-CAPS":{variant:"small-caps"},"/SMALL-CAPS":{variant:"normal"},HIGHLIGHT:{highlight:!0},"/HIGHLIGHT":{highlight:!1}},H={};var I=Object.freeze({__proto__:null,version:"8.10.0",anchor:t,anchornames:e,animation:i,animationnames:s,animationtickers:n,animationtickersnames:r,artefact:o,artefactnames:a,asset:l,assetnames:h,canvas:c,canvasnames:[],cell:u,cellnames:d,element:{},elementnames:[],entity:f,entitynames:[],filter:p,filternames:m,fontattribute:{},fontattributenames:[],group:g,groupnames:y,palette:{},palettenames:[],particle:b,particlenames:[],force:S,forcenames:k,spring:A,springnames:O,world:v,worldnames:x,stack:C,stacknames:[],tween:w,tweennames:P,styles:D,stylesnames:R,unstackedelement:F,unstackedelementnames:[],purge:E,sectionClasses:M,constructors:H});let B=!1,T=!0,L=[],$=[];const j=function(){T=!0},X=function(){let t,e;for(T&&function(){if(T){T=!1;let t,e,s,n,r,o=Math.floor,a=[];for(s=0,n=$.length;st.concat(e)),[])}}(),t=0,e=L.length;tX()))},Y=function(){B=!0,X()},N=function(){B=!1},G=(t,e)=>{if(!ut(e))throw new Error(`core/utilities addStrings() error - no delta argument supplied ${t}, ${e}`);if(null!=e){"left"===t||"top"===t?t="0%":"right"===t||"bottom"===t?t="100%":"center"===t&&(t="50%");let i=!(!t.substring&&!e.substring);return nt(t)?t+=nt(e)?e:parseFloat(e):t=parseFloat(t)+(nt(e)?e:parseFloat(e)),i?t+"%":t}return t},z=t=>{let e,i,s;if(!ut(t))throw new Error("core/utilities convertTime() error - no argument supplied");if(nt(t))return["ms",t];if(!t.substring)throw new Error(`core/utilities convertTime() error - invalid argument: ${t}`);if(e=t.match(/^\d+\.?\d*(\D*)/),i=e[1].toLowerCase?e[1].toLowerCase():"ms",s=parseFloat(t),!nt(s))throw new Error(`core/base error - convertTime() argument converts to NaN: ${t}`);switch(i){case"s":s*=1e3;break;case"%":break;default:i="ms"}return[i,s]},W=t=>!t.toFixed||isNaN(t)?(console.log(`${t} is not a valid number`),t):((t%=360)<0&&(t+=360),t),V=t=>t.toFixed?0==t?t:isNaN(t)?0:t<-1e-6||t>1e-6?t:0:t,Z=()=>{},_=function(t){return t},U=function(){return this},K=()=>Promise.resolve(!0),q={},Q=()=>performance.now().toString(36)+Math.random().toString(36).substr(2),J=function(t,e,i){return e+t*(i-e)},tt=t=>"boolean"==typeof t,et=t=>"[object HTMLCanvasElement]"===Object.prototype.toString.call(t),it=t=>!!(t&&t.querySelector&&t.dispatchEvent),st=t=>"function"==typeof t,nt=t=>!(null==t||!t.toFixed||Number.isNaN(t)),rt=t=>"[object Object]"===Object.prototype.toString.call(t),ot=t=>!(!t||!t.type||"Quaternion"!==t.type),at=(t,e)=>{if(!rt(t)||!rt(e))throw new Error(`core/utilities mergeOver() error - insufficient arguments supplied ${t}, ${e}`);for(let i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t},lt=(t,e)=>{if(!rt(t)||!rt(e))throw new Error(`core/utilities mergeDiscard() error - insufficient arguments supplied ${t}, ${e}`);return Object.entries(e).forEach((([i,s])=>{null===s?delete t[i]:t[i]=e[i]})),t},ht=(t,e)=>{if(!dt(t,e))throw new Error(`core/utilities pushUnique() error - insufficient arguments supplied ${t}, ${e}`);if(!Array.isArray(t))throw new Error(`core/utilities pushUnique() error - argument not an array ${t}`);return Array.isArray(e)?e.forEach((e=>ht(t,e))):t.indexOf(e)<0&&t.push(e),t},ct=(t,e)=>{if(!dt(t,e))throw new Error(`core/utilities removeItem() error - insufficient arguments supplied ${t}, ${e}`);if(!Array.isArray(t))throw new Error(`core/utilities removeItem() error - argument not an array ${t}`);let i=t.indexOf(e);return i>=0&&t.splice(i,1),t},ut=t=>void 0!==t,dt=(...t)=>t.every((t=>void 0!==t)),ft=(...t)=>t.find((t=>void 0!==t)),pt=(...t)=>!!t.find((t=>void 0!==t)),mt={out:t=>1-Math.cos(t*Math.PI/2),in:t=>Math.sin(t*Math.PI/2),easeIn:t=>{let e=1-t;return 1-e*e},easeIn3:t=>{let e=1-t;return 1-e*e*e},easeIn4:t=>{let e=1-t;return 1-e*e*e*e},easeIn5:t=>{let e=1-t;return 1-e*e*e*e*e},easeOutIn:t=>t<.5?2*t*t:1-Math.pow(-2*t+2,2)/2,easeOutIn3:t=>t<.5?4*t*t*t:1-Math.pow(-2*t+2,3)/2,easeOutIn4:t=>t<.5?8*t*t*t*t:1-Math.pow(-2*t+2,4)/2,easeOutIn5:t=>t<.5?16*t*t*t*t*t:1-Math.pow(-2*t+2,5)/2,easeInOut:t=>{const e=.5-t,i=t-.5;return t<.5?.5+-2*e*e:.5+Math.pow(2*i,2)/2},easeInOut3:t=>{const e=.5-t,i=t-.5;return t<.5?.5+-4*e*e*e:.5+Math.pow(2*i,3)/2},easeInOut4:t=>{const e=.5-t,i=t-.5;return t<.5?.5+-8*e*e*e*e:.5+Math.pow(2*i,4)/2},easeInOut5:t=>{const e=.5-t,i=t-.5;return t<.5?.5+-16*e*e*e*e*e:.5+Math.pow(2*i,5)/2},easeOut:t=>t*t,easeOut3:t=>t*t*t,easeOut4:t=>t*t*t*t,easeOut5:t=>t*t*t*t*t,none:t=>t,linear:t=>t,cosine:t=>.5*(1+Math.cos((1-t)*Math.PI)),hermite:t=>t*t*(2*-t+3),quintic:t=>t*t*t*(t*(6*t-15)+10),easeOutSine:t=>1-Math.cos(t*Math.PI/2),easeInSine:t=>Math.sin(t*Math.PI/2),easeOutInSine:t=>-(Math.cos(Math.PI*t)-1)/2,easeOutQuad:t=>t*t,easeInQuad:t=>1-(1-t)*(1-t),easeOutInQuad:t=>t<.5?2*t*t:1-Math.pow(-2*t+2,2)/2,easeOutCubic:t=>t*t*t,easeInCubic:t=>1-Math.pow(1-t,3),easeOutInCubic:t=>t<.5?4*t*t*t:1-Math.pow(-2*t+2,3)/2,easeOutQuart:t=>t*t*t*t,easeInQuart:t=>1-Math.pow(1-t,4),easeOutInQuart:t=>t<.5?8*t*t*t*t:1-Math.pow(-2*t+2,4)/2,easeOutQuint:t=>t*t*t*t*t,easeInQuint:t=>1-Math.pow(1-t,5),easeOutInQuint:t=>t<.5?16*t*t*t*t*t:1-Math.pow(-2*t+2,5)/2,easeOutExpo:t=>0===t?0:Math.pow(2,10*t-10),easeInExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeOutInExpo:t=>0===t||1===t?t:t<.5?Math.pow(2,20*t-10)/2:(2-Math.pow(2,-20*t+10))/2,easeOutCirc:t=>1-Math.sqrt(1-Math.pow(t,2)),easeInCirc:t=>Math.sqrt(1-Math.pow(t-1,2)),easeOutInCirc:t=>t<.5?(1-Math.sqrt(1-Math.pow(2*t,2)))/2:(Math.sqrt(1-Math.pow(-2*t+2,2))+1)/2,easeOutBack:t=>2.70158*t*t*t-1.70158*t*t,easeInBack:t=>1+2.70158*Math.pow(t-1,3)+1.70158*Math.pow(t-1,2),easeOutInBack:t=>{const e=2.5949095;return t<.5?Math.pow(2*t,2)*(7.189819*t-e)/2:(Math.pow(2*t-2,2)*((e+1)*(2*t-2)+e)+2)/2},easeOutElastic:t=>{const e=2*Math.PI/3;return 0===t||1===t?t:-Math.pow(2,10*t-10)*Math.sin((10*t-10.75)*e)},easeInElastic:t=>{const e=2*Math.PI/3;return 0===t||1===t?t:Math.pow(2,-10*t)*Math.sin((10*t-.75)*e)+1},easeOutInElastic:t=>{const e=2*Math.PI/4.5;return 0===t||1===t?t:t<.5?-Math.pow(2,20*t-10)*Math.sin((20*t-11.125)*e)/2:Math.pow(2,-20*t+10)*Math.sin((20*t-11.125)*e)/2+1},easeOutBounce:t=>{const e=7.5625,i=2.75;return(t=1-t)<1/i?1-e*t*t:t<2/i?1-(e*(t-=1.5/i)*t+.75):t<2.5/i?1-(e*(t-=2.25/i)*t+.9375):1-(e*(t-=2.625/i)*t+.984375)},easeInBounce:t=>{const e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeOutInBounce:t=>{const e=7.5625,i=2.75;let s;return t<.5?(s=(t=1-2*t)<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375,(1-s)/2):(s=(t=2*t-1)<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375,(1+s)/2)}},gt=Math.PI/180,yt=new Set(["all","background","backgroundAttachment","backgroundBlendMode","backgroundClip","backgroundColor","backgroundOrigin","backgroundPosition","backgroundRepeat","border","borderBottom","borderBottomColor","borderBottomStyle","borderBottomWidth","borderCollapse","borderColor","borderLeft","borderLeftColor","borderLeftStyle","borderLeftWidth","borderRight","borderRightColor","borderRightStyle","borderRightWidth","borderSpacing","borderStyle","borderTop","borderTopColor","borderTopStyle","borderTopWidth","borderWidth","clear","color","columns","content","counterIncrement","counterReset","cursor","direction","display","emptyCells","float","font","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontSynthesis","fontVariant","fontVariantAlternates","fontVariantCaps","fontVariantEastAsian","fontVariantLigatures","fontVariantNumeric","fontVariantPosition","fontWeight","grid","gridArea","gridAutoColumns","gridAutoFlow","gridAutoPosition","gridAutoRows","gridColumn","gridColumnStart","gridColumnEnd","gridRow","gridRowStart","gridRowEnd","gridTemplate","gridTemplateAreas","gridTemplateRows","gridTemplateColumns","imageResolution","imeMode","inherit","inlineSize","isolation","letterSpacing","lineBreak","lineHeight","listStyle","listStyleImage","listStylePosition","listStyleType","margin","marginBlockStart","marginBlockEnd","marginInlineStart","marginInlineEnd","marginBottom","marginLeft","marginRight","marginTop","marks","mask","maskType","maxWidth","maxHeight","maxBlockSize","maxInlineSize","maxZoom","minWidth","minHeight","minBlockSize","minInlineSize","minZoom","mixBlendMode","objectFit","objectPosition","offsetBlockStart","offsetBlockEnd","offsetInlineStart","offsetInlineEnd","orphans","overflow","overflowWrap","overflowX","overflowY","pad","padding","paddingBlockStart","paddingBlockEnd","paddingInlineStart","paddingInlineEnd","paddingBottom","paddingLeft","paddingRight","paddingTop","pageBreakAfter","pageBreakBefore","pageBreakInside","pointerEvents","position","prefix","quotes","rubyAlign","rubyMerge","rubyPosition","scrollBehavior","scrollSnapCoordinate","scrollSnapDestination","scrollSnapPointsX","scrollSnapPointsY","scrollSnapType","scrollSnapTypeX","scrollSnapTypeY","shapeImageThreshold","shapeMargin","shapeOutside","tableLayout","textAlign","textDecoration","textIndent","textOrientation","textOverflow","textRendering","textShadow","textTransform","textUnderlinePosition","unicodeRange","unset","verticalAlign","widows","willChange","wordBreak","wordSpacing","wordWrap","zIndex"]),bt=new Set(["alignContent","alignItems","alignSelf","animation","animationDelay","animationDirection","animationDuration","animationFillMode","animationIterationCount","animationName","animationPlayState","animationTimingFunction","backfaceVisibility","backgroundImage","backgroundSize","borderBottomLeftRadius","borderBottomRightRadius","borderImage","borderImageOutset","borderImageRepeat","borderImageSlice","borderImageSource","borderImageWidth","borderRadius","borderTopLeftRadius","borderTopRightRadius","boxDecorationBreak","boxShadow","boxSizing","columnCount","columnFill","columnGap","columnRule","columnRuleColor","columnRuleStyle","columnRuleWidth","columnSpan","columnWidth","filter","flex","flexBasis","flexDirection","flexFlow","flexGrow","flexShrink","flexWrap","fontFeatureSettings","fontKerning","fontLanguageOverride","hyphens","imageRendering","imageOrientation","initial","justifyContent","linearGradient","opacity","order","orientation","outline","outlineColor","outlineOffset","outlineStyle","outlineWidth","resize","tabSize","textAlignLast","textCombineUpright","textDecorationColor","textDecorationLine","textDecorationStyle","touchAction","transformStyle","transition","transitionDelay","transitionDuration","transitionProperty","transitionTimingFunction","unicodeBidi","whiteSpace","writingMode"]),St=[];let kt=!0;const At=[],Ot=()=>{kt=!0},vt=function(t,e,i=q){if("function"==typeof window.IntersectionObserver&&t&&t.run){let s=new IntersectionObserver(((e,i)=>{let s,n,r;for(s=0,n=e.length;sMt=t,It=function(){let t=[];return(window.opr&&opr.addons||window.opera||navigator.userAgent.indexOf(" OPR/")>=0)&&t.push("old-opera"),"undefined"!=typeof InstallTrigger?t.push("firefox"):(/constructor/i.test(window.HTMLElement)||"[object SafariRemoteNotification]"===(!window.safari||"undefined"!=typeof safari&&safari.pushNotification).toString())&&t.push("safari"),document.documentMode&&t.push("internet-explorer"),t.indexOf("internet-explorer")<0&&window.StyleMedia&&t.push("edge"),window.chrome&&t.push("chrome"),(t.indexOf("chrome")>=0||t.indexOf("old-opera")>=0)&&window.CSS&&t.push("blink"),t}();let Bt=0;const Tt=()=>Bt;let Lt=!1;const $t=()=>Lt,jt=t=>Lt=t,Xt=()=>{Bt=window.devicePixelRatio;for(const[t,e]of Object.entries(c))e.dirtyDimensions=!0;for(const[t,e]of Object.entries(u))e.dirtyDimensions=!0;for(const[t,e]of Object.entries(f))e.dirtyHost=!0;Lt||Mt(),It.indexOf("safari")<0&&matchMedia(`(resolution: ${Bt}dppx)`).addEventListener("change",Xt,{once:!0})};Xt();const Yt=[];let Nt=!1;const Gt=function(t=""){if(Nt||t){let e,i,s,n,r,a,l,h,c,u,d,f,p,m,g,y,b,S;t?e=[t]:(Nt=!1,e=[].concat(Yt),Yt.length=0);let k=$t(),A=Tt();for(i=0,s=e.length;iVt,_t=t=>Vt=t;let Ut=!1;const Kt=()=>Ut,qt=t=>Ut=t;let Qt=!1;const Jt=()=>Qt,te=t=>Qt=t;let ee=!1;let ie=!1;const se=()=>ie,ne=t=>ie=t;let re=!1;const oe=()=>re,ae=t=>re=t;let le=!1;const he=()=>le,ce=t=>le=t;let ue=!1;const de=()=>ue,fe=t=>ue=t,pe=function(){Ut=!0,Qt=!0};function me(t=q){t.defs={},t.getters={},t.setters={},t.deltaSetters={},t.get=function(t){if(ut(t)){const e=this.getters[t];if(e)return e.call(this);{const e=this.defs[t];if(void 0!==e){const i=this[t];return void 0!==i?i:e}}}return null},t.set=function(t=q){const e=Object.keys(t),i=e.length;if(i){const s=this.setters,n=this.defs;let r,o,a,l;for(o=0;o{let c,u=!0;if(i.indexOf(t)<0&&(u=!1),u&&s.indexOf(t)>=0&&(u=!1),u&&(c=n.some((e=>new RegExp(e).test(t))),c&&(u=!1)),u)if(a.indexOf(t)>=0){if(ut(e)&&null!==e){let i=this.stringifyFunction(e);i&&i.length&&(h[t]=i)}}else o.indexOf(t)>=0&&this[t]&&this[t].name?h[t]=this[t].name:r.indexOf(t)>=0?(l.indexOf(t)>=0||e[0]||e[1])&&(h[t]=e):(c=this.processPacketOut(t,e,l),c&&(h[t]=e))}),this),h=this.finalizePacketOut(h,t),JSON.stringify([this.name,this.type,this.lib,h])},t.stringifyFunction=function(t){const e=t.toString().match(/\(([\s\S]*?)\)[\s\S]*?\{([\s\S]*)\}/),i=e[1],s=e[2];return!!dt(i,s)&&`${i}~~~${s}`},t.processPacketOut=function(t,e,i){let s=!0;return i.indexOf(t)<0&&e===this.defs[t]&&(s=!1),s},t.finalizePacketOut=function(t,e){return t},t.importPacket=function(t){const e=this,i=function(t){return new Promise(((i,s)=>{let n;t.substring||s(new Error("Packet url supplied for import is not a string")),"["===t[0]?(n=e.actionPacket(t),n&&n.lib?i(n):s(n)):t.indexOf('"name":')>=0?s(new Error("Bad packet supplied for import")):fetch(t).then((t=>{if(!t.ok)throw new Error(`Packet import from server failed - ${t.status}: ${t.statusText} - ${t.url}`);return t.text()})).then((t=>{if(n=e.actionPacket(t),!n||!n.lib)throw n;i(n)})).catch((t=>s(t)))}))};if(Array.isArray(t)){const e=[];return t.forEach((t=>e.push(i(t)))),new Promise(((t,i)=>{Promise.all(e).then((e=>t(e))).catch((t=>i(t)))}))}if(t.substring)return i(t);Promise.reject(new Error("Argument supplied for packet import is not a string or array of strings"))},t.actionPacketExclusions=["Image","Sprite","Video","Canvas","Stack"],t.actionPacket=function(t){try{if(t&&t.substring){if("["===t[0]){let e,i,s,n;try{[e,i,s,n]=JSON.parse(t)}catch(t){throw new Error(`Failed to process packet due to JSON parsing error - ${t.message}`)}if(dt(e,i,s,n)){if(this.actionPacketExclusions.indexOf(i)>=0)throw new Error("Failed to process packet - Stacks, Canvases and visual assets are excluded from the packet system");let t=I[s][e];if(t)t.set(n);else{if(n.outerHTML&&n.host){const t=document.querySelector(`#${n.host}`);if(t){const i=document.createElement("div");i.innerHTML=n.outerHTML;const s=i.firstElementChild;s&&(s.id=e,t.appendChild(s),n.domElement=s)}}if(t=new H[i](n),!t)throw new Error("Failed to create Scrawl-canvas object from supplied packet")}if(t.packetFunctions.forEach((e=>this.actionPacketFunctions(t,e))),n.anchor&&t.anchor&&t.anchor.packetFunctions.forEach((e=>{t.anchor[e]=n.anchor[e],this.actionPacketFunctions(t.anchor,e),t.anchor.build()})),n.glyphStyles&&t.glyphStyles&&n.glyphStyles.forEach(((e,i)=>{rt(e)&&t.setGlyphStyles(e,i)})),t)return t;throw new Error("Failed to process supplied packet")}throw new Error("Failed to process packet - JSON string holds incomplete data")}throw new Error("Failed to process packet - JSON string does not represent an array")}throw new Error("Failed to process packet - not a JSON string")}catch(t){return console.log(t),t}},t.actionPacketFunctions=function(t,e){const i=t[e];if(ut(i)&&null!==i&&i.substring)if("~~~"===i)t[e]=Z;else{let s,n,r;[s,n]=i.split("~~~"),s=s.split(","),s=s.map((t=>t.trim())),n.indexOf("[native code]")<0?(r=new Function(...s,n),t[e]=r.bind(t)):t[e]=Z}},t.clone=function(t=q){const e=this.name;let i,s;this.name=t.name||"",t.useNewTicker?(s=this.ticker,this.ticker=null,i=this.saveAsPacket(),this.ticker=s):i=this.saveAsPacket(),this.name=e;let n=this.actionPacket(i);return this.packetFunctions.forEach((t=>{this[t]&&(n[t]=this[t])})),n=this.postCloneAction(n,t),n.set(t),n},t.postCloneAction=function(t,e){return t},t.kill=function(){return this.deregister()},t.makeName=function(t){return t&&t.substring&&I[`${this.lib}names`].indexOf(t)<0?this.name=t:this.name=Q(),this},t.register=function(){if(!ut(this.name))throw new Error(`core/base error - register() name not set: ${this}`);const t=I[`${this.lib}names`],e=I[this.lib];return this.isArtefact&&(ht(a,this.name),o[this.name]=this),this.isAsset&&(ht(h,this.name),l[this.name]=this),ht(t,this.name),e[this.name]=this,this},t.deregister=function(){if(!ut(this.name))throw new Error(`core/base error - deregister() name not set: ${this}`);const t=I[`${this.lib}names`],e=I[this.lib];return this.isArtefact&&(ct(a,this.name),delete o[this.name]),this.isAsset&&(ct(h,this.name),delete l[this.name]),ct(t,this.name),delete e[this.name],this},t}const Animation=function(t=q){return this.makeName(t.name),this.order=ut(t.order)?t.order:this.defs.order,this.fn=t.fn||K,this.onRun=t.onRun||Z,this.onHalt=t.onHalt||Z,this.onKill=t.onKill||Z,this.register(),t.delay||this.run(),this};let ge=Animation.prototype=Object.create(Object.prototype);ge.type="Animation",ge.lib="animation",ge.isArtefact=!1,ge.isAsset=!1,ge=me(ge);ge.defs=at(ge.defs,{order:1,fn:null,onRun:null,onHalt:null,onKill:null}),ge.stringifyFunction=Z,ge.processPacketOut=Z,ge.finalizePacketOut=Z,ge.saveAsPacket=function(){return`[${this.name}, ${this.type}, ${this.lib}, {}]`},ge.clone=U,ge.run=function(){return this.onRun(),ht($,this.name),j(),setTimeout((()=>pe()),20),this},ge.isRunning=function(){return $.indexOf(this.name)>=0},ge.halt=function(){return this.onHalt(),ct($,this.name),j(),this},ge.kill=function(){return this.onKill(),ct($,this.name),j(),this.deregister(),!0};const ye=function(t){return!!t&&new Animation(t)};H.Animation=Animation;const be=[],Se={x:0,y:0,scrollX:0,scrollY:0,w:0,h:0,type:"mouse",prefersReducedMotion:!1,prefersDarkColorScheme:!1,prefersReduceTransparency:!1,prefersContrast:!1,prefersReduceData:!1,rawTouches:[]},ke=window.matchMedia("(prefers-contrast: more)");ke.addEventListener("change",(()=>{let t=ke.matches;Se.prefersContrast!==t&&(Se.prefersContrast=t,ee=!0)})),Se.prefersContrast=ke.matches;const Ae=window.matchMedia("(prefers-reduced-motion: reduce)");Ae.addEventListener("change",(()=>{let t=Ae.matches;Se.prefersReducedMotion!==t&&(Se.prefersReducedMotion=t,ne(!0))})),Se.prefersReducedMotion=Ae.matches;const Oe=window.matchMedia("(prefers-color-scheme: dark)");Oe.addEventListener("change",(()=>{let t=Oe.matches;Se.prefersDarkColorScheme!==t&&(Se.prefersDarkColorScheme=t,ae(!0))})),Se.prefersDarkColorScheme=Oe.matches;const ve=window.matchMedia("(prefers-reduced-transparency: reduce)");ve.addEventListener("change",(()=>{let t=ve.matches;Se.prefersReduceTransparency!==t&&(Se.prefersReduceTransparency=t,ce(!0))})),Se.prefersReduceTransparency=ve.matches;const xe=window.matchMedia("(prefers-reduced-data: reduce)");xe.addEventListener("change",(()=>{let t=xe.matches;Se.prefersReduceData!==t&&(Se.prefersReduceData=t,fe(!0))})),Se.prefersReduceData=xe.matches;const Ce=function(t){let e=document.documentElement.clientWidth,i=document.documentElement.clientHeight;Se.w===e&&Se.h===i||(Se.w=e,Se.h=i,qt(!0),te(!0))},we=function(t){let e=window.pageXOffset,i=window.pageYOffset;Se.scrollX===e&&Se.scrollY===i||(Se.x+=e-Se.scrollX,Se.y+=i-Se.scrollY,Se.scrollX=e,Se.scrollY=i,qt(!0))},Pe=function(t){let e=Math.round(t.pageX),i=Math.round(t.pageY);Se.x===e&&Se.y===i||(Se.type=navigator.pointerEnabled?"pointer":"mouse",Se.x=e,Se.y=i,qt(!0))};let De=0,Re=16;const Fe=function(){return Re},Ee=function(t){t&&t.toFixed&&!isNaN(t)&&(Re=t)},Me=function(t,e=!0){if(Se.rawTouches.length=0,t.touches&&t.touches.length){Se.rawTouches.push(...t.touches);const e=t.touches[0],i=Math.round(e.pageX),s=Math.round(e.pageY);Se.x===i&&Se.y===s||(Se.type="touch",Se.x=i,Se.y=s)}else Se.type="touch",e&&(Se.x=0,Se.y=0);const i=Date.now();i>De+Re&&(De=i,He())},He=function(){for(let t=0,e=be.length;te.activePadding&&t.x0+e.activePadding&&t.y1||t.normY<0||t.normY>1)&&(t.active=!1));const d=Se.rawTouches;if(d.length){t.touches||(t.touches=[]),t.touches.length=0;for(let e=0,i=d.length;e{let s=i.state;if(s){let e=s.fillStyle,i=s.strokeStyle,n=s.shadowColor;rt(e)&&e.name===t&&(s.fillStyle=s.defs.fillStyle),rt(i)&&i.name===t&&(s.strokeStyle=s.defs.strokeStyle),rt(n)&&n.name===t&&(s.shadowColor=s.defs.shadowColor)}})),this.deregister(),this},Ne.get=function(t){if(ut(t)){if(t.toFixed)return this.getRangeColor(t);if("min"===t)return this.getMinimumColor();if("max"===t)return this.getMaximumColor();if("random"===t)return this.generateRandomColor(),this.getCurrentColor();{let e=this.getters[t];if(e)return e.call(this);{let e=this.defs[t];if(void 0!==e){let i=this[t];return void 0!==i?i:e}return undef}}}return this.getCurrentColor()},Ne.set=function(t=q){const e=Object.keys(t),i=e.length;if(i){const s=this.setters,n=this.defs;let r,o,a,l;for(o=0;o255&&(t=255),e>255&&(e=255),i>255&&(i=255),this.setColor(`rgb(${t} ${e} ${i})`)},Ne.checkColor=function(t){if(t.substring){let e="RGB";return t.includes("hsl")?e="HSL":t.includes("hwb")?e="HWB":t.includes("oklab")?e="OKLAB":t.includes("oklch")?e="OKLCH":t.includes("lab")?e="LAB":t.includes("lch")?e="LCH":t.includes("xyz")&&(e="XYZ"),"RGB"===e||"HSL"===e?t:(this.colorSpace=e,this.returnColorAs=e,this.convert(t),this.returnColor())}return"rgba(0 0 0 / 0)"},Ne.getRangeColor=function(t,e=!1){if(ut(t)&&t.toFixed){let i=this.colorSpace;e&&["HSL","HWB"].includes(i)?i="RGB":e&&"LCH"===i?i="LAB":e&&"OKLCH"===i&&(i="OKLAB");const s=this.calculateRangeColorValues(t,e),n=this.buildColorString(...s,i);this.setColor(n)}return this.getCurrentColor()},Ne.calculateRangeColorValues=function(t,e=!1){const{colorSpace:i,easing:s,easingFunction:n}=this;let r,o,a,l,h,c=i.toLowerCase();e&&["HSL","HWB"].includes(i)?c="rgb":e&&"LCH"===i?c="lab":e&&"OKLCH"===i&&(c="oklab");const[u,d,f,p]=this[`${c}_min`],[m,g,y,b]=this[`${c}_max`];let S=n;!e&&"function"!==s&&mt[s]&&(S=mt[s]);const k=e?t:S(t);switch(c){case"hsl":case"hwb":return h=m-u,o=u===m?u:J(k,h>180||h<-180?h>0?u+360:u-360:u,m),r=p===b?p:J(k,p,b),a=d===g?d:J(k,d,g),l=f===y?f:J(k,f,y),[o,a,l,r];case"lch":case"oklch":return h=y-f,l=f===y?f:J(k,h>180||h<-180?h>0?f+360:f-360:f,y),r=p===b?p:J(k,p,b),a=d===g?d:J(k,d,g),o=u===m?u:J(k,u,m),[o,a,l,r];default:return r=p===b?p:J(k,p,b),o=u===m?u:J(k,u,m),a=d===g?d:J(k,d,g),l=f===y?f:J(k,f,y),[o,a,l,r]}},Ne.getAlphaValue=function(t){let e=1;return null!=t&&(e=t.indexOf("%")>0?parseFloat(t)/100:parseFloat(t)),isNaN(e)||e>1?e=1:e<0&&(e=0),e},Ne.getHueValue=function(t){return"none"===t?0:(t=t.indexOf("deg")>=0?parseFloat(t):t.indexOf("rad")>=0?parseFloat(t)/gt:t.indexOf("grad")>=0?parseFloat(t)/400*360:t.indexOf("turn")>=0?360*parseFloat(t):parseFloat(t),isNaN(t)?0:W(t))},Ne.getColorValuesFromString=function(t,e){const i=(t=(t=(t=(t=t.replace(e,"")).replace("(","")).replace(")","")).replace("/","")).split(" ").filter((t=>null!=t&&""!==t));return null!=i[0]&&"none"!==i[0]||(i[0]="0"),null!=i[1]&&"none"!==i[1]||(i[1]="0"),null!=i[2]&&"none"!==i[2]||(i[2]="0"),i},Ne.extractFromHwbColorString=function(t){const{getAlphaValue:e,getHueValue:i,getColorValuesFromString:s}=this;let n,r,o,a,l,h,c,u;return n=s(t,"hwb"),h=i(n[0]),c=parseFloat(n[1]),u=parseFloat(n[2]),r=e(n[3]),[o,a,l]=this.convertHWBtoRGB(h,c,u),o=Math.floor(255*o),o>255&&(o=255),o<0&&(o=0),a=Math.floor(255*a),a>255&&(a=255),a<0&&(a=0),l=Math.floor(255*l),l>255&&(l=255),l<0&&(l=0),[r,o,a,l]},Ne.extractFromXyzColorString=function(t){const{getAlphaValue:e,getColorValuesFromString:i}=this;let s,n,r,o,a;return s=i(t,"xyz"),r=parseFloat(s[0]),o=parseFloat(s[1]),a=parseFloat(s[2]),n=e(s[3]),[n,r,o,a]},Ne.extractFromLabColorString=function(t){const{getAlphaValue:e,getColorValuesFromString:i}=this;let s,n,r,o,a;return s=i(t,"lab"),r=parseFloat(s[0]),r>100&&(r=100),r<0&&(r=0),o=s[1].indexOf("%")>0?1.25*parseFloat(s[1]):parseFloat(s[1]),o>160&&(o=160),o<-160&&(o=-160),a=s[2].indexOf("%")>0?1.25*parseFloat(s[2]):parseFloat(s[2]),a>160&&(a=160),a<-160&&(a=-160),n=e(s[3]),[n,r,o,a]},Ne.extractFromOklabColorString=function(t){const{getAlphaValue:e,getColorValuesFromString:i}=this;let s,n,r,o,a;return s=i(t,"oklab"),r=s[0].indexOf("%")>0?parseFloat(s[0])/100:parseFloat(s[0]),r>1&&(r=1),r<0&&(r=0),o=s[1].indexOf("%")>0?parseFloat(s[1])/100*.4:parseFloat(s[1]),o>.5&&(o=.5),o<-.5&&(o=-.5),a=s[2].indexOf("%")>0?parseFloat(s[2])/100*.4:parseFloat(s[2]),a>.5&&(a=.5),a<-.5&&(a=-.5),n=e(s[3]),[n,r,o,a]},Ne.extractFromLchColorString=function(t){const{getAlphaValue:e,getHueValue:i,getColorValuesFromString:s}=this;let n,r,o,a,l;return n=s(t,"lch"),o=parseFloat(n[0]),o>100&&(o=100),o<0&&(o=0),a=n[1].indexOf("%")>0?1.5*parseFloat(n[1]):parseFloat(n[1]),a>230&&(a=230),a<0&&(a=0),l=i(n[2]),r=e(n[3]),[r,o,a,l]},Ne.extractFromOklchColorString=function(t){const{getAlphaValue:e,getHueValue:i,getColorValuesFromString:s}=this;let n,r,o,a,l;return n=s(t,"oklch"),o=o=n[0].indexOf("%")>0?parseFloat(n[0])/100:parseFloat(n[0]),o>1&&(o=1),o<0&&(o=0),a=n[1].indexOf("%")>0?parseFloat(n[1])/100*.4:parseFloat(n[1]),a>.4&&(a=.4),a<0&&(a=0),l=i(n[2]),r=e(n[3]),[r,o,a,l]},Ne.convert=function(t,e=""){t=t.toLowerCase();const i=this[`rgb${e}`],s=this[`hsl${e}`],n=this[`hwb${e}`],r=this[`xyz${e}`],o=this[`lab${e}`],a=this[`lch${e}`],l=this[`oklab${e}`],h=this[`oklch${e}`];if(!i)return this;let c,u,d,f;return i.length=0,s.length=0,n.length=0,r.length=0,o.length=0,a.length=0,l.length=0,h.length=0,t.indexOf("hwb")>=0&&!ze?([c,u,d,f]=this.extractFromHwbColorString(t),i.push(u,d,f,c),s.push(...this.convertRGBtoHSL(u,d,f),c),n.push(hue,white,black,c),r.push(...this.convertRGBtoXYZ(u,d,f),c),o.push(...this.convertXYZtoLAB(r[0],r[1],r[2]),c),a.push(...this.convertLABtoLCH(o[0],o[1],o[2]),c),l.push(...this.convertXYZtoOKLAB(r[0],r[1],r[2]),c),h.push(...this.convertOKLABtoOKLCH(l[0],l[1],l[2]),c)):t.indexOf("xyz")>=0?([c,u,d,f]=this.extractFromXyzColorString(t),i.push(...this.convertXYZtoRGB(u,d,f),c),s.push(...this.convertRGBtoHSL(i[0],i[1],i[2]),c),n.push(...this.convertRGBHtoHWB(i[0],i[1],i[2],s[0]),c),r.push(u,d,f,c),o.push(...this.convertXYZtoLAB(u,d,f),c),a.push(...this.convertLABtoLCH(o[0],o[1],o[2]),c),l.push(...this.convertXYZtoOKLAB(r[0],r[1],r[2]),c),h.push(...this.convertOKLABtoOKLCH(l[0],l[1],l[2]),c)):t.indexOf("oklab")>=0&&!Ze?([c,u,d,f]=this.extractFromOklabColorString(t),l.push(u,d,f,c),h.push(...this.convertOKLABtoOKLCH(u,d,f),c),r.push(...this.convertOKLABtoXYZ(u,d,f),c),o.push(...this.convertXYZtoLAB(r[0],r[1],r[2]),c),a.push(...this.convertLABtoLCH(o[0],o[1],o[2]),c),i.push(...this.convertXYZtoRGB(r[0],r[1],r[2]),c),s.push(...this.convertRGBtoHSL(i[0],i[1],i[2]),c),n.push(...this.convertRGBHtoHWB(i[0],i[1],i[2],s[0]),c)):t.indexOf("oklch")>=0&&!_e?([c,u,d,f]=this.extractFromOklchColorString(t),h.push(u,d,f,c),l.push(...this.convertOKLCHtoOKLAB(u,d,f),c),r.push(...this.convertOKLABtoXYZ(l[0],l[1],l[2]),c),o.push(...this.convertXYZtoLAB(r[0],r[1],r[2]),c),a.push(...this.convertLABtoLCH(o[0],o[1],o[2]),c),i.push(...this.convertXYZtoRGB(r[0],r[1],r[2]),c),s.push(...this.convertRGBtoHSL(i[0],i[1],i[2]),c),n.push(...this.convertRGBHtoHWB(i[0],i[1],i[2],s[0]),c)):t.indexOf("lab")>=0&&!We?([c,u,d,f]=this.extractFromLabColorString(t),o.push(u,d,f,c),r.push(...this.convertLABtoXYZ(u,d,f),c),i.push(...this.convertXYZtoRGB(r[0],r[1],r[2]),c),s.push(...this.convertRGBtoHSL(i[0],i[1],i[2]),c),n.push(...this.convertRGBHtoHWB(i[0],i[1],i[2],s[0]),c),a.push(...this.convertLABtoLCH(u,d,f),c),l.push(...this.convertXYZtoOKLAB(r[0],r[1],r[2]),c),h.push(...this.convertOKLABtoOKLCH(l[0],l[1],l[2]),c)):t.indexOf("lch")>=0&&!Ve?([c,u,d,f]=this.extractFromLchColorString(t),a.push(u,d,f,c),o.push(...this.convertLCHtoLAB(u,d,f),c),r.push(...this.convertLABtoXYZ(o[0],o[1],o[2]),c),i.push(...this.convertXYZtoRGB(r[0],r[1],r[2]),c),s.push(...this.convertRGBtoHSL(i[0],i[1],i[2]),c),n.push(...this.convertRGBHtoHWB(i[0],i[1],i[2],s[0]),c),l.push(...this.convertXYZtoOKLAB(r[0],r[1],r[2]),c),h.push(...this.convertOKLABtoOKLCH(l[0],l[1],l[2]),c)):([u,d,f,c]=this.getColorFromCanvas(t),i.push(u,d,f,c),s.push(...this.convertRGBtoHSL(u,d,f),c),n.push(...this.convertRGBHtoHWB(u,d,f,s[0]),c),r.push(...this.convertRGBtoXYZ(u,d,f),c),o.push(...this.convertXYZtoLAB(r[0],r[1],r[2]),c),a.push(...this.convertLABtoLCH(o[0],o[1],o[2]),c),l.push(...this.convertXYZtoOKLAB(r[0],r[1],r[2]),c),h.push(...this.convertOKLABtoOKLCH(l[0],l[1],l[2]),c)),this},Ne.extractRGBfromColor=function(t){let e,i,s,n;return(t=t.toLowerCase()).includes("hwb")&&!ze?([e,i,s,n]=this.extractFromHwbColorString(t),[i,s,n,e]):t.includes("xyz")?([e,i,s,n]=this.extractFromXyzColorString(t),[...this.convertXYZtoRGB(i,s,n),e]):t.includes("oklab")&&!Ze?([e,i,s,n]=this.extractFromOklabColorString(t),[...this.convertXYZtoRGB(...this.convertOKLABtoXYZ(i,s,n)),e]):t.indexOf("oklch")>=0&&!_e?([e,i,s,n]=this.extractFromOklchColorString(t),[...this.convertXYZtoRGB(...this.convertOKLABtoXYZ(...this.convertOKLCHtoOKLAB(i,s,n))),e]):t.includes("lab")&&!We?([e,i,s,n]=this.extractFromLabColorString(t),[...this.convertXYZtoRGB(...this.convertLABtoXYZ(i,s,n)),e]):t.indexOf("lch")>=0&&!Ve?([e,i,s,n]=this.extractFromLchColorString(t),[...this.convertXYZtoRGB(...this.convertLABtoXYZ(...this.convertLCHtoLAB(i,s,n))),e]):this.getColorFromCanvas(t)},Ne.convertRGBtoHex=function(t,e,i){if(t.substring&&(t=parseInt(t,10)),e.substring&&(e=parseInt(e,10)),i.substring&&(i=parseInt(i,10)),!isNaN(t)&&!isNaN(e)&&!isNaN(i)){return`#${("0"+t.toString(16)).slice(-2)}${("0"+e.toString(16)).slice(-2)}${("0"+i.toString(16)).slice(-2)}`}return"#000000"},Ne.getColorFromCanvas=function(t){let e=0,i=0,s=0,n=0;Ye.clearRect(0,0,1,1),Ye.fillStyle=t,Ye.fillRect(0,0,1,1);const r=Ye.getImageData(0,0,1,1);return r&&r.data&&([e,i,s,n]=r.data,n/=255),[e,i,s,n]},Ne.convertRGBtoHSL=function(t,e,i){t/=255,e/=255,i/=255;let s=Math.max(t,e,i),n=Math.min(t,e,i),[r,o,a]=[0,0,(n+s)/2],l=s-n;if(0!==l){switch(o=0===a||1===a?0:(s-a)/Math.min(a,1-a),s){case t:r=(e-i)/l+(e=1){let t=e/(e+i);return[t,t,t]}let s=this.convertHSLtoRGB(t,100,50);for(let t=0;t<3;t++)s[t]*=1-e-i,s[t]+=e;return s},Ne.multiplyMatrices=function(t,e){const i=t.length;Array.isArray(t[0])||(t=[t]),Array.isArray(e[0])||(e=e.map((t=>[t])));const s=e[0].length,n=e[0].map(((t,i)=>e.map((t=>t[i]))));let r=t.map((t=>n.map((e=>Array.isArray(t)?t.reduce(((t,i,s)=>t+i*(e[s]||0)),0):e.reduce(((e,i)=>e+i*t),0)))));return 1===i&&(r=r[0]),1===s?r.map((t=>t[0])):r},Ne.D50=[.3457/.3585,1,.2958/.3585],Ne.D65=[.3127/.329,1,.3583/.329],Ne.D65_to_D50_matrix=[[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Ne.D50_to_D65_matrix=[[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Ne.convertRGBtoXYZ_matrix=[[506752/1228815,87881/245763,12673/70218],[87098/409605,175762/245763,12673/175545],[7918/409605,87881/737289,1001167/1053270]],Ne.lin_sRGB=function(t){return t.map((t=>{let e=t<0?-1:1,i=Math.abs(t);return i<.04045?t/12.92:e*Math.pow((i+.055)/1.055,2.4)}))},Ne.convertRGBtoXYZ=function(t,e,i){const s=[t/255,e/255,i/255],n=this.lin_sRGB(s);return this.multiplyMatrices([...this.convertRGBtoXYZ_matrix],[...n])},Ne.convertRGBtoOKLAB=function(t,e,i){const[s,n,r]=this.lin_sRGB([t/255,e/255,i/255]),o=.4122214708*s+.5363325363*n+.0514459929*r,a=.2119034982*s+.6806995451*n+.1073969566*r,l=.0883024619*s+.2817188376*n+.6299787005*r,h=this.cbrt(o),c=this.cbrt(a),u=this.cbrt(l);return[.2104542553*h+.793617785*c-.0040720468*u,1.9779984951*h-2.428592205*c+.4505937099*u,.0259040371*h+.7827717662*c-.808675766*u]},Ne.convertXYZtoRGB_matrix=[[12831/3959,-329/214,-1974/3959],[-851781/878810,1648619/878810,36519/878810],[705/12673,-2585/12673,705/667]],Ne.gam_sRGB=function(t){return t.map((t=>{let e=t<0?-1:1,i=Math.abs(t);return i>.0031308?e*(1.055*Math.pow(i,1/2.4)-.055):12.92*t}))},Ne.convertXYZtoRGB=function(t,e,i){const s=this.multiplyMatrices([...this.convertXYZtoRGB_matrix],[t,e,i]),n=this.gam_sRGB(s),r=Math.round;return[r(255*n[0]),r(255*n[1]),r(255*n[2])]},Ne.E=216/24389,Ne.K=24389/27,Ne.cbrt=null!=Math.cbrt?Math.cbrt:t=>Math.pow(t,1/3),Ne.convertXYZtoLAB=function(t,e,i){const{D50:s,K:n,E:r,cbrt:o}=this,a=this.multiplyMatrices([...this.D65_to_D50_matrix],[t,e,i]).map(((t,e)=>t/s[e])).map((t=>t>r?o(t):(n*t+16)/116));return[116*a[1]-16,500*(a[0]-a[1]),200*(a[1]-a[2])]},Ne.convertLABtoXYZ=function(t,e,i){const{D50:s,K:n,E:r,cbrt:o}=this,a=[],l=Math.pow;a[1]=(t+16)/116,a[0]=e/500+a[1],a[2]=a[1]-i/200;const h=[l(a[0],3)>r?l(a[0],3):(116*a[0]-16)/n,t>n*r?l((t+16)/116,3):t/n,l(a[2],3)>r?l(a[2],3):(116*a[2]-16)/n].map(((t,e)=>t*s[e]));return this.multiplyMatrices([...this.D50_to_D65_matrix],[...h])},Ne.convertLABtoLCH=function(t,e,i){const s=Math.pow,n=180*Math.atan2(i,e)/Math.PI;return[t,Math.sqrt(s(e,2)+s(i,2)),n>=0?n:n+360]},Ne.convertLCHtoLAB=function(t,e,i){const s=Math.PI;return[t,e*Math.cos(i*s/180),e*Math.sin(i*s/180)]},Ne.XYZtoLMS=[[.8190224432164319,.3619062562801221,-.12887378261216414],[.0329836671980271,.9292868468965546,.03614466816999844],[.048177199566046255,.26423952494422764,.6335478258136937]],Ne.LMStoOKLab=[[.2104542553,.793617785,-.0040720468],[1.9779984951,-2.428592205,.4505937099],[.0259040371,.7827717662,-.808675766]],Ne.convertXYZtoOKLAB=function(t,e,i){const s=this.cbrt,n=this.multiplyMatrices([...this.XYZtoLMS],[t,e,i]);return this.multiplyMatrices([...this.LMStoOKLab],n.map((t=>s(t))))},Ne.LMStoXYZ=[[1.2268798733741557,-.5578149965554813,.28139105017721583],[-.04057576262431372,1.1122868293970594,-.07171106666151701],[-.07637294974672142,-.4214933239627914,1.5869240244272418]],Ne.OKLabtoLMS=[[.9999999984505198,.39633779217376786,.2158037580607588],[1.0000000088817609,-.10556134232365635,-.06385417477170591],[1.0000000546724108,-.08948418209496575,-1.2914855378640917]],Ne.convertOKLABtoXYZ=function(t,e,i){const s=this.multiplyMatrices([...this.OKLabtoLMS],[t,e,i]);return this.multiplyMatrices([...this.LMStoXYZ],s.map((t=>t**3)))},Ne.convertOKLABtoOKLCH=function(t,e,i){const s=180*Math.atan2(i,e)/Math.PI;return[t,Math.sqrt(e**2+i**2),s>=0?s:s+360]},Ne.convertOKLCHtoOKLAB=function(t,e,i){return[t,e*Math.cos(i*Math.PI/180),e*Math.sin(i*Math.PI/180)]},Ne.calculateColorBlend=function(t,e,i,s,n,r){const[o,a,l]=this.convertRGBtoHSL(t,e,i),[h,c,u]=this.convertRGBtoHSL(s,n,r),[d,f,p]=this.convertHSLtoRGB(o,a,u);return[Math.round(255*d),Math.round(255*f),Math.round(255*p)]},Ne.calculateHueBlend=function(t,e,i,s,n,r){const[o,a,l]=this.convertRGBtoHSL(t,e,i),[h,c,u]=this.convertRGBtoHSL(s,n,r),[d,f,p]=this.convertHSLtoRGB(o,c,u);return[Math.round(255*d),Math.round(255*f),Math.round(255*p)]},Ne.calculateSaturationBlend=function(t,e,i,s,n,r){const[o,a,l]=this.convertRGBtoHSL(t,e,i),[h,c,u]=this.convertRGBtoHSL(s,n,r),[d,f,p]=this.convertHSLtoRGB(h,a,u);return[Math.round(255*d),Math.round(255*f),Math.round(255*p)]},Ne.calculateLuminosityBlend=function(t,e,i,s,n,r){const[o,a,l]=this.convertRGBtoHSL(t,e,i),[h,c,u]=this.convertRGBtoHSL(s,n,r),[d,f,p]=this.convertHSLtoRGB(h,c,l);return[Math.round(255*d),Math.round(255*f),Math.round(255*p)]};let ze=!1,We=!1,Ve=!1,Ze=!1,_e=!1;!function(){let t,e=0,i=0,s=0,n=0,r="#ffffff00";Ye.fillStyle="hwb(90 10% 10%)",Ye.fillRect(0,0,1,1),t=Ye.getImageData(0,0,1,1),t&&t.data&&([e,i,s,n]=t.data),(e||i||s)&&(ze=!0),ze&&r===Ye.fillStyle?ze=!1:r=Ye.fillStyle,Ye.fillStyle="lab(29.2345% 39.3825 20.0664)",Ye.clearRect(0,0,1,1),Ye.fillRect(0,0,1,1),t=Ye.getImageData(0,0,1,1),t&&t.data&&([e,i,s,n]=t.data),(e||i||s)&&(We=!0),We&&r===Ye.fillStyle?We=!1:r=Ye.fillStyle,Ye.fillStyle="lch(52.2345% 72.2 56.2)",Ye.clearRect(0,0,1,1),Ye.fillRect(0,0,1,1),t=Ye.getImageData(0,0,1,1),t&&t.data&&([e,i,s,n]=t.data),(e||i||s)&&(Ve=!0),Ve&&r===Ye.fillStyle?Ve=!1:r=Ye.fillStyle,Ye.fillStyle="oklab(59.686% 0.1009 0.1192)",Ye.clearRect(0,0,1,1),Ye.fillRect(0,0,1,1),t=Ye.getImageData(0,0,1,1),t&&t.data&&([e,i,s,n]=t.data),(e||i||s)&&(Ze=!0),Ze&&r===Ye.fillStyle?Ze=!1:r=Ye.fillStyle,Ye.fillStyle="oklch(59.686% 0.15619 49.7694)",Ye.clearRect(0,0,1,1),Ye.fillRect(0,0,1,1),t=Ye.getImageData(0,0,1,1),t&&t.data&&([e,i,s,n]=t.data),(e||i||s)&&(_e=!0),_e&&r===Ye.fillStyle?_e=!1:r=Ye.fillStyle}();const Ue=function(t){return!!t&&new Color(t)};H.Color=Color;const Ke=Ue({name:"SC-system-state-do-not-remove"}),State=function(t=q){return this.set(this.defs),this.lineDash=[],this};let qe=State.prototype=Object.create(Object.prototype);qe.type="State",qe=me(qe),qe.defs={fillStyle:"rgba(0 0 0 / 1)",strokeStyle:"rgba(0 0 0 / 1)",globalAlpha:1,globalCompositeOperation:"source-over",lineWidth:1,lineCap:"butt",lineJoin:"miter",lineDash:null,lineDashOffset:0,miterLimit:10,shadowOffsetX:0,shadowOffsetY:0,shadowBlur:0,shadowColor:"rgba(0 0 0 / 0)",font:"12px sans-serif",textAlign:"left",textBaseline:"top",filter:"none",imageSmoothingEnabled:!0,imageSmoothingQuality:"high"},qe.processPacketOut=function(t,e,i){let s=!0;if("lineDash"===t)e.length||(s=i.indexOf("lineDash")>=0);else i.indexOf(t)<0&&e===this.defs[t]&&(s=!1);return s},qe.finalizePacketOut=function(t,e){let i=t.fillStyle,s=t.strokeStyle;return i&&!i.substring&&(t.fillStyle=i.name),s&&!s.substring&&(t.strokeStyle=s.name),t},qe.set=function(t=q){let e,i,s=Object.keys(t),n=s.length,r=this.defs;for(i=0;i>>0,t=(s*=t)>>>0,t+=4294967296*(s-=t)}return 2.3283064365386963e-10*(t>>>0)}t=4022871197}},ii=function(t){return function(){var e,i,s=48,n=1,r=s,o=new Array(s),a=0,l=new ei;for(e=0;e=s&&(r=0);var t=1768863*o[r]+2.3283064365386963e-10*n;return o[r]=t-(n=0|t)},c=function(t){return Math.floor(t*(h()+11102230246251565e-32*(2097152*h()|0)))};c.string=function(t){var e,i="";for(e=0;e0){var o=i.indexOf(this);~o?i.splice(o+1):i.push(this),~o?s.splice(o,1/0,n):s.push(n),~i.indexOf(r)&&(r=e.call(this,n,r))}else i.push(r);return null==t?r:t.call(this,n,r)}}(i,n),s)),c.initState(),c.hashString(t)},c.addEntropy=function(){var t=[];for(e=0;e{"lineDash"===t?(s(i.lineDash)?i.lineDash.length=0:i.lineDash=[],s(e.lineDash)?e.lineDash.length=0:e.lineDash=[]):(i[t]=n,e[t]=n)})),i.textAlign=e.textAlign="left",i.textBaseline=e.textBaseline="top",this},t.stylesArray=["Gradient","RadialGradient","Pattern"],t.setEngine=function(t){const e=this.state,i=t.state;if(i){const s=i.getChanges(t,e),n=this.setEngineActions,r=this.stylesArray;if(Object.keys(s).length){const i=this.engine;for(const o in s)n[o](s[o],i,r,t,this),e[o]=s[o]}}return t},t.setEngineActions={fillStyle:function(t,e,i,s,n){if(t.substring){let i=!1;R.indexOf(t)>=0?i=D[t]:d.indexOf(t)>=0&&(i=u[t]),i?(s.state.fillStyle=i,e.fillStyle=i.getData(s,n)):e.fillStyle=t}else e.fillStyle=t.getData(s,n)},filter:function(t,e){e.filter=t},font:function(t,e){e.font=t},globalAlpha:function(t,e){e.globalAlpha=t},globalCompositeOperation:function(t,e){e.globalCompositeOperation=t},imageSmoothingEnabled:function(t,e){e.imageSmoothingEnabled=t},imageSmoothingQuality:function(t,e){e.imageSmoothingQuality=t},lineCap:function(t,e){e.lineCap=t},lineDash:function(t,e){e.lineDash=t,e.setLineDash&&e.setLineDash(t)},lineDashOffset:function(t,e){e.lineDashOffset=t},lineJoin:function(t,e){e.lineJoin=t},lineWidth:function(t,e){e.lineWidth=t},miterLimit:function(t,e){e.miterLimit=t},shadowBlur:function(t,e){e.shadowBlur=t},shadowColor:function(t,e){e.shadowColor=t},shadowOffsetX:function(t,e){e.shadowOffsetX=t},shadowOffsetY:function(t,e){e.shadowOffsetY=t},strokeStyle:function(t,e,i,s,n){if(t.substring){let i=!1;R.indexOf(t)>=0?i=D[t]:d.indexOf(t)>=0&&(i=u[t]),i?(s.state.strokeStyle=i,e.strokeStyle=i.getData(s,n)):e.strokeStyle=t}else e.strokeStyle=t.getData(s,n)}},t.clearShadow=function(){return this.engine.shadowOffsetX=0,this.engine.shadowOffsetY=0,this.engine.shadowBlur=0,this.state.shadowOffsetX=0,this.state.shadowOffsetY=0,this.state.shadowBlur=0,this},t.restoreShadow=function(t){let e=t.state;return this.engine.shadowOffsetX=e.shadowOffsetX,this.engine.shadowOffsetY=e.shadowOffsetY,this.engine.shadowBlur=e.shadowBlur,this.state.shadowOffsetX=e.shadowOffsetX,this.state.shadowOffsetY=e.shadowOffsetY,this.state.shadowBlur=e.shadowBlur,this},t.setToClearShape=function(){return this.engine.fillStyle="rgb(0 0 0 / 0)",this.engine.strokeStyle="rgb(0 0 0 / 0)",this.engine.shadowColor="rgb(0 0 0 / 0)",this.state.fillStyle="rgb(0 0 0 / 0)",this.state.strokeStyle="rgb(0 0 0 / 0)",this.state.shadowColor="rgb(0 0 0 / 0)",this},t.saveEngine=function(){return this.engine.save(),this},t.restoreEngine=function(){return this.engine.restore(),this},t.getComputedFontSizes=function(){const t=this.getHost();if(t&&t.domElement){const e=window.getComputedStyle(t.domElement),i=window.getComputedStyle(document.documentElement);return[parseFloat(e.fontSize),parseFloat(i.fontSize),window.innerWidth,window.innerHeight]}return!1},t.getEntityHits=function(){const t=[],e=[],i=[];return this.groupBuckets&&this.groupBuckets.forEach((t=>{t.visibility&&e.push(t.getAllArtefactsAt(this.here))}),this),e.length&&(e=e.reduce(((t,e)=>t.concat(e)),[]),e.forEach((e=>{const s=e.artefact;s.visibility&&i.indexOf(s.name)<0&&(i.push(s.name),t.push(s))}))),t},t.rotateDestination=function(t,e,i,s){const n=s||this,r=n.mimic,o=n.pivot;let a,l,h=n.currentRotation;if(r&&r.name&&n.useMimicFlip?(a=r.flipReverse?-1:1,l=r.flipUpend?-1:1):(a=n.flipReverse?-1:1,l=n.flipUpend?-1:1),r&&r.name&&n.useMimicRotation?h=r.currentRotation:o&&o.name&&n.addPivotRotation&&(h=o.currentRotation),h){h*=gt;const s=Math.cos(h),n=Math.sin(h);t.setTransform(s*a,n*a,-n*l,s*l,e,i)}else t.setTransform(a,0,0,l,e,i);return this},t}const ri=function(t){this.name=t;const e=this.element=document.createElement("canvas"),i=this.engine=e.getContext("2d",{willReadFrequently:!0});e.width=1,e.height=1;return(this.state=Je({engine:i})).setStateFromEngine(this.engine),this};let oi=ri.prototype=Object.create(Object.prototype);oi.type="CellFragment",oi=me(oi),oi=ni(oi),oi.stringifyFunction=Z,oi.processPacketOut=Z,oi.finalizePacketOut=Z,oi.saveAsPacket=function(){return`[${this.name}, ${this.type}, ${this.lib}, {}]`},oi.clone=U;const ai=[];let li=0;const hi=function(){ai.length||ai.push(new ri("pool_"+li++));let t=ai.shift();return t.engine.save(),t},ci=function(t){t&&"CellFragment"===t.type&&(t.engine.restore(),ai.push(t))},Coordinate=function(t,e){let i=[0,0];return Object.setPrototypeOf(i,Coordinate.prototype),t&&i.set(t,e),i};let ui=Coordinate.prototype=Object.create(Array.prototype);ui.constructor=Coordinate,ui.type="Coordinate",ui.set=function(t,e){return ut(t)&&("Coordinate"===t.type?this.setFromArray(t):"Vector"===t.type?this.setFromVector(t):"Quaternion"===t.type?this.setFromVector(t.v):Array.isArray(t)?this.setFromArray(t):ut(e)&&this.setFromArray([t,e])),this},ui.setFromArray=function(t){return this[0]=t[0],this[1]=t[1],this},ui.setFromVector=function(t){return this[0]=t.x,this[1]=t.y,this},ui.zero=function(){return this[0]=0,this[1]=0,this},ui.vectorAdd=function(t){return this[0]+=t.x,this[1]+=t.y,this},ui.vectorSubtract=function(t){return this[0]-=t.x,this[1]-=t.y,this},ui.add=function(t){return this[0]+=t[0],this[1]+=t[1],this},ui.subtract=function(t){return this[0]-=t[0],this[1]-=t[1],this},ui.multiply=function(t){return this[0]*=t[0],this[1]*=t[1],this},ui.divide=function(t){let[e,i]=t;return e&&i&&(this[0]/=e,this[1]/=i),this},ui.scalarMultiply=function(t){return this[0]*=t,this[1]*=t,this},ui.scalarDivide=function(t){return t&&t.toFixed&&(this[0]/=t,this[1]/=t),this},ui.getMagnitude=function(){return Math.hypot(this[0],this[1])},ui.rotate=function(t){let e,i,s=this[0],n=this[1];return e=Math.atan2(n,s),e+=.01745329251*t,i=Math.hypot(s,n),this[0]=i*Math.cos(e),this[1]=i*Math.sin(e),this},ui.reverse=function(){return this[0]=-this[0],this[1]=-this[1],this},ui.getDotProduct=function(t){return this[0]*t[0]+this[1]*t[1]},ui.normalize=function(){let t=this.getMagnitude();return t>0&&(this[0]/=t,this[1]/=t),this};const di=[],fi=function(t,e){di.length||di.push(new Coordinate);let i=di.shift();return i.set(t,e),i},pi=function(t){t&&"Coordinate"===t.type&&di.push(t.zero())},mi=function(t,e){return new Coordinate(t,e)};H.Coordinate=Coordinate;const gi=[.37,.69,.62,.78,.06,.84,.27,.14,.46,1,.58,.28,.62,.8,.3,.7,.93,.53,.76,.24,.15,.51,.79,.28,.99,.16,.22,.45,.03,.73,.34,.96,.5,.3,.07,.84,.51,.27,.89,.8,.66,.25,.54,.94,.08,.66,.36,.85,.69,.93,.26,.79,.68,.36,.23,.5,.83,.34,.64,.91,.73,.8,.95,.59,.1,.76,.82,.03,.62,.47,.09,.55,.33,.22,.45,.04,.76,.52,.69,.24,.78,.12,.59,.37,.03,.82,.93,.69,.42,.34,.89,.62,.27,1,.53,.09,.38,.71,.13,.52,.19,.66,.33,.42,.63,.28,.36,.61,.73,.06,.56,.97,.35,.72,.91,.3,.98,.53,.2,.08,.5,.22,.87,.93,.08,.44,.91,.56,.12,.99,.01,.49,.37,.68,.89,.55,.3,.84,.17,.67,.1,.48,.89,.23,.47,.06,.29,.61,.67,.91,.2,.47,.64,.05,.77,.94,.62,.09,.58,.12,.77,.47,.93,.39,.73,.09,.47,.58,.15,.39,.02,.64,.32,.77,.98,.03,.28,.44,.11,.01,.73,.44,.88,.02,.76,.53,.41,.05,.25,.36,.02,.31,.52,.39,.28,.57,.91,.7,.98,0,.76,.94,.66,.85,.33,.18,.88,.01,.99,.46,.69,.94,.32,.51,.45,.07,.55,.22,.11,.8,.42,.17,.87,.47,.81,.23,.88,.43,.6,.11,.75,.06,.88,.72,.47,.92,.13,.31,.84,.47,.27,.16,.5,.09,.78,.44,.34,.56,.95,.69,.36,.13,.64,.29,.04,.87,.41,.53,.31,.87,.22,.6,.09,.77,.22,.72,.4,.88,.37,.75,.06,.58,.65,.86,.99,.42,.37,.58,.04,.74,.35,.57,.83,.39,.5,.91,.42,.27,.69,.02,.8,.22,.63,.97,.04,.34,.69,.97,.51,.83,.45,.24,.56,.49,.64,.81,.99,.55,.31,.17,.62,.1,.69,.15,.86,.2,.52,.67,.77,.19,.7,.85,.45,.18,.12,.4,.3,.82,.37,.53,.07,.27,.56,.64,.44,.34,.56,.25,.2,.08,.76,.64,.15,.78,.95,.72,.87,.51,.36,.02,.74,.3,.07,.64,.34,0,.82,.28,.97,.22,.5,.81,.02,.25,.41,.69,.2,.03,.76,.42,.69,.85,.59,.14,.91,.76,.28,.06,.61,.47,.73,.8,.55,.25,.61,.82,.19,.72,.13,.98,.41,.03,.64,.96,.12,.52,.27,.17,.97,.42,.13,.35,.2,.78,.11,.86,.82,.24,.95,.49,.14,.25,.17,.69,.85,.21,.95,.58,.35,.15,.44,.29,.78,.84,.2,.28,.88,.09,.2,.92,.13,.75,.17,.37,.23,.52,.89,.82,.47,1,.39,.29,.75,.59,.96,.14,.42,.92,.63,.04,1,.67,.78,.5,.24,.61,.17,.71,.92,.41,.11,.96,.74,.07,.83,.66,.89,.4,.85,.23,.55,.36,.27,.19,.04,.67,.94,.58,.63,.2,.97,.75,.55,.92,.72,.46,.55,.69,.34,.17,.67,.56,.88,.96,.52,.62,.94,.88,.21,.04,.37,.25,.72,.02,.81,.16,.91,.4,.21,1,.16,.7,.94,.1,.78,.55,.45,.7,.51,.86,.29,.48,.05,.93,.59,.81,.72,.29,.83,.59,.73,0,.49,.3,.64,.39,.11,.71,.32,.97,.78,.34,.05,.37,.49,.12,.9,.68,.56,.92,.49,.14,.55,.76,.6,.34,.72,.64,.4,.03,.88,.6,.71,.13,.65,.05,.27,.56,.22,.94,.47,.09,.33,.84,.47,.27,.09,.57,.23,.34,.07,.95,.56,.87,.11,.46,.2,.77,.87,.5,.18,.29,.79,.14,.61,.51,.29,.99,.01,.91,.65,.47,.58,.3,.23,.13,.83,.4,.49,.15,.25,.36,.17,.84,.13,.41,.07,1,.44,.77,.09,.35,.73,.3,.11,.34,.57,.47,.93,.63,.41,.53,.49,.32,.86,.55,.02,.84,.51,.34,.26,.04,.39,.92,.33,.25,.84,.17,.35,.8,.43,.67,.31,.03,.51,.47,.08,.94,.25,.55,.91,.71,.15,.45,.58,.89,.67,.02,.47,.57,.62,.82,.73,.53,.27,.81,.07,.19,.65,.4,.92,0,.44,.16,1,.53,.8,.33,.96,.29,.07,.44,.94,.34,.74,.84,.67,0,.84,.64,.71,.04,.55,.89,.39,.72,.53,.82,.42,.65,.02,.36,.94,.29,.63,0,.37,.25,.67,.93,.51,.37,.04,.74,.12,.68,.44,.81,.11,.38,.78,.99,.45,.71,.89,.33,.59,.91,.69,.51,.05,.64,.27,.89,.61,.84,.31,.24,.5,.04,.18,.44,.8,.66,.14,.75,.82,.11,.18,.99,.65,.12,.77,.25,.62,.32,.09,.75,.65,.47,.58,.16,.05,.65,.08,.94,.56,.73,.25,.84,.14,.38,.87,.64,.16,.78,.4,.64,.2,.33,.99,.02,.86,.2,.53,.42,.86,.1,.94,.14,.23,.99,.03,.4,.88,.72,.24,.07,.8,.32,.69,.83,.04,.25,.68,.22,.48,.55,.76,.86,.39,.17,.53,.09,.42,.34,.5,.26,.23,1,.18,.77,.31,.94,.15,.88,.29,.73,.21,.8,.69,.53,.95,.76,.56,.11,.6,.05,.44,.23,.96,.82,.56,.35,.21,.72,.52,.88,.16,.82,.08,.52,.27,.8,.1,.02,.84,.3,.78,.98,.43,.73,.19,.52,.14,.89,.65,.79,.6,.92,.52,.07,.98,.27,.51,.3,.78,.88,.23,.42,.7,.1,.91,.77,.43,.96,.22,.87,.71,.8,.95,.55,.76,.45,.15,.02,.99,.54,.2,.73,.96,.24,.55,.36,.05,.95,.13,.75,.55,.77,.25,.36,.13,.8,.19,.29,.71,.36,.45,.65,.33,.61,.51,.37,1,.56,.46,.89,.23,.5,.4,.91,.58,.07,.83,.65,.12,.25,.61,.79,.14,.97,.63,.78,.12,.89,.43,.38,.61,.69,0,.45,.19,.6,.02,.92,.5,.42,.09,.24,.42,.16,.89,.48,.99,.76,.66,.87,.27,.45,.16,.62,.89,.25,.04,.33,.22,.62,.37,0,.67,.18,.45,.75,.62,.42,.18,.57,.01,.36,.8,.05,.68,.4,1,.27,.86,.4,.22,.37,.83,.44,.68,.05,.56,.35,.06,.59,.94,.49,.38,.58,.16,.53,.13,.29,.36,.51,.2,.26,.36,.89,.69,.31,.42,.63,.91,.5,.04,.31,.85,.72,.47,.83,.61,.36,.48,.07,.93,.64,.72,1,.6,.49,.89,.54,.08,.76,.92,.16,.09,.82,.29,.14,.61,.18,.75,.65,.11,.29,.78,.15,.42,.36,.99,.01,.49,.69,.31,.89,.25,.18,.94,.58,.7,.85,.09,.5,.22,.85,.69,.39,.33,.78,.15,.58,.85,.04,.72,.35,.84,.28,.4,.16,.33,.56,.01,.69,.96,.06,.47,.83,.56,.69,.93,.54,.74,.94,.86,.53,.98,.38,.24,.95,.11,.67,.86,.51,.3,.96,.46,.57,.34,.05,.15,.71,.31,.77,.03,.6,.2,.94,.72,.45,.82,.17,.31,.8,.2,.05,.69,.84,.76,.01,1,.09,.84,.44,.62,.11,.22,.5,.81,.05,.29,.45,.77,.68,.09,.91,.2,.28,0,.89,.18,.69,.32,.51,.44,.03,.35,.25,.67,.03,.84,.2,.56,.46,.89,.23,.69,.78,.95,.37,.09,.55,.87,.44,.73,.95,.52,.82,.23,.73,.91,.44,.04,.55,.46,.73,.41,.03,.31,.14,.78,.36,.97,.56,.8,.11,.99,.52,.27,.91,.64,.95,.49,.19,.66,.03,.55,.85,.13,.62,.8,.41,.29,.75,.39,.13,.99,.45,.05,.27,.47,.12,.41,.63,.29,.15,.84,.54,.32,.74,.22,.13,.64,.85,.08,.16,.75,.51,.47,.64,.95,.58,.14,.91,.51,.39,.13,.25,.97,.69,.01,.56,.87,.28,.93,.38,.62,.44,.67,.57,.7,.01,.8,.98,.6,.89,.73,.16,.71,.12,.59,.36,.54,.15,.57,.67,.45,.25,.95,.83,.11,.22,.84,.09,.77,.92,.16,.41,.96,.35,.25,.75,.65,0,.44,.53,.06,.28,.83,.99,.23,0,.59,.24,.05,.63,.28,.55,.36,.16,.83,.72,.31,.08,.66,.81,.53,.22,.9,.62,.28,.05,.45,.64,.22,.71,.07,.35,.45,.31,.1,.77,.6,.95,.24,.73,.49,.99,.22,.1,.55,.91,.63,.24,.74,.41,.79,.16,.81,.33,.22,.04,.81,.67,.48,.04,.8,.44,.99,.41,.78,.25,.6,.94,.28,.82,.91,.2,.11,.44,.73,.34,.79,.06,.85,.63,.51,.42,.9,.73,.44,.64,.05,.49,.24,.9,.2,.33,.93,.15,.48,.34,.19,0,.45,.34,.97,.84,.21,.95,.26,.41,.82,.98,.72,.54,.34,.62,.39,.57,.93,.69,.53,.44,.8,.64,.53,.71,.11,.94,.37,.58,.87,.2,.73,.47,.42,.67,.34,.49,.91,.38,.72,.13,.89,.77,.08,.96,.64,.19,1,.85,.47,.25,.96,.71,.47,.12,.76,.16,.91,.3,.51,.85,.8,.15,.75,.55,.89,.36,.46,.07,.89,.43,.04,.36,.87,.48,.85,.17,.02,.52,.31,.09,.87,.64,.97,.58,.71,.91,.51,.1,.9,.59,.27,.16,.62,.57,.01,.49,.38,.73,.42,0,.6,.38,.86,.28,.64,.24,1,.56,.3,.76,.18,.1,.35,.23,.14,.98,.31,.8,.72,.15,.84,.53,.25,.4,.73,.85,.55,.67,.91,.25,.55,.51,.03,.69,.88,.75,.03,.34,.09,.16,.78,.05,.75,.88,.28,.2,.37,.13,.3,.22,.04,.87,.44,.54,.15,.25,1,.32,.64,.93,.25,.13,.64,.8,.16,.55,.97,.41,.48,.24,.61,.4,.27,.53,.12,.36,.16,.6,.36,.05,.4,.58,.82,.37,.69,.95,0,.56,.39,.66,.23,0,.81,.18,.69,.32,.8,.28,.67,.62,.26,.73,.58,.27,.67,.83,.94,.55,.2,.36,.5,.08,.84,.42,.35,.2,.74,.38,.93,.71,.08,.3,.97,.83,.19,.88,.15,.67,.24,.8,.07,.51,.84,.02,.18,.69,.45,.04,.91,.58,.8,.47,.71,.6,.08,.56,.41,.04,.36,.77,.09,.9,.58,.05,.31,.39,.09,.75,.63,.31,.82,.45,.12,.61,.51,.22,.63,.93,.51,.2,.47,.32,.06,.66,.59,.97,.9,.69,.58,.16,.31,.82,.06,.76,.41,.1,.82,.02,.58,.89,.05,.28,.84,.08,.3,.77,.02,.67,.33,.81,.02,.67,.75,.57,.91,.8,.09,.85,.67,.99,.25,.51,.13,.45,.25,.12,.88,.46,.95,.6,.28,.98,.49,.16,.57,.18,.95,.81,.16,.04,.98,.44,.35,.77,.04,.61,.7,.29,.01,.67,.16,.27,.99,.63,.47,0,.2,.83,.47,.88,.13,.66,.54,.08,.98,.5,.32,.56,.97,.69,.4,.61,.48,.94,.37,.83,.6,.29,.94,.03,.87,.37,.16,.91,.65,.49,.97,.45,.64,.67,.22,.13,1,.84,.49,.16,.94,.07,.42,.19,.28,.94,.36,.89,.46,.83,.29,.7,.91,.14,.42,.8,.73,.07,.47,.75,.38,.97,.63,.69,.91,.47,.69,.56,.14,.47,.76,.52,.97,.44,.75,.5,.64,.19,.84,.99,.13,.5,.91,.86,.32,.05,.23,.42,.52,.3,.17,.33,.04,.89,.61,.73,.34,.93,.75,.15,.31,.7,.41,.07,.64,.84,.75,.41,.08,.48,.32,.39,.7,.11,.87,.14,.47,.27,.95,.77,.47,.93,.62,.53,.77,.12,.31,.96,.67,.49,.38,.73,.24,.4,.33,.6,.78,.39,.85,.15,.44,.2,.11,.89,.78,.09,.24,.73,.14,.45,.67,.22,.53,.83,.27,.75,.3,.2,.85,0,.28,.83,.37,.52,.78,.71,.6,.22,.37,.89,.66,.78,.57,.03,.68,.74,.17,.38,.03,.59,.81,.63,.98,.52,.22,.35,.27,.12,.85,.01,.25,.35,.19,.6,.3,.92,.8,.35,.3,.17,.36,.7,.23,.1,.88,.38,.55,.28,.72,.57,.17,.38,.47,.98,.72,.63,.89,.75,.55,.93,.64,.08,.78,.82,.19,.62,.53,.37,.05,.84,.49,.94,.23,.35,.01,.99,.53,.66,.76,.95,.57,.23,.64,.31,.89,.4,.12,.86,.16,.41,.31,.81,.03,.86,.56,.81,.25,.11,.58,.19,.8,.93,.05,.84,.25,.11,.73,.02,.67,.93,.36,.55,.31,.66,.2,.51,.41,.86,.06,.33,.63,.42,.01,.98,.59,.1,.7,.57,.18,.44,.92,.64,.27,.42,.04,.81,.54,.71,.25,.99,.49,.82,.11,.25,.55,.66,.95,.12,.24,.38,.03,.28,.88,.57,.92,.42,.53,.59,.77,.44,.12,.88,.02,.24,.7,.09,.86,.67,.03,.93,.58,.33,.95,.6,.06,.44,.9,.08,.24,.63,.14,.79,.28,.16,.02,.39,.12,.8,.44,.36,.28,.49,.42,.02,.24,.91,.66,.13,.59,.2,.73,.47,.6,.3,.21,.89,.26,.07,.48,.79,.01,.95,.52,.66,.07,.55,.73,.89,.07,.2,.49,.38,.61,.17,.4,.78,.97,.01,.62,.48,.69,.22,.47,.97,.59,.52,.8,.26,.72,.05,.42,.89,.8,.03,1,.76,.17,.93,.78,.09,.69,.45,.89,.39,.82,.34,.98,.75,.1,.04,.34,.17,.9,.32,.11,.49,.05,.15,.33,.38,.61,.97,.07,.85,.34,.44,.77,.54,.73,.17,.69,.8,.05,.65,.19,.93,.09,.83,.51,.97,.36,.53,.43,.62,.97,.51,.81,.16,.45,.03,.75,.27,.16,.8,.35,.67,.77,.85,.53,.11,.56,.36,.96,.6,.24,.48,.69,.23,.91,.12,1,.69,.8,.55,.44,.98,.31,.8,.08,.89,.69,.84,.39,.12,.62,.18,.88,.31,.7,.56,.2,.78,.35,.62,.24,.58,.97,.65,.7,.95,.04,.49,.91,.33,.68,.47,.29,.38,.95,.16,.67,.37,.29,.19,.89,.49,.61,.16,.95,.56,.48,.27,.62,.34,.56,.48,.28,.92,.55,.15,.77,.05,.63,.24,.12,.49,.59,.84,.97,.53,.75,.64,.97,.44,.86,.62,.91,.22,.79,.44,.31,.72,.52,.19,.93,.09,.88,.49,.41,.11,.98,.31,.72,.28,.41,.58,.3,.74,.66,.15,.84,.05,.2,.41,.27,.62,.87,.82,.53,.67,.47,.86,.58,.04,.42,.94,.33,.69,.88,.45,.83,.67,.05,.86,.98,.01,.66,.57,.3,.85,.05,.22,.27,.71,.03,.37,.53,.27,.16,.03,.57,.69,.82,.42,.53,.99,.36,.09,.83,.28,.98,.02,.46,.15,.33,.43,.18,.28,.75,.24,.82,.08,.22,.89,.85,.13,.76,.58,.07,.89,.77,.07,.42,.04,.83,.22,.7,.34,.13,.9,.7,.06,.25,.74,.11,.83,.35,.25,.52,.43,.94,.53,.86,.72,.31,.2,.7,.56,.36,.27,.2,.58,.36,.74,.1,.5,.69,.16,.93,.04,.78,.6,.28,.65,.34,.96,.23,.62,.36,.47,.88,.06,.72,.95,.21,.04,.79,.27,.91,.59,.33,.77,.1,.69,.31,.21,.36,.12,.95,.31,.2,1,.28,.48,.03,.24,.76,.07,.19,.34,.76,.15,.33,.55,.39,.76,.16,.48,.37,.94,.51,.84,.62,.92,.67,.42,.94,.79,.45,.97,.36,.03,.75,.13,.24,.46,.73,.14,.4,.85,.69,.5,.83,.76,.09,.89,.45,.68,.56,.4,.64,.52,.05,.23,.53,.34,.81,.44,.24,.67,.56,.98,.37,.52,.78,.02,.4,.21,.81,.45,.87,.59,.4,.2,.66,1,.08,.29,.2,.67,.01,.39,.27,.79,.45,.09,0,.78,.94,.07,.8,.28,.66,.02,.88,.39,.58,.23,.42,.91,.13,.38,.82,.03,.56,.77,.16,.82,.54,.16,.61,.33,.12,.63,.44,.37,.48,.73,0,.91,.56,1,.44,.07,.92,.63,0,.77,.52,.12,.8,.18,.59,.4,.99,.29,.56,.52,.94,.42,.62,.84,.08,.95,.25,.6,.74,.65,.11,.16,.45,.21,.06,.76,.32,.49,.18,.07,.66,.27,.61,.86,.66,.91,.48,.61,.89,.19,.75,.29,.04,.91,.54,.6,.34,.01,.99,.14,.31,.72,.81,.41,.99,.62,.05,.49,.96,.73,.33,.13,.67,.27,.88,.59,.94,.65,.16,.37,.99,.05,.81,.53,0,.73,.6,.85,.8,.36,.47,.09,.94,.64,.13,.91,.84,.47,.67,.53,.22,.42,.96,.55,.34,.76,.12,.48,.69,.04,.75,.53,.47,.2,.71,.9,.26,0,.67,.85,.42,.91,.78,.55,.87,.19,.11,.97,.66,.37,.48,.16,.65,.8,.56,.27,.72,.4,.61,.47,.71,.92,.67,.83,.15,.64,.92,.05,.47,.12,.28,.73,.2,.51,.82,.42,0,.32,.77,.56,.29,.8,.98,.59,.11,.63,.27,.87,.54,.92,.19,.42,.02,.8,.18,.07,.53,.32,.13,.99,.63,.38,.24,.15,.84,.77,.18,.85,.49,.93,.59,.16,.69,.27,.84,.12,.59,.18,.89,.45,.83,.19,.44,.11,.75,.5,.56,.09,.31,.65,.25,.92,.44,.35,.7,.13,.55,.97,.76,.59,.86,.55,.36,.25,.62,.17,.32,.11,.61,.85,.13,.45,.23,.64,.84,.99,.34,.86,.29,.98,.78,.09,.63,.31,.5,1,.38,.22,.08,.49,.26,.02,.99,.71,.59,.31,.22,.13,.84,.24,.04,.35,.84,.44,.17,.89,.05,.86,.38,.25,.07,.53,.45,.36,.25,.7,.8,.66,.91,.5,.36,.06,.69,.89,.2,.82,1,.39,.7,.09,.36,.19,.91,.72,.37,.78,.16,.47,.81,.34,.56,.29,.95,.37,.8,.67,.44,.58,.2,.49,.71,.96,.29,.49,.71,.44,.25,.11,.34,.01,.46,.91,.22,.37,.55,.28,.01,.79,.59,.05,.98,.36,.29,.23,.85,.78,.71,.47,.11,.76,.87,.22,.96,.39,.28,.09,.23,.17,.31,.05,.46,1,.69,.39,.88,.77,.98,.36,.05,.73,.94,.06,.18,.44,.57,.1,.17,.59,.25,.35,.94,.42,.08,.59,.74,.33,.95,.61,.81,.41,.33,.08,.52,.79,.45,.91,.72,.58,.95,.75,.49,.17,.99,.33,.23,.65,.15,.55,.31,.84,0,.76,.87,.17,.38,.22,0,.87,.99,.63,.3,.11,.54,.5,.05,.24,.86,.52,.64,.47,.4,0,1,.61,.33,.69,.08,.98,.52,.12,.71,.43,.25,.92,.02,.86,.35,.78,.05,.65,.41,.1,.63,.05,.77,.65,.96,.4,.81,.66,.09,.78,.71,.86,.42,.35,.22,.72,.52,.86,.71,.04,.97,.4,.19,.95,.15,.37,.57,.06,.79,.46,.65,.72,.51,.93,.69,.82,.74,.07,.57,.28,.03,.43,.72,.56,.3,.81,.52,.4,.7,.28,.81,.66,.42,.91,.67,.12,.82,.55,.87,.18,.45,.77,.09,.69,.16,.77,.65,.24,.92,.39,.64,.08,.51,.32,.41,.23,.09,.7,.58,.8,.49,.1,.79,.96,.72,.2,.95,.53,.09,.61,.98,.52,.33,.54,.15,.78,.39,.94,.73,.17,.66,.6,.12,.92,.77,.27,.83,.57,.11,.23,.43,.03,.87,.25,.75,.63,.84,.08,.61,.76,.15,.53,.94,.27,.08,.91,.53,.22,.94,.36,.9,.5,.21,.56,.16,.56,.34,.97,.49,.1,.62,.67,.93,.49,.14,.62,.2,.58,.12,.34,.63,.55,.84,.68,.3,.51,.2,.91,.02,.89,.38,.45,.13,.27,.41,.18,.79,.94,.52,.11,.25,.19,.66,.89,.14,.59,.88,.02,.49,.21,.78,.51,0,.47,.75,.21,.03,.7,.84,.27,.54,.38,.22,.91,.56,.84,.02,.73,.18,.28,.83,.02,.92,.64,.88,.29,.04,.44,.75,.93,.45,.39,.61,.11,.67,.42,.28,.47,.82,.06,.75,.69,.43,.23,.04,.58,.33,.45,.96,.32,.41,.22,.05,.32,.16,.91,.49,.81,.95,.65,.55,.38,.21,.47,.17,1,.31,.49,.22,.69,.42,.69,.56,.84,.34,.73,.82,.56,.13,.3,.84,.73,.89,.29,.44,.03,.24,.92,.21,.84,.06,.28,.38,.81,.42,.94,.48,.82,.27,.01,.44,.23,.94,.05,.56,.33,.62,.3,.05,.8,.98,.61,.51,.86,.14,.36,.62,.81,.94,.48,.08,.4,.22,.31,.95,.73,.35,.99,.06,.3,.87,.62,.37,.27,.92,.36,.12,.64,.02,.88,.47,.29,.13,.44,.36,.88,.49,.99,.6,.7,.12,.47,.8,.36,.95,.65,.28,.19,.02,.27,.86,.49,.27,.77,.92,.15,.63,.43,.29,.12,.84,.94,.48,.8,.86,.06,.77,.37,.58,.8,.98,.62,.75,.68,.27,.18,.35,.73,.14,.9,.8,.01,.35,.56,.89,.36,.08,.84,.3,.12,.21,.44,.16,0,.29,.47,.17,.71,.04,.27,.06,.94,.62,.83,.69,.53,.36,.15,.56,.77,.97,0,.25,.75,.09,.67,.76,.89,.09,.72,.59,.83,.69,.23,.84,.16,.72,.56,.33,0,.25,.91,.67,.47,.22,.74,.38,.59,.96,.7,.77,.55,.11,.62,.14,.82,.58,.27,.72,.15,.98,.58,.67,.52,.43,.99,.57,.76,.95,.03,.61,.78,.18,.58,.09,.23,.42,.36,.2,.55,.25,.6,.18,.13,.55,.84,.63,.7,.06,.18,.84,.35,.04,.7,.2,.88,.97,.36,.62,.08,.64,.19,.27,.1,.63,.89,.01,.71,.53,.47,.04,.4,.58,.78,.51,.08,.26,.68,.49,.6,.83,.7,.11,.67,.57,.97,.64,.76,.48,1,.6,.76,.66,.88,.99,.61,.4,.47,.69,.51,.17,.13,.32,.58,.78,1,.45,.33,.59,.88,.52,.31,1,.37,.14,.59,.96,.42,.32,.12,.99,.42,.54,.95,.49,.18,.83,.64,.73,.37,.09,.84,.03,.3,.16,.84,.34,.01,.84,.17,.44,.29,.54,.39,.66,.89,.43,.11,.83,.06,.78,.2,.88,.3,.15,.41,.33,.73,.51,.97,.67,.31,.92,.65,.75,.84,.98,.74,0,.9,.49,.77,.36,.89,.4,.52,.96,.75,.42,.58,1,.5,.33,.01,.67,.18,.53,.33,.7,.39,.55,.93,.22,.51,.15,.28,.35,.23,.89,.13,.96,0,.88,.44,.99,.33,.09,.95,.28,.21,.45,.78,.16,.33,0,.91,.36,.82,.08,.4,.53,.09,.35,.53,.78,.93,.34,.84,.76,.43,.87,.08,.27,.02,.66,.22,.69,.1,.16,.64,.55,.22,.47,.31,.51,.18,.78,.46,.09,.8,.03,.67,.26,.4,.88,.12,.45,.28,.58,.97,.48,.79,.65,.11,.5,.27,.47,.94,.67,.86,.94,.19,.06,.8,.2,.53,.33,.47,.41,.09,.71,.81,.23,.71,.1,.83,.25,.14,.37,.81,.03,.51,.11,.33,.06,.42,.82,.31,.69,1,.08,.25,.12,.81,.33,.09,.65,.24,.09,.75,.86,.58,.47,.78,.27,.89,.06,1,.47,.79,.68,.42,.86,.95,.06,.83,.77,.55,.31,.23,.67,.63,.8,.2,.73,.41,.65,.04,.98,.84,.27,.47,.53,.09,.24,.69,.31,.94,.2,.24,.85,.03,.16,.22,.1,.38,.01,.66,.95,.48,.73,.88,.4,.12,.89,.45,.8,.4,.85,.03,.89,.8,.66,.01,.88,.25,.58,.18,.36,.75,.91,.08,.52,.76,.97,.18,.75,.24,.42,.55,1,.22,.77,.63,.38,.05,.58,.23,.02,.75,.48,.35,.59,.93,.74,.24,.96,.62,.02,.52,.46,.88,.22,.56,.42,.05,.86,.58,.45,.18,.88,.27,.63,.58,.41,.09,.21,.44,.58,.73,.47,.2,.92,.56,.37,.91,.46,.17,.26,.38,.95,.09,.83,.42,.74,.15,.6,.31,.04,.33,.73,.56,.46,.66,.18,.44,.73,.48,.16,.38,.51,.03,.59,.13,.88,.52,.35,.14,.62,.95,.8,.73,.44,.57,.15,.76,.59,.73,.44,.78,.89,.66,.6,1,.27,.55,.22,.36,.16,.53,.63,.84,.35,.28,.95,.05,.7,.61,.13,.7,.25,.95,.55,.69,.92,.49,.86,.14,.31,.58,.22,.33,.04,.55,.68,.12,.88,.06,.35,.45,.93,.83,.15,.7,.32,.77,.42,.69,.98,.12,.86,0,.66,.16,.82,.44,.33,.93,.58,.05,.99,.64,.75,.93,.26,.71,.34,1,.69,.51,.92,.7,.16,.95,.64,.81,.02,.86,.68,.59,.28,.02,.84,.69,.31,.82,.63,.06,.69,.16,.56,.63,.36,.22,.87,.09,.97,.18,.62,.11,.32,1,.02,.64,.94,.84,.11,.91,.22,.84,.93,.45,.73,.31,.58,.71,.05,.38,.29,.19,.97,.87,0,.46,.93,.11,.39,.57,.28,.49,.73,.45,.8,.06,.72,.84,.78,.31,.92,.05,.57,.73,.53,.24,.33,.98,.49,.41,.34,.06,.44,.31,.71,.07,.64,.44,.81,.7,.95,.65,.42,.91,.81,.33,.62,.16,.72,.59,.28,.09,.51,.97,.88,.12,.53,.28,.61,.25,.4,.52,.3,.58,.89,.22,.76,.18,.38,.7,.29,.36,.47,.18,.55,.11,.22,.8,.39,.14,.05,.24,.86,.53,.33,.51,.27,.37,.11,.98,.4,.75,.14,.49,.02,.92,.54,.73,.31,.96,.45,.02,.84,.49,.67,.44,.53,.84,.89,.25,.52,.8,.39,.25,.06,.77,.29,.67,.61,.42,.34,.25,.8,.07,.18,.91,.49,.87,.67,.12,.62,.33,.52,.81,.32,.66,.19,.96,.06,.35,.08,.2,.9,.64,.48,.13,.05,.44,.22,.5,.18,.65,.13,.45,.78,.16,.25,.76,.92,.63,.84,.15,.38,.22,.98,.27,.53,.01,.16,.79,.62,.27,.06,.41,.53,.94,.26,.03,.87,.42,.24,.6,.35,.21,.83,.56,.04,.78,.7,.97,.07,.37,.11,.53,.65,.08,.85,.5,.12,.8,.01,.87,.41,.75,.63,.01,.56,.77,.36,.45,.8,.04,.69,.14,.95,.44,.83,.16,.53,.67,.24,.99,.61,.41,.23,.12,.38,.78,.21,.3,.92,.11,.8,.27,.72,.37,.45,.04,.73,.87,.16,.6,.51,.34,.56,.02,.76,.12,.69,0,.63,1,.42,.77,.24,.56,.02,.46,.84,.27,.69,.07,.23,.84,.48,.76,.68,.85,.94,.53,.16,.31,.38,.98,.6,.67,.76,.96,.08,.88,.38,.95,.67,.56,.87,.06,.2,.52,.11,.77,.47,.55,.69,.09,.91,.39,.48,.24,.13,.45,.91,.19,.84,.75,.48,.78,.55,.66,.75,.02,.44,.65,.96,.16,.91,.34,.45,.19,.84,.7,.78,.41,.28,.93,.42,.74,.24,.91,.6,.68,.31,.84,.95,.48,.29,.86,.94,.61,.29,.41,.72,.87,.2,.58,.77,.3,.05,.88,.44,.35,.19,.77,.96,.49,.91,.62,.53,.7,.38,.58,.31,.95,.06,.16,.65,.93,.21,.42,.67,.95,.21,.89,.46,.97,.27,.49,.95,.88,.17,.51,.36,.84,.16,.31,.7,.96,.2,.75,.42,.15,.98,.55,.01,.31,.22,.42,.6,.25,.76,.44,.89,.23,.55,.16,.33,.85,.28,.71,.59,.03,.3,.09,.63,.34,.58,.7,.23,.96,0,.33,.82,.18,.74,.31,.87,.98,.56,.77,.7,.58,.06,.3,.12,.98,.19,.13,.95,.31,.8,.09,.49,.39,.76,.08,.55,.28,.62,.46,1,.13,.84,.57,.03,.64,.34,.52,.09,.22,.46,.16,.07,.24,.66,.18,.12,.7,.21,.99,.07,.34,.62,.04,.73,.38,.94,.62,.81,.09,.69,.07,.66,.27,0,.83,.09,.99,.66,.05,.19,.75,.61,.5,.78,.31,.56,.08,.48,.33,.82,.12,.71,.16,.86,.2,.36,.55,.45,.28,.69,.09,.61,.94,.78,.37,.53,.05,.9,.57,.71,.36,.88,.63,.09,.48,.82,.02,.72,.67,.11,.74,.84,.4,0,.62,.47,.36,.2,.82,.49,.92,.41,.82,1,.45,.31,.88,.66,.14,.94,.45,.58,.64,.07,.69,.37,.02,.33,.96,.43,.67,.56,.35,.4,.84,.5,.56,.71,.9,.26,.67,.23,.64,.82,.93,.04,.23,.34,.07,.49,.31,.96,.17,.83,.39,.73,.99,.8,.36,.55,.92,.73,.44,.53,.02,.85,.56,.47,.79,.26,.97,.49,.22,.12,.57,.28,.38,.87,.53,.84,.44,.57,.35,.24,.14,.77,.47,.91,.41,.25,1,.35,.13,.73,.96,.61,0,.73,.24,.59,.42,.62,.75,.08,.82,.1,.74,.96,.01,.5,.42,.17,.09,.3,.63,.45,.81,.28,.11,.44,.77,1,.71,.36,.18,.96,.49,.03,.29,.93,.52,.7,.89,.13,.54,.99,.76,.13,.69,.25,.17,0,.77,.09,.59,.55,.42,.71,.24,.05,.93,.19,.44,.82,.14,.51,.23,.82,.16,.91,.61,.04,.7,.24,.05,.17,.34,.55,.03,.98,.5,.13,.39,.71,.57,.91,.64,.75,.21,.7,.11,.45,.92,.26,.04,.51,.63,.87,.02,.33,.8,.93,.39,.31,.65,.15,.43,.87,.11,.67,.35,.85,.72,.01,.95,.45,.31,.13,.19,.75,.68,.86,.44,.26,.58,.86,.09,.55,.83,.02,.88,.53,.38,.16,.9,.53,.37,.95,.09,.3,.55,.67,.33,.23,.86,.4,.62,.25,.85,.58,.66,.98,.86,.12,.19,.66,.94,.2,.53,.16,.06,.58,.87,.33,.54,.86,.36,.17,.11,.45,.23,.79,.07,.42,.27,.48,.36,.88,.55,.66,.4,.22,.84,.18,.29,.87,.5,.33,.78,.51,.27,.95,.62,.88,.09,.4,.77,.27,.47,.8,.91,.32,.64,.98,.41,.84,.78,.42,.31,.88,.1,.77,.43,.18,.85,.55,.39,.88,.78,.56,.15,.64,.3,.75,.18,.69,.42,.21,.6,.15,.74,.25,.89,.05,.71,.3,.56,.92,.44,.78,.2,.5,.69,.22,.64,1,.38,.93,.05,.53,.95,.35,.02,.69,.33,.15,.67,.45,.27,.81,.23,.84,.31,.66,.05,.83,.49,.89,.01,.44,1,.6,.48,.14,.91,.32,.74,.03,.45,.24,.72,.35,.41,.51,.04,.74,.33,.84,.27,.75,.44,.24,.16,.61,.76,.64,.99,.75,.31,.94,.65,.85,.05,.64,.96,.07,.32,.57,.92,.49,.92,.7,.05,.99,.11,.6,.88,.04,.72,.11,.47,.75,.64,.53,0,.71,.22,.08,.53,.43,.76,.5,.13,.61,.06,.18,.58,.67,.25,.53,.3,.81,.02,.11,.43,.29,.04,.34,.85,.6,.44,.91,.12,.27,.5,.99,.06,.69,.45,.52,.94,.61,.79,.39,.19,.01,.61,.07,.39,.96,.16,.76,.04,.6,.78,.28,.49,.11,.64,.21,.8,.5,.96,.39,.77,.62,.08,.42,.68,.11,.49,.42,.78,.19,.71,.23,.93,.8,.18,.7,.05,.55,.77,.2,.95,.36,.82,.49,.02,.94,.57,.88,.84,.59,.41,.93,.5,.63,.02,.8,.89,.39,.47,.28,.55,.03,.6,.38,.16,.54,.31,.72,.19,.79,.84,.27,.75,.06,.34,.81,.56,.37,.75,.19,.45,.39,.85,.59,.22,.36,.27,.94,.34,.97,.59,.86,.17,.97,.03,.22,.88,.29,.7,.95,.82,.34,.92,.06,.97,.49,.34,.93,.77,.64,.96,.51,.21,.82,.02,.99,.35,.56,.88,.76,.36,.27,.87,0,.35,.12,.22,.67,1,.81,.26,.65,.89,.29,.53,.36,.86,.45,.08,.22,.67,.83,.4,.73,.91,.23,.12,.58,.89,.2,1,.55,.76,.94,.59,.15,1,.63,.35,.57,.13,.28,.41,.87,.24,.35,.69,.07,.5,.11,.89,.6,.21,.7,.08,.3,.15,.26,.04,.67,.13,.39,.98,.7,.09,.67,.05,.89,.15,.84,.48,.71,.12,.77,.95,.57,.03,.44,.58,.12,.17,.43,.63,.11,.22,.66,.31,.94,.69,.24,.33,.95,.05,.78,.13,.85,.18,.49,.42,.3,.66,.37,.59,.78,.68,.36,.52,.24,.03,.45,.15,.59,.65,.21,.7,.59,.15,.23,.67,.08,.36,.7,.23,.47,.63,.73,.04,.17,.53,.64,.8,.19,.44,.83,.57,.46,.32,.5,.75,.11,.47,.8,.03,.7,.25,.91,.51,.73,.97,.33,.05,.56,.08,.42,.78,.27,.02,.49,.3,.14,.33,.03,.88,.25,.32,0,.45,.75,.64,.51,.09,.64,.96,.45,.84,.6,.42,.66,.16,.28,.78,.43,.84,.64,.47,.73,.96,.22,.83,.29,.17,.52,.34,.22,.96,.31,.78,.36,.22,.96,.28,.44,.22,.67,.4,.98,.48,.67,.86,.97,.51,.86,.95,.45,.55,.08,.79,.15,.55,.67,.5,.91,.59,.45,.66,.09,.81,.73,.13,.84,.27,.08,.46,.91,.12,.64,.55,.75,.83,.4,.87,.27,.08,.96,.33,.83,.43,.91,.78,.14,.52,.84,.09,.22,.43,.84,.97,.09,.31,.73,.99,.66,.03,.87,.08,.16,.95,.35,.22,.58,.78,.42,.19,.65,.33,.16,.42,.58,.18,.95,.35,.66,.62,.85,.36,.75,.92,.84,.64,.47,.38,.74,.55,.89,.81,.16,.98,.38,.78,.57,.11,.31,.19,.87,.25,.98,.73,.39,.55,.11,.99,.18,.38,.89,.53,.45,.76,.58,.87,.46,.78,.58,.73,.5,.42,.67,.08,.63,.87,.5,.09,.91,.14,.29,.21,.36,.77,.24,.3,.74,.15,.03,.83,.27,.63,.99,0,.41,.26,.73,.04,.25,.56,.9,0,.22,.55,.48,.94,.64,.33,.17,.83,.4,.99,.21,.33,.11,.73,.53,.43,.78,.48,.09,.55,.31,.59,.95,.31,.75,.4,.92,.67,.33,.24,.43,.61,.53,.15,.41,.28,.94,.71,.61,.38,.83,.7,.09,.98,.51,.11,.94,.8,.03,.87,.27,.75,.86,.48,.15,.99,.07,.44,.68,.11,.56,.22,.86,.18,.64,.8,.08,.39,.27,.05,.84,.23,.91,.73,.5,.01,.76,.33,.09,.46,.02,.91,.27,.49,.73,.01,.56,.09,.31,.7,.02,.24,.1,.93,.39,.01,.62,.11,.89,.55,.73,.02,.81,.35,.77,.62,.83,.73,.01,.55,.06,.38,.48,.67,.35,.89,.42,.49,.33,.77,.88,.18,.46,.98,.38,.76,.29,.63,1,.4,.76,.2,.01,.98,.58,.77,.05,.3,.68,.5,0,.94,.19,.65,.05,.88,.37,.73,0,.18,.47,.07,.65,.27,.86,.13,.51,.71,.87,.03,.92,.24,.77,.49,.34,.2,.78,.02,.49,.91,.16,.32,.75,.59,.28,.39,.55,.95,.65,.46,0,.7,.31,.23,.8,.2,.53,.25,.39,0,.51,.95,.11,.22,.5,.94,.62,.69,.47,.33,.16,.41,.96,.64,.54,.91,.59,.8,.69,.87,.62,.31,.67,.8,.28,.85,.15,.48,1,.6,.66,.29,.15,.86,.2,.99,.27,.33,.16,.4,.66,.19,.58,.07,.54,.94,.45,.63,.81,.59,.04,.25,.57,.76,.08,.18,.59,.8,.09,.29,.64,.81,.15,.53,.86,.45,.32,.05,.89,.66,.42,.72,.24,.48,.35,.88,.61,.81,.45,.58,.84,.36,.25,.63,.22,.99,.66,.84,.36,.91,.56,.15,.45,.59,.02,.79,.2,.47,.37,.82,.59,.06,.86,.44,.56,.31,.53,.25,.62,.44,.01,.82,.2,.69,.48,.09,.37,.21,.82,.42,.9,.58,.45,.93,.64,.87,.98,.75,.7,.29,.44,.58,.31,.72,.18,.55,.88,0,.61,.27,.82,.19,.38,.13,.27,.45,.19,.34,.15,.08,.4,.96,.23,.64,.91,.41,.2,.81,.42,.92,.75,.49,.35,.75,.52,.45,.89,.96,.29,.45,.94,.24,.33,.13,.27,.99,.19,.9,.79,.96,.22,.71,.86,.94,.24,.45,.69,.91,.58,.33,.07,.69,.18,.12,.71,.59,.14,.52,.3,.83,.15,.86,.62,.09,.16,.97,.23,.29,.91,.12,.78,.94,.44,.15,.53,.8,.24,.72,.05,.96,.81,.29,.37,1,.64,.27,.07,.69,.15,.97,.64,.11,.8,.98,.07,.88,.73,.37,.89,.55,1,.06,.77,.15,.88,.55,.07,.63,.11,.34,.75,.05,.33,.12,.46,.36,.05,.62,.82,.97,.03,.87,.11,.28,.42,.78,.93,.7,.06,.45,.67,.9,.63,.07,.97,.53,.77,.92,.48,.12,.36,.53,.8,.04,.7,.34,.06,.53,.23,.66,.59,.08,.82,.69,.05,.55,.09,.86,.69,.43,.78,.86,.7,.38,.14,.33,.63,.52,.4,.13,.31,.67,.04,.39,.52,.21,.02,.75,.92,.61,.42,.95,.8,.25,.86,.34,.94,.05,.45,.69,.22,.75,.44,.38,.71,.05,.66,.46,.53,.7,.03,.57,.29,.11,.61,.42,.52,.19,.69,.92,.07,.55,.85,.41,.95,.79,.45,.3,.4,.24,.69,.15,.42,.79,.2,.11,.67,.14,.28,.42,.61,.31,.69,.98,.3,.76,.94,.52,.85,.09,.59,.7,.19,.57,.91,.23,.15,.75,.37,.47,.79,.99,.62,.09,.5,.36,.56,.86,.01,.25,.75,.39,.81,.65,.22,.58,.87,.72,.02,.62,.44,.28,.92,.5,.12,.85,.33,.04,.94,.4,.14,.23,.6,.8,.24,.73,.02,.16,.6,.5,.04,.55,.72,.44,.07,.86,0,.6,.47,.54,.84,.95,.14,.86,.41,.48,.24,.29,.54,.01,.65,.48,.09,.74,.2,.61,.37,1,.31,.91,.55,.06,.86,.58,.4,.21,.09,.31,.82,.4,.87,.49,.93,.76,.33,.11,.44,.64,.22,.14,.73,.32,.12,.58,.5,.01,.86,.93,.51,.36,.6,.3,.56,.95,.34,.48,.85,.73,.92,.24,.81,.41,.57,.15,.22,.68,.27,.41,.78,.95,.29,.84,.68,.49,.41,.09,.65,.58,.24,.05,.38,.84,.23,.13,.97,.3,.77,.51,.96,.31,.1,.46,.03,.39,.29,.18,.82,.97,.3,.17,.67,.76,.6,.99,.44,.8,.26,.89,.31,.73,.38,.92,.34,.52,.39,.99,.3,.91,.23,.67,.94,.28,.17,.73,.36,1,.77,.27,.07,.75,.28,.61,.99,.8,.11,.84,.91,.36,.22,.98,.38,.68,.56,.78,.11,.53,0,.66,.25,.76,.17,.49,.99,.81,.89,.6,.25,.95,.75,.05,.17,.27,.84,.56,.88,.35,.84,.45,.52,.62,.2,.86,.27,.73,.59,.17,.75,.05,.92,.71,.09,.51,.75,.63,.09,.36,.02,.5,.13,.04,.49,.87,.38,.02,.99,.54,.23,.5,.39,.02,.13,.8,.27,.9,.51,.19,.85,.69,.54,.17,.76,.64,.43,.6,.18,.45,.13,.58,.91,.27,.8,.99,.67,.51,.72,.08,.88,.56,.08,.39,.28,.2,.7,.09,.56,.64,.51,1,.08,.48,.13,.63,.87,.54,.09,.8,.35,.1,.58,.81,.48,.92,.57,.22,.15,.9,.42,.48,.68,.09,.36,.17,.64,.58,.73,.16,.78,.55,.29,.03,.93,.27,.85,.72,.17,.81,.45,.92,.31,.64,0,.28,.72,.16,.53,.08,.36,.69,.59,1,.01,.49,.16,.76,.06,.27,.95,.02,.99,.68,.36,.11,.67,.08,.47,.81,.26,.44,.86,.02,.25,.91,.19,.56,.84,.65,.95,.73,.31,.8,.62,.45,.72,.16,.87,.09,.76,.61,.99,.34,.71,.95,.03,.73,.3,.42,.94,.58,.88,.33,.09,.94,.85,.34,.66,.87,.18,.72,.62,.16,.08,.42,.24,.34,.47,.69,.85,.96,.02,.5,.89,.36,.17,.75,.01,.82,.2,.67,.96,.04,.75,.27,.15,.63,.47,.89,.39,.23,.65,.35,.83,.04,.66,.79,.32,.18,.55,.77,.25,.53,.39,.05,.33,.45,.09,.62,.89,.48,.14,.44,.33,.95,.41,.6,.35,.11,.7,.22,.84,.38,.47,.44,.66,.82,.22,.45,.54,.38,.86,.69,.28,.95,.55,.68,.81,.39,.16,.77,.42,.91,.84,.42,.32,.64,.13,.19,.98,.61,.39,.8,.69,.3,.46,.26,.37,.6,.22,.95,.05,.31,.89,.59,.36,.66,.88,.43,.22,.56,.45,.17,.61,.34,.91,.12,.07,.24,.47,.8,.56,.05,.69,.23,.06,.53,.4,.48,.36,.84,.56,.91,.64,.97,.13,.2,.43,.24,.79,.62,.72,.4,.97,.47,.24,.58,.42,.3,.81,.22,.45,.69,.36,.84,.71,.15,1,.02,.52,.11,.29,.43,.49,.11,.61,.95,.86,.01,.92,.71,.88,.97,.27,.69,.93,.84,.17,.35,.78,.65,.05,.51,.14,.88,.04,.73,.96,.43,.58,.13,.96,.04,.86,.31,.94,.14,.77,.23,.09,.64,.2,.47,.37,.12,.6,.31,.49,.09,.56,.3,.22,.52,.97,.87,.56,.74,.38,.28,.12,.53,.98,.14,.75,.09,.87,.17,.55,.69,.12,.52,.8,.19,.05,.29,.51,.15,.73,.03,.86,.38,.11,.8,.47,.66,.77,.41,.01,.71,.18,.27,.49,.79,1,.75,.25,0,.95,.2,.76,.33,.03,.8,.59,.75,.55,.34,.89,.15,.55,.22,.07,.78,.33,.94,.72,.59,.35,.55,.85,.03,.98,.5,.05,.31,.6,.76,.18,.69,.88,.75,.97,.24,.71,.37,.14,.43,.32,.6,.12,.22,.75,.5,.02,.24,.44,.7,.56,.89,.21,.69,.76,.28,.62,.22,.53,.07,.82,.67,.25,.75,.59,.4,.49,.91,.72,.32,.42,.94,.8,.02,.91,.71,.2,.84,.91,.63,.03,1,.8,.06,.16,.72,.01,.48,.78,.66,.89,.43,.03,.36,.93,.67,.81,.01,.44,.92,.24,.65,.4,.47,.74,.96,.23,.8,.92,.32,.65,.25,.58,.97,.19,.28,.61,.86,.99,.36,.61,.94,.41,.58,.31,.15,.95,.68,.44,.09,.48,.72,.16,.4,.29,.91,.03,.67,.47,.07,.3,.91,.68,.6,.85,.12,.05,.77,.08,.93,.29,.13,.57,.2,.75,.26,.44,.85,.95,.41,.63,.15,.55,.84,.04,.46,.75,.53,.83,.05,.47,.56,.82,.36,.59,.75,.13,.95,.08,.28,.85,.55,.08,.99,.48,.88,.37,.75,.3,.91,.2,.36,.07,.64,.17,.01,.62,.85,.55,.15,.58,.34,.85,.44,.07,.55,.26,.73,.38,.6,.45,.67,.37,.27,.43,.1,.94,.19,.07,.73,.63,.21,.53,.58,.3,.48,.77,.37,.84,.15,.96,.08,.89,.69,.37,.57,.07,.48,.78,.88,.7,.43,.05,.94,.55,.14,.22,.5,.76,.11,.88,.04,.46,.64,.53,.82,.29,.61,.91,.24,.84,.52,.65,.11,.95,.19,.56,.99,.83,.42,.02,.52,.19,.39,.51,.84,.15,.47,.62,.8,.42,.89,.65,.95,.37,.08,.22,.48,.01,.27,.36,.19,.64,.28,1,.18,.24,.67,.96,.36,.06,.16,.97,.31,.52,.78,.38,.48,.16,.4,.83,.36,.19,.65,.12,.18,.45,.61,.5,.95,.82,.23,.78,.45,.27,.05,.96,.39,.69,.23,.53,.17,.77,.98,.36,.14,.84,.2,.12,.73,.58,.99,.81,.62,.32,.24,.56,.81,.27,.87,.41,.05,.92,.25,.62,.08,.76,.56,.33,.62,.42,0,.16,.63,.39,.97,.19,.16,.03,.53,.33,.74,.39,.69,.09,.84,.44,.17,.67,.73,.2,.36,.09,.89,.16,.69,.37,.06,.58,.97,.24,.36,.8,.4,.26,.77,.36,.16,.75,.31,.98,.65,.27,.97,.41,.68,.25,.73,.32,.12,.51,.02,.72,.58,.88,.82,.67,.93,.42,.91,.8,.11,.58,.89,.38,.76,.31,.71,.92,.64,.44,.84,.2,.62,.02,.99,.72,.64,.45,.03,.71,.8,.6,1,.02,.72,.09,.42,.71,.32,.98,.88,.37,.73,.18,.51,.77,.03,1,.62,.41,0,.67,.47,.94,.52,.32,.89,.48,.23,.14,.89,.52,.78,.39,1,.49,.12,.77,.18,.68,.13,1,.2,.52,.05,.27,.78,.22,.54,.82,.92,.11,.27,.53,.37,.77,.89,.24,.85,.03,.47,.31,.96,.57,.25,.34,.97,.85,.27,.76,.59,.03,.5,.99,.74,.44,0,.73,.47,.6,.71,.01,.49,.66,.59,.25,.88,.45,.1,.71,.21,.55,0,.9,.09,1,.48,.18,.82,.63,.29,.34,.11,.53,.75,.05,.7,.49,.33,.69,0,.84,.44,.09,.19,.5,.27,.04,.69,.15,.5,.66,.33,.24,.12,.91,.56,.26,.42,.91,.51,.3,.38,.89,.16,.54,.02,.41,.58,.66,.11,.81,.28,.88,.13,.66,.82,.29,.87,.57,.09,.77,.26,.03,.93,.09,.41,.66,.02,.47,.67,.05,.16,.31,.72,.96,.61,.36,.84,.55,.42,.67,.93,.89,.7,.13,1,.35,.47,.68,.75,.6,.94,.45,.63,.16,.58,.78,.9,.63,.73,.03,.81,.53,.59,.03,.49,.98,.41,.23,.8,.34,.16,.82,.2,.93,.3,.14,.86,.95,.21,.11,.94,.78,.06,.55,.81,.36,.9,.74,.37,.83,.28,.59,.69,.25,.92,.4,.17,.65,1,.18,.59,.29,.14,.58,.97,.27,.51,.15,.58,.95,.63,.41,.88,.77,.34,.92,.42,.81,.88,.59,.79,.31,.96,.15,.06,.35,.23,.86,.67,.78,.25,.63,.84,.11,.21,.51,.97,.59,.44,.2,.38,.48,.34,.13,.52,.2,.89,.39,.63,.7,.55,.18,.73,.86,.3,.96,.21,.89,.44,.64,.55,.02,.47,.25,.73,.05,.8,.35,.18,.47,.38,.51,.74,.27,.07,.86,.31,.02,.83,.09,.28,.98,.11,.41,.19,.26,.13,.39,.89,.22,.42,.12,.67,.32,.72,.11,.91,.64,.27,.38,.66,.51,.8,.05,.34,.45,.55,.85,.33,.4,.17,.7,.59,.13,.09,.63,.16,.51,.42,.03,.76,.39,.52,.05,.78,.45,.23,.39,.85,.47,.22,.87,.09,.36,.77,.71,.33,.01,.8,.55,.11,.58,1,.05,.27,.19,.09,.52,.05,.69,.47,.82,.71,.63,.75,.56,.04,.21,.99,.47,.31,.75,.8,.27,.33,0,.72,.91,.56,.93,.05,.74,.96,.3,.72,.07,.36,.97,.42,.8,.35,.59,.51,.13,.35,.6,.81,.08,.25,.83,.33,.9,.51,.29,.1,.88,.59,.03,.84,.07,.62,.42,.78,.15,.53,.24,.39,.67,.48,.71,.36,.67,.53,.87,.5,.67,.09,.62,.93,.8,.87,.2,.62,.47,.84,.53,.07,.59,.88,.12,.27,.58,.93,.67,.27,.03,.7,.48,.91,.28,.96,.42,.49,.31,.97,.78,.64,.22,.85,.12,.97,.71,.53,.87,.73,.04,.92,.67,.78,.42,.63,.2,.91,.44,1,.22,.76,.34,.25,.16,.45,.63,.55,.75,.36,.95,.42,.22,.36,.89,.52,.07,.95,.13,.47,.36,.58,.07,.9,.68,.05,.91,.42,.15,.64,.08,.78,.19,.69,.6,.4,.8,.53,.17,.83,.22,.05,.64,.27,.98,.07,.73,.78,.52,.93,.31,.75,.96,.17,.11,.64,.97,.4,.71,.25,.66,.31,.95,.22,.92,.55,.64,.98,.77,.9,.17,.03,.83,.24,.94,.02,.79,.34,1,.77,.29,.07,.36,.55,.09,.9,.36,0,.21,.79,.44,.94,.36,.72,.64,.41,.15,.78,.89,.57,.12,.63,.02,.23,.77,.88,.7,.25,.1,.94,.34,.56,.65,.31,.22,.08,.32,.63,.13,.55,.28,0,.95,.73,.51,.05,.27,.66,.47,.09,.94,.65,.73,.83,.31,.92,.69,.12,.84,.63,.73,.09,.25,.39,.2,.44,.3,.91,.82,.75,.16,.45,.37,.61,.53,.75,.87,.5,.33,.28,.42,.84,.23,.12,.03,.45,.93,.59,.5,.88,.11,.55,.16,.83,.41,.25,.16,.02,.38,.59,.49,.68,.42,.8,.56,.19,.77,.97,.53,.16,.77,.48,.02,.31,.38,.12,.44,.59,.34,.96,.58,.47,.74,.11,.6,.22,.45,.16,.58,.71,.25,.45,.77,.28,.56,.74,1,.69,.33,.03,.17,.47,.99,.2,.09,.51,.36,.22,.76,.86,.51,.37,.66,.2,.03,.45,.37,.68,.06,.89,.46,.4,.8,.93,.49,.69,.19,.8,.36,.49,.16,.34,.82,.61,.12,.86,.56,.38,.9,.49,.03,.38,.09,.2,.57,.47,.27,.15,.92,.57,1,.76,.6,.84,.7,.64,.08,.32,.55,.97,.22,.14,.28,1,.2,.67,.83,.98,0,.55,.48,.88,.64,.27,.76,.13,.32,.4,.71,.89,.47,.68,.57,.97,.66,.84,.71,.12,.22,.86,.01,.28,.33,.14,.49,.08,.44,.87,.36,.59,.82,.71,.95,.05,.25,.62,.12,.78,.22,.13,.42,.31,.71,.86,.04,.39,.9,.48,.97,.64,.05,.95,.18,.42,.28,.14,.86,.63,.76,.84,.01,.87,.76,.65,.97,.05,.44,.31,1,.1,.83,.56,.91,.59,.84,.55,.27,.16,.75,0,.58,.15,.37,.91,.42,.98,.65,.87,.58,.1,.42,.98,.35,.76,.18,.69,.14,.31,.6,.95,.78,.42,0,.99,.81,.3,.49,.04,.45,.15,.3,.02,.49,.23,.4,.69,.85,0,.67,.83,.48,.08,.39,.11,.45,.58,.15,.79,.34,.71,1,.38,.2,.67,.96,.78,.27,.2,.37,0,.29,.09,.34,.55,.45,1,.36,.6,.76,.92,.69,.88,.64,.37,.81,.21,.69,.11,.4,.18,.5,.67,.86,.74,.5,.36,.69,.87,.65,.98,.18,.52,.95,.66,.8,.2,.11,.83,.33,.69,.5,.86,.65,.55,.39,.23,.5,.27,.39,.55,.33,.25,.47,.82,.2,.61,.71,.16,.3,.73,.34,.14,.2,.76,.99,.62,.25,.95,.67,.27,.05,.78,.09,.3,.05,.24,.7,.92,.22,.69,.49,.03,.31,.8,.44,.85,.2,.71,.51,.87,.34,.67,.07,.4,.87,.71,.82,.67,.95,.55,.78,.12,1,.19,.49,.78,.28,.94,.73,.56,.8,.25,.36,.73,.66,.91,.29,.17,.04,.81,.58,.08,.46,.03,.55,.87,.75,.95,.8,.5,.86,.2,.04,.78,.31,.08,.51,.18,.44,.84,.03,.27,.67,.05,1,.26,.9,.86,.34,.22,.97,.42,.06,.92,.27,.02,.77,.49,.26,.57,.1,.3,0,.59,.27,.41,.54,.21,.82,.11,.02,.48,.78,.92,.07,.61,.7,.11,.92,.59,.15,.72,.9,.05,.58,.48,.42,.06,.97,.64,.44,.02,.37,.51,.83,.13,.54,.83,.22,.56,.63,.75,.46,.81,.55,.4,.13,.85,.25,.92,.62,.95,.08,.56,.36,.12,.25,.59,.17,.75,.53,.61,.12,.37,.29,.22,.07,.88,.35,.58,.89,.03,.56,.38,.11,.45,.33,.03,.64,.95,.84,.03,.21,.42,.06,.61,.52,.43,.87,.33,.89,.64,.14,.42,.09,.6,.2,.4,.74,.92,.28,.64,.83,.91,.39,.13,.59,.25,.53,.93,.79,.57,.45,.51,.65,.08,.61,.57,.16,.29,.82,.16,.55,.61,.35,.06,.84,.42,.69,.34,.76,.52,.85,.91,.02,.75,.38,.6,.31,.95,.11,.67,.35,.97,.45,.19,.85,.03,.38,.55,.28,.35,.94,.75,.89,.25,.49,.8,.31,.91,.71,.06,.42,.35,.74,.45,.86,.97,.52,.19,.14,.98,.31,.05,.77,.47,.57,.06,.41,.51,.25,.91,.64,.8,.08,.45,.94,.84,.24,.93,.2,.96,.52,.59,.41,.18,.46,.27,.75,.65,.31,.95,.62,.18,.75,.89,.48,.15,.53,.31,.95,.56,.76,.94,.7,.13,.23,.73,.53,.25,.97,.69,.31,.51,.65,.16,.05,.59,.53,.13,.22,.67,.56,.79,.99,.09,.75,.17,.39,.12,.33,.77,.03,.73,.4,.8,.01,.72,.47,.67,1,.45,.89,.16,.76,.92,.2,.82,.95,.45,.09,.67,.47,.97,.25,.89,.73,.19,.43,.74,.17,.86,.24,.73,.49,.77,1,.65,.08,.79,.23,.14,.62,0,.59,.73,.09,.23,.55,.87,.18,.59,.93,.13,.4,.33,.28,.69,.41,.84,.63,.25,.95,.67,.35,.75,.2,.67,.76,0,.48,.99,.73,.3,.14,.37,.05,.47,.78,.65,0,.76,.95,.72,.84,.09,.51,.43,.14,.87,.52,.81,.22,.31,.11,.42,.76,.63,.09,.49,.24,.35,.78,.29,.94,.04,.8,.38,.19,.75,.88,.11,.98,.78,.38,.69,.97,.43,.47,.03,.34,.27,.66,.44,.32,.48,.7,.89,.2,.96,.44,.23,.92,.44,.88,.64,.35,.24,.12,.7,.21,.53,.38,.03,.64,.47,.16,.25,.71,.31,.18,.59,.14,.45,.53,.84,.29,.57,.01,.52,.64,.09,.37,.28,.21,.88,.44,.51,.69,.38,.84,.95,.34,.16,.85,.64,.47,.76,.96,.3,.64,.02,.77,.07,.82,.95,.01,.57,.18,.73,.43,.09,.16,.99,.84,.12,.37,.32,.18,.41,.87,.52,.7,.64,.56,.27,.41,.1,.33,.85,.48,.04,.63,.2,.97,.8,.25,.7,.01,.47,.99,.68,.58,.89,.24,.39,.78,.87,.13,.4,0,.55,.64,.45,.11,.6,.48,.03,.54,.34,.44,.27,.87,.31,0,.82,.75,.94,.88,.2,.78,.02,.92,.85,.08,.59,.82,.1,.67,.29,.11,.51,.19,.09,.95,.78,.4,.07,.81,.95,.68,.31,.55,.07,.88,.37,.55,.09,.78,.85,.41,.07,.69,.05,1,.39,.79,.31,.81,.92,.69,.58,.12,.63,.16,.95,.05,.29,.47,.18,.53,.42,.98,.37,.13,.32,.07,.22,.49,.71,.17,.56,.65,.46,.35,.89,.08,.51,.87,.81,.54,.29,.47,.92,.59,.87,.67,.56,.04,.22,.94,.09,.82,.98,.72,.89,.58,.15,.26,.31,.55,.89,.35,.04,.59,.93,.38,.09,.56,.36,.02,.72,.96,.05,.69,.19,.98,.58,.82,.89,.2,.73,.31,.92,.85,.28,.95,.22,.81,.64,.09,.55,.18,.36,.26,.6,.13,.72,.47,.55,.63,.22,.28,.52,.35,.72,.53,.88,.59,.98,.69,.29,.55,.89,.52,.31,.61,.46,.25,.12,1,.75,.27,.67,.89,.99,.52,.3,.64,.93,.32,.2,.61,.89,.47,.23,.13,.42,.05,.86,.75,.41,.32,.72,.91,.59,.75,.11,.69,.78,.27,.02,.51,.73,.8,.57,.92,.45,.28,1,.11,.22,.78,.28,.67,.39,.24,0,.36,.65,.09,.53,.04,.8,.27,.17,.62,.34,.77,.42,.31,.15,.66,.2,.45,.98,.7,.39,.77,.13,.67,.47,.16,.33,.67,.28,.76,.84,.2,.48,.14,.56,.35,.51,.67,.29,.47,.09,.38,1,.56,.05,.64,.42,.7,.58,.05,.71,.5,.93,.77,.64,.11,.53,.4,.05,.95,.36,.14,.69,.99,.41,0,.47,.17,.79,.02,.35,.75,.44,.14,.02,.73,.2,.85,.09,.76,.91,.4,.49,.79,.02,.45,.34,.19,0,.72,.88,.48,.77,.26,.08,.71,.59,.99,.55,.27,.49,.94,0,.81,.27,.56,.16,.81,.24,.91,.08,.62,.84,.93,.68,.43,.06,.37,.84,.23,.87,.44,.73,.53,.16,1,.76,.6,.95,.71,.83,.24,.73,.33,.45,.92,.71,.82,.48,.1,.92,.55,0,.5,.34,.06,.78,.53,.03,.95,.43,.28,.95,.55,.78,.89,.61,.17,.43,.94,.33,.81,.22,.45,.91,.09,.74,.16,.69,.26,.83,.51,.15,.23,.78,.14,.36,.89,.16,.41,.22,.88,.44,1,.84,.67,.25,.85,.29,.79,.44,.16,.77,.86,.96,.27,.39,.83,.05,.25,.84,.5,.63,.98,.36,.64,.42,.58,.19,.68,.34,.22,.62,.16,.76,.68,.42,.25,.56,.13,.37,.53,.92,.05,.36,.84,.72,.17,.35,.56,.2,.64,.49,.08,.35,.99,.41,.47,.31,.67,.21,.33,.15,.27,.98,.12,.64,.03,.58,.37,.05,.91,.64,.44,.11,.33,.18,.48,.42,.15,.99,.17,.51,.09,.39,1,.27,.2,.73,.61,.27,.95,.84,.64,.28,.9,.66,.15,.84,.6,.73,.04,.22,.13,.5,.97,.08,.52,.67,.61,.86,.73,.03,.4,.84,.94,.63,.42,.05,.76,.3,.87,.53,.02,.47,.99,.3,.69,.03,.57,.29,.07,.33,.16,.5,.73,.07,.58,.89,.09,.64,.3,.58,.15,.67,.45,.56,.64,.94,.31,.7,.25,.13,.93,0,.29,.84,.04,.94,.11,.86,.56,.95,.09,.89,.8,.04,.97,.67,.82,.3,.42,.65,.23,.02,.8,.91,.7,.12,.76,.87,.42,.71,.64,.03,.57,.87,.44,.11,.56,.48,.85,.63,.75,.51,.8,.93,.7,.31,.83,.25,.06,.8,.55,.84,.04,.91,.56,.77,.67,.86,.22,.02,.56,.67,.06,.39,.84,.69,.12,.77,.41,.09,.21,.35,.49,.24,.09,.4,.86,.47,.33,.81,.6,.25,.79,.04,.37,.09,.98,.3,.57,.23,.33,.54,.14,.92,.63,.38,.96,.6,.74,.82,.25,.55,.8,.73,.13,.48,.69,.78,.91,.63,.44,.2,.93,.35,.7,.23,.52,.07,.75,.91,.33,.97,.09,.16,.78,.09,.4,.55,.8,.51,.73,.39,.62,.53,.79,.27,.38,.3,.61,.51,.35,.28,.58,.21,.07,.73,.19,.87,.5,.41,.63,.3,.45,1,.38,.05,.95,.2,.28,.84,.75,.15,1,.69,.78,.89,.04,.31,.38,.16,.29,.45,.13,.19,.48,.57,.39,.94,.65,.23,.69,.34,.27,.05,.45,.61,.31,.73,.89,.49,.79,.97,.45,.33,.2,.58,.47,.71,.82,.58,.98,.72,.34,.64,.96,.55,.7,.02,.39,.72,.2,.89,.29,.48,.17,.67,.79,.51,.01,.89,.8,.19,.69,.47,.09,.33,.22,.42,.64,.09,.34,.96,.38,.86,.22,.56,.01,.36,.83,.65,.03,.48,.37,.81,1,.41,.84,.2,.6,.27,.71,.38,.58,.84,.45,.89,.22,.33,.96,.1,.23,.45,.99,.7,.49,.06,.8,.16,.45,.72,.91,.4,.49,.96,.56,.11,.68,.94,.11,.58,.06,.23,.54,.3,.8,.45,.53,.1,.23,.36,.3,.01,.39,.22,.72,.47,.93,.7,.05,.55,.91,.66,.77,.85,.17,.31,.45,.75,.09,.6,.92,.4,.15,.95,.83,.44,.13,.35,.16,.22,.03,.53,.92,.04,.96,.31,.14,.41,0,.8,.46,.2,.11,.27,.92,.16,.32,.99,.45,.57,.72,.8,.6,.39,.11,.96,.64,.36,.3,.59,.25,.02,.85,.15,.69,.94,.04,.86,.19,.5,.66,.27,.97,.41,.11,.29,1,.15,.28,.56,.85,.19,.03,.58,.37,.11,.53,0,.87,.48,.23,1,.04,.71,.62,.13,.67,.91,.58,.31,.16,.01,.64,.91,.24,1,.2,.85,.11,.32,.78,.62,.28,.89,.33,.2,.48,.71,.88,.82,.67,.61,.14,.9,.68,.96,.72,.51,.81,.92,.64,.33,.07,.56,.2,.83,.63,.41,.24,.98,.1,.34,.71,.04,1,.36,.88,.44,.82,.69,.2,.55,.05,.67,.29,.65,.87,.58,.68,.85,.37,.65,.23,.87,.62,.69,.93,.14,.58,.89,.67,.42,.78,.61,.86,.65,.12,.34,.94,0,.22,.91,.47,.2,.08,.75,.43,.95,.53,.77,.9,.56,.49,.28,.77,.59,.43,.91,.1,.05,.62,.74,.88,.6,.51,.77,.69,.96,.11,.61,.73,.28,.69,.96,.79,.42,.81,.67,.12,.31,.53,.11,.26,.84,.47,.03,.79,.71,.88,.38,.2,.75,.42,.58,.68,.01,.56,.83,.14,.03,.37,.71,.06,.78,.98,.25,.36,.17,.41,.74,.02,.25,.34,.4,.63,.07,.6,.11,.53,.86,.78,.99,.14,.35,.75,.83,.33,.03,.52,.43,.89,.59,.08,.53,.26,.17,.02,.49,.91,.33,.18,.93,.46,.95,.07,.42,.76,.15,.27,.81,.44,.18,.53,.23,.37,.28,.52,.82,.04,.25,.52,.09,.47,.04,.24,.78,.42,.09,.88,.31,.71,.83,.62,.85,.16,.07,.35,.63,.42,.25,.97,.36,.67,.12,.23,.7,.33,.81,.53,.33,.2,.25,.05,.89,.41,.22,.46,.33,.92,.49,.23,.16,.63,.07,.34,.95,.59,.76,.36,.94,.78,.41,.55,.2,.28,.51,.11,.6,.83,.53,.07,.31,.77,.39,.65,.51,.25,1,.47,.82,.53,.41,.12,.54,.63,.05,.95,.49,.87,.56,.08,.87,.18,.31,.85,.47,.25,.17,.66,.44,.53,.88,.05,.15,.48,.68,.79,.27,.65,.22,.84,.77,.63,.97,.31,.58,.75,.41,.8,.56,.22,.75,.52,.3,.97,.1,.49,.73,.59,.03,.76,.95,.09,.67,.75,.4,.33,1,.73,.35,.79,.94,.55,.67,.17,.51,.63,.56,.06,.36,.28,.48,.69,.99,.83,.12,.19,.71,0,.1,.84,.54,1,.39,.76,.16,.47,.94,.67,.78,.48,.31,.07,.64,.77,.15,.87,.06,.76,.39,.92,.55,.24,.18,.04,.67,.5,.23,.7,.01,.34,.95,.81,.41,.93,.47,.27,.88,.14,.49,.96,.27,.2,.92,.75,.66,.11,.22,.58,.3,.87,.75,.45,.82,.28,.2,.36,.8,.64,.47,.77,.94,.2,.73,.97,.38,.01,.31,.22,.66,.27,.97,.6,.86,.18,.97,.11,.5,.33,.4,.13,.47,.67,.84,.09,.27,.66,.11,.38,0,.82,.2,.56,.4,.89,.05,.98,.32,.39,.82,.44,.2,.92,.09,.16,.58,.89,.2,.26,.4,.86,.32,.98,.83,.38,.78,.17,.99,.53,0,.24,.57,.31,.47,.88,.6,.8,.47,.2,.31,.8,.01,.58,.93,.29,.06,.11,.64,.39,.85,.58,.95,.35,.56,.66,.4,.58,.83,.3,.47,.75,.84,.42,.91,.83,.17,.57,.88,.64,.07,.72,.15,.65,.05,.34,.62,.73,.9,.09,.82,.45,.05,.58,.36,.87,.92,.67,.01,.67,.22,.09,.92,.58,.7,.11,.99,.16,.27,0,.66,.4,.05,.67,.56,.82,.75,.93,.5,.38,.77,.11,.28,.55,.37,.77,.67,.93,.03,.73,.9,.21,.38,.04,.98,.48,.86,.69,.91,.34,.65,.88,.6,.25,.69,.2,.55,.89,.62,0,.56,.85,.63,.49,.69,0,.56,.12,.71,.49,.08,.22,.72,.27,.12,.89,.43,.75,.91,.38,.79,.08,.67,.93,.33,.38,.95,.74,.61,.08,.49,.2,.65,.84,.42,.55,.99,.13,.72,.2,.01,.83,.24,.09,.99,.19,.03,.69,.09,.88,.58,.28,.07,.31,.45,1,.08,.5,.25,.56,.86,.23,.75,.99,.19,.41,.24,.67,.6,.13,.86,.41,.28,.06,.43,.17,.97,.37,.89,.33,.51,.01,.42,.76,.31,.5,.92,.55,.84,.35,.49,.11,.9,.47,.15,.09,.57,.2,.91,.42,.72,.05,.45,.06,.28,.85,.56,.35,.05,.55,.93,.44,.58,.16,.29,.53,.14,.23,.45,.05,.15,.35,.84,.47,.11,.28,.16,.73,.33,.41,.24,.8,.37,.97,.44,.63,.76,.05,.35,.59,.45,.03,.49,.67,.31,.11,.62,.16,.73,.52,.22,.06,.53,.16,.23,.67,.44,.95,.87,.37,.14,.72,.31,.78,.24,.88,.51,.28,.67,.46,.77,.31,.7,.5,.59,.95,.15,.36,.71,.48,.81,.13,.73,.2,.38,.78,.92,.43,.32,.51,.07,.8,.56,.01,.53,.36,.31,.97,.77,.19,.64,.8,.52,.73,.27,.47,.62,.8,.25,.67,.88,.19,.61,.73,.39,.24,.11,.61,.86,.2,.31,.25,.61,.82,.72,.01,.51,.25,.64,.85,.92,.62,.53,.15,.22,.67,.8,.28,.76,.7,.24,.77,.93,.44,.63,1,.78,.71,.95,.45,.77,.66,.95,.78,.69,.51,.99,.13,.91,.28,.07,.8,.33,.92,.18,.97,.81,.66,.94,.84,.58,.94,.2,.8,.47,.9,.34,.97,.84,.3,.69,.56,.86,.04,.36,.16,.26,.56,.98,.52,.19,.59,0,.34,.45,.95,.12,.57,.91,.16,.87,.35,.27,.78,.44,.22,0,.97,.6,.68,.53,.85,.29,.66,.12,.18,.97,.6,.48,.38,.29,.85,.95,.76,.47,.05,.68,.49,.93,.13,.57,.34,.84,.08,.55,.14,.41,.96,.34,.54,.1,.91,.03,.67,.95,.29,.79,.66,1,.54,.4,.95,.31,.66,.81,.98,.35,.08,.22,.79,.41,1,.44,.91,.49,.17,.11,.52,.87,.02,.37,.73,.06,.2,.51,.3,.11,.55,.02,.28,.4,.06,.34,.24,.82,.04,.58,.71,.53,.2,.11,.68,.38,.25,.53,.14,.31,.08,.4,.73,.06,.53,.27,.03,.4,.11,.61,.45,.99,.76,.11,.48,.83,.77,.69,.07,.8,.05,.94,.47,.81,.7,.09,.63,.85,.37,.05,.62,.41,.8,.05,.91,.52,.63,.83,.17,.34,.25,.95,.04,.59,.81,.47,.01,.67,.83,.14,.92,.72,.63,.1,.16,.83,.2,.55,.36,.02,.87,.23,.97,.03,.69,.92,.73,.06,.82,.14,.27,.83,.44,.32,.8,.16,.48,.41,.02,.8,.07,.73,.13,.44,.61,.09,.16,.7,.5,.31,.66,.02,.76,.29,.09,.62,.95,.41,.31,.64,.09,.48,.28,.84,.6,.38,.88,.63,.23,.97,.59,.18,.87,.56,.43,.62,.78,.47,.15,.88,.43,.84,.57,.49,.08,.88,.42,.76,.28,.17,.65,.37,1,.84,.69,.56,.77,.17,.36,0,.25,.41,.92,.55,.31,.47,.61,.38,.35,.64,.27,.89,.55,.22,.78,.34,.49,.73,.22,.47,.12,.57,.65,.32,.75,.93,.41,.06,.87,.41,.15,.34,.9,.53,.35,.75,.28,.2,.44,.07,.26,.42,.58,.91,.65,.29,.83,.3,.7,.42,.64,.2,.38,.31,.22,.51,.63,.7,.59,.97,.19,.63,.51,.91,.08,.56,.23,.35,.62,.18,.29,.9,.36,.49,.27,.78,.42,.96,.55,.15,.87,.69,.36,0,.85,.67,.25,.99,.58,.84,.68,.17,.91,.09,.8,.35,.73,.13,.85,.53,.71,.98,.09,.19,.37,.97,.31,.61,.75,0,.28,.95,.73,.59,.2,.52,.81,.95,.78,.42,.13,.6,.09,.22,.95,.51,.69,.89,.8,.16,.66,.22,.01,.91,.16,.85,.22,.74,.1,.16,.39,.95,.02,.27,.18,1,.85,.69,.97,.18,.4,.04,.13,.25,.53,.73,.66,.78,.48,.2,.71,.26,.99,.1,.58,.89,.66,.97,.51,.78,.34,.03,.43,.11,.96,.61,.17,.47,.81,.51,.89,.66,.44,1,.19,.3,.38,.47,.06,.78,.25,.38,.75,.64,.95,.88,.49,.85,.56,.78,.02,.86,.94,.57,.12,.85,.2,.47,.28,.58,.78,.2,.47,.58,.13,.75,.18,.39,.96,.34,.5,.44,.04,.53,.9,.47,.38,.24,0,.77,.29,.85,.67,.03,.25,.12,.97,.45,.69,.16,.35,.04,.99,.7,.1,.56,0,.25,.51,.76,.33,.88,.64,.28,.08,.6,.47,.33,.64,.99,.38,.69,.25,.94,.45,.58,.85,.49,.66,.6,.75,.89,.55,.64,.03,.31,.33,.88,.71,.49,.96,.61,.45,.08,.31,.58,.1,.91,.62,.05,.84,.42,.52,.34,.02,.73,.16,.88,.29,.99,.75,.51,.77,.39,.06,.91,.1,.59,.05,.77,.11,.56,.87,.01,.92,.75,.14,.87,.56,.01,.84,.31,.16,.42,.69,.05,.96,.24,.67,.41,.18,.64,.05,.73,.34,.64,.93,.09,.51,.98,.29,.8,.06,.89,.45,.01,.55,.12,.75,.7,.27,.18,.69,.05,.62,.81,.34,.47,.16,.5,.93,.55,.8,.65,.36,.51,.24,.79,.84,.65,.46,.25,.35,.46,.89,.71,.92,.2,.45,.39,.04,.82,.91,.22,.53,.85,.07,.73,.09,.58,.51,.73,.02,.37,.99,.3,.06,.35,.45,.14,.43,.36,.1,.53,.62,.78,.23,.85,.16,.69,.89,.21,1,.83,.38,.75,.45,.31,.18,.64,.8,.16,.54,.39,.6,.09,.49,.64,.14,.2,.86,.55,.25,.76,.28,.36,.16,.91,.26,.35,.78,.69,.23,.6,.32,.66,.42,1,.22,.47,.78,.1,.25,.33,.42,.16,.75,.53,.33,.99,.25,.39,.91,.01,.8,.41,.19,.88,.33,.71,.41,.54,.27,.73,.64,.25,.94,.62,.84,.99,.4,.29,.12,.96,.64,.92,.59,.73,.09,.42,.2,.91,.06,.86,.11,.4,.53,.32,.12,.91,.72,.62,.13,.33,.65,.03,.97,.72,.53,.16,.35,.72,.12,.95,.29,.48,.88,.81,.19,.32,.63,.07,.69,.2,.81,.87,.23,.72,.8,.91,.76,.45,.16,.06,.43,.58,.3,.38,.79,.02,.34,.69,.23,0,.96,.56,.73,.87,.09,.95,.3,.85,.94,.24,.7,.83,.35,.59,.08,.32,.69,.98,.66,.83,.45,.69,.6,.42,.51,.07,.47,.54,.95,.08,.28,.7,.08,.58,.54,.95,.71,.81,.62,.89,.28,.8,.01,.45,.83,.52,.6,.7,.31,.45,.75,.64,.03,.13,.61,.92,.34,.87,.8,.08,.41,.15,.35,.55,.78,.89,.73,.53,.21,.09,.37,.25,.31,.84,.48,.71,.29,.56,.96,.62,.03,.93,.78,.37,.06,.86,.21,.42,.84,.57,.27,.12,.9,.62,.44,.78,.02,.4,.59,.23,.43,.34,.09,.95,.81,.53,.91,.42,.61,.52,.95,.08,.31,.58,.2,.92,.85,.64,1,0,.75,.11,.51,.63,.48,.16,.9,.52,.13,.37,.25,.47,.23,.63,.7,.45,.11,.56,.39,.01,.25,.95,.42,.9,.49,.01,.4,.22,.54,.95,.02,.21,.97,.14,.82,.36,.18,.83,.49,.91,.75,.34,.87,.19,.01,.59,.49,.1,.96,.62,.12,.7,.77,.1,.2,.14,.99,.08,.23,.56,.48,.95,.22,.65,.09,.18,.49,.29,.89,.53,.01,.22,.09,.49,.17,.27,.42,.88,.8,.66,.98,.02,.6,.14,.43,.75,.2,.27,.49,.71,.2,.52,.27,.8,.55,.97,.08,.38,.78,.69,.47,.25,.99,.31,.67,.9,.78,.16,.94,.64,.77,.26,.45,.11,.25,.77,0,.16,.38,.64,.02,.5,.24,.68,.27,.35,.5,.22,.86,.93,.25,.74,.96,.31,.6,.78,.64,.84,.93,.04,.41,.76,.08,.26,.78,.17,.93,.88,.5,.73,.79,.18,.64,.14,.56,.89,.11,.31,.73,.86,.64,.28,.9,.76,0,.62,.37,.16,.25,.44,.65,.41,.28,.94,.2,.38,.47,.24,.91,.42,.27,.95,.37,.48,.57,.83,.91,.37,.8,.42,.84,.31,.55,1,.67,.44,.59,.96,.72,.63,.34,.94,.67,.56,.75,.01,.49,.14,.45,.77,.27,.95,.05,.82,.67,.36,.84,.09,.59,.98,.65,.44,.16,.7,.49,.62,.16,.33,.02,.84,.09,.55,.19,.51,.06,.69,.53,.01,.4,.58,.69,.85,.33,.48,.98,.29,.72,.83,.34,.96,.73,.4,.09,.55,.84,.67,.45,.58,.4,.19,.05,.86,.42,.21,.08,.31,.7,.58,.99,.53,.87,.36,.49,.73,.33,.64,.12,.22,.04,.38,.28,.85,.76,.45,.25,.67,.17,.47,.35,.71,.59,.44,.25,.72,.97,.58,.02,.81,.13,.91,.73,.42,.84,.05,.71,.86,.2,.55,.06,.62,.87,.78,.67,.32,.02,.7,.27,.16,.05,.75,.4,.07,.82,.2,.1,.28,.78,.44,.89,.05,.38,.1,.97,.34,.62,.92,.18,.36,.88,.66,.39,.49,.12,.91,.42,.78,.25,.31,.02,.9,.09,.28,.78,.24,.97,.87,.52,.39,.66,.79,.45,.95,.31,.24,.61,.84,.09,.89,.17,.37,.74,.09,.67,.44,.85,.55,.48,.14,.8,.62,.04,.94,.18,.29,.08,.15,.66,.83,.53,.12,.69,.45,.9,.15,.5,.12,.33,.19,.67,.01,.97,.63,.08,.44,.55,.84,.67,.99,.53,.71,.33,.04,.99,.8,.4,.54,.04,.23,.09,.94,.12,.33,.45,.86,.69,.53,.33,.04,.61,.15,.53,.78,.02,.38,.64,1,.35,.71,.05,.26,.11,.42,.19,.64,.98,.55,.69,.9,.51,.25,.63,.75,.91,.36,.16,.85,.26,.6,.8,.45,.86,.22,.71,.3,.56,.73,.13,.53,.2,.33,1,.03,.62,.16,.89,.47,.76,.62,.35,.93,.45,.04,.59,.44,.74,.18,.92,.27,.13,.85,.37,.75,.97,.3,.21,.52,1,.05,.59,.91,.54,.12,.27,.2,.08,.89,.31,.44,.91,.77,.38,.72,.89,.97,.33,.77,.36,.27,.78,.98,.56,.37,.75,.81,.24,.84,.44,.56,.2,.83,.25,.39,.95,.31,.6,.42,.07,.94,.2,.65,.49,.61,.12,.86,.75,.98,.46,.66,.53,.81,.22,.09,.28,.95,.77,.56,.99,.26,.65,.33,.57,.29,.12,.79,.51,.16,.45,.89,.95,.58,.5,.88,.11,.33,.45,.21,.95,.13,.34,.55,.01,.49,.66,.08,.53,.2,.72,.31,.16,.54,.08,.82,.05,.47,.94,.25,.69,.8,.58,.24,.71,.37,.55,.12,.82,.22,.56,.84,.67,.15,.89,.29,.07,.71,.35,.01,.71,.58,.05,.48,.12,.43,.71,.35,.78,.45,.28,.18,.83,.34,.95,.78,.58,.67,.17,.52,.25,.13,.58,.46,.24,.53,.02,.46,.93,.62,.15,.34,.04,.86,.42,.64,.04,.72,.92,.12,.3,.72,.89,.05,.75,.19,.1,.8,.25,.47,.13,.88,.36,.24,.95,.31,.42,.78,.18,.38,.84,.05,.62,.75,.38,.17,.47,.22,.34,.81,.11,.95,.89,.45,.75,.04,.9,.58,.65,.2,.36,.73,.07,.77,.4,.8,.59,.01,.66,.83,.44,.96,.71,.33,.58,.99,.75,.43,.93,.01,.67,.88,.42,.98,.42,.63,.83,0,.44,.87,.07,.46,.93,.66,.29,.96,.4,.51,.02,.28,.39,.72,.51,.22,.8,.55,.98,.48,.6,.89,.19,.67,.9,.79,.6,.06,.65,.23,.94,.7,.42,.62,.02,.72,.39,1,.05,.87,.7,.35,.82,.06,.63,.82,.69,.2,.87,.07,.52,.73,.22,.61,.11,.96,.27,.55,.37,.8,.47,.52,.15,.6,.82,.48,.37,.91,.61,.68,.55,.78,.03,.7,.17,.64,.08,.61,.25,.9,.51,.3,1,.43,.58,.84,.66,.08,.45,.85,.5,.19,.43,.61,.83,.23,.31,.42,.1,.82,.52,.85,.3,.23,.64,.17,.89,.28,.71,.37,.05,.2,.82,.88,.23,.05,.33,.13,.49,.78,.36,.58,.21,.76,.25,.13,.35,.6,.75,.15,.63,.31,.19,.77,.03,.85,.14,.71,.78,.17,.99,.32,.64,.92,.47,.15,.83,.22,.41,.29,.8,.53,.04,.27,.15,.87,.53,.83,.12,.47,.06,.91,.5,.27,.47,.35,.22,.59,.48,.96,.19,.92,.44,.35,.11,.58,.25,.44,.67,.84,.29,.91,.2,.34,.49,.76,.08,.23,.99,.05,.69,.43,.28,.89,.21,.73,0,.32,.4,.96,.3,.46,.84,.53,.92,.34,.05,.71,.15,.67,.24,.89,.02,.13,.78,.91,.63,0,.29,.74,.06,.15,.36,.53,.67,.96,.76,.28,.04,.15,.45,.96,.5,.93,.11,.41,.79,.5,.59,.29,.12,.41,.48,.64,.9,.84,.61,.27,.95,.12,.31,.67,.53,.91,.18,.97,.29,.39,.94,.81,.07,.45,.58,.24,.63,.31,.91,.47,.55,.09,.01,.37,.65,.31,.05,.75,.07,.95,.16,.35,.42,.98,.74,.31,.41,.02,.77,.57,.31,.77,.15,.86,.09,.75,.82,.41,.01,.67,.11,.27,.73,.16,.78,.91,.39,.75,.97,.01,.36,.78,.53,.69,.83,.15,.65,.61,.39,.85,.32,.95,.03,.65,.55,.44,.86,.18,.84,.08,.58,.76,.38,.13,.69,.43,.81,.56,.41,.09,.49,.82,.56,.31,.27,.4,.72,.35,.56,.91,.23,.69,.98,.11,.86,.16,.5,.69,.63,.89,.58,.67,.01,.35,.53,.23,.97,.16,.91,.76,.65,.95,.16,.8,.28,.55,.18,.05,.69,.47,.84,.02,.73,.37,.8,.64,.51,.11,.69,.53,.89,.35,.5,.74,.95,.37,.06,.67,.86,.75,.81,.23,.97,.58,.89,.53,.69,.47,.65,.84,.59,.5,.66,.19,.47,.91,.27,.68,.98,.22,.38,.64,.93,.53,.92,.14,.72,.38,.85,.55,.9,.48,.65,.31,.55,.16,.11,.58,.48,.66,.14,.97,.03,.43,.95,.29,.74,.19,.78,.56,.4,.15,.79,.09,1,.24,.66,.52,.2,.94,.02,.25,.84,.5,.2,.97,.86,.76,.35,.19,.64,.97,.52,.08,.99,.22,.8,.66,.36,.5,.78,.45,.61,0,.37,.22,1,.4,.34,.13,.75,.83,.62,.67,.05,.47,.2,.55,.31,.5,0,.7,.37,.07,.46,.91,.38,.8,.16,.95,.58,.1,.44,.06,.89,.22,.37,.25,.72,.15,.87,.01,.41,.54,.15,.28,.22,.42,.53,.12,.71,.19,.44,.35,.13,.89,.27,.05,.22,.11,.82,.05,.96,.6,.37,.11,.44,.81,.6,.3,.05,.2,.62,.27,.78,.31,.46,.6,.24,.01,1,.05,.84,.34,.8,.26,.92,.06,.41,.24,.33,.56,.9,0,.52,.11,.48,.24,.71,.92,.29,.48,.59,.35,.74,.44,.88,.31,.68,.55,.98,.09,.3,.63,0,.25,.94,.71,.04,.44,.75,.6,.16,.45,.12,.86,.56,.03,.19,.27,.34,.89,.56,.84,.08,.78,.2,.86,.27,.45,.16,.88,.3,.84,.69,.39,.08,.84,.56,.22,.98,.74,.85,.65,.25,.55,.34,.27,.44,.23,.7,.31,.77,.56,.84,.03,.62,.3,.99,.2,.69,.82,.93,.46,.62,.98,.3,.89,.46,.05,.64,.99,.21,.78,.58,.93,.76,.89,.34,.54,.69,.24,.87,.17,.54,0,.88,.73,.51,.42,.37,.07,.52,.98,.15,.09,.77,.37,.42,.2,.72,.48,.63,.86,.18,.7,.83,.62,.75,.22,.8,.35,.64,.84,.98,.06,.62,.83,.4,.2,.69,.05,.82,.11,.15,.61,.8,.29,.74,.38,.15,.68,.53,.44,.61,.15,.88,.35,.22,.83,.67,.89,.52,.31,.95,.88,.73,.93,.64,.73,.19,.43,.53,.03,.66,.59,.98,.04,.75,.51,.36,.01,.81,.99,.26,.77,.93,.42,.11,.52,.33,.12,1,.05,.62,.74,.92,.84,.6,1,.15,.45,.75,.96,.44,.51,.66,.1,.25,.59,.16,.8,.71,.04,.17,.58,.76,.85,.29,.73,.51,.01,.31,.4,.52,.43,.29,.79,.14,.43,.75,.64,.96,.47,.24,.14,.98,.81,.87,.69,.91,.22,.82,.72,.93,.53,.82,.6,.1,.95,.04,.44,.3,.58,.36,.91,.06,.5,.7,.12,.41,.27,.67,.33,.17,.53,.02,.88,.94,.55,.29,.97,.5,.39,.05,.46,.05,.64,.78,.92,.23,.06,.83,.31,.55,.11,.91,.29,.01,.35,.73,.08,.66,.15,.55,.4,.05,.13,.96,.29,.72,.92,.47,.31,.53,.4,.13,.96,.61,.58,.44,.16,.12,.62,.36,.18,.67,.8,.28,.6,.42,.69,.83,.13,.51,.05,.27,.4,.02,.64,.28,.11,.18,.81,.76,.33,.47,.73,.39,.09,.33,.84,.39,.67,.24,.36,.07,.4,.81,.63,.18,.72,.07,.17,.64,.99,.01,.51,.31,.08,.74,.34,.42,.69,.08,.31,.59,0,.45,.58,.4,.04,.33,.67,.16,.92,.41,.23,.53,.75,.98,.01,.51,.16,.94,.27,.58,1,.17,.53,.8,.89,.42,.75,.23,.65,.13,.45,.23,.64,.91,.73,.19,.95,.88,.5,.35,.89,.41,.74,.38,.96,.68,.78,.48,.39,.55,.94,.22,.42,.27,.84,.36,.24,.51,.66,.85,.57,.36,.16,.89,.07,.24,.81,.73,.28,.09,.23,.91,.52,.72,.47,.29,.9,.56,.03,.95,.2,.87,.08,.33,.37,.18,.66,.83,.53,.92,.88,.33,.58,.92,.05,.36,.91,.83,.02,.97,.24,.52,.59,.94,.02,.45,.98,.6,.16,.93,.45,.85,.98,.67,.82,.25,.6,.37,.84,.94,.26,.61,.2,.91,.76,.55,.22,.75,.28,.13,.33,.65,.26,.49,.14,.27,.77,.73,.33,.67,.15,.8,.23,.66,.4,.76,.45,.03,.85,.72,.09,.38,.03,.58,.99,.31,.81,.37,.77,.71,0,.36,.25,.82,.59,.22,.14,.56,.03,.19,.67,.13,.47,.2,.04,.65,.71,.14,.81,.61,.48,.76,.08,.61,.99,.76,.47,.22,.01,.62,.25,.69,.77,.61,.93,.45,.53,.85,.76,.33,.67,.95,.02,.82,.08,.48,.37,.72,.45,.78,.53,.95,.47,.89,.76,.31,.11,.7,.5,.22,.67,.47,.55,.23,.62,.15,.52,.64,.89,.75,.13,.28,.8,.17,.71,.87,.55,.24,.08,.36,.26,.55,.03,.47,.91,.72,.19,.56,.05,.83,.52,.11,.86,.16,.39,1,.81,.68,.87,.95,.75,.84,.98,.45,0,.57,.09,.85,.36,.45,.58,.87,.09,.66,.22,.36,.64,.31,.51,.96,.22,.7,.11,.49,.59,.07,.53,.16,.86,.56,.11,.69,.34,.43,.7,.28,.99,.6,.83,.25,.58,.93,.33,.18,.99,.27,.04,.86,.18,.32,.57,.03,.88,.3,.09,.41,.89,.8,.46,.41,.12,.34,.19,0,.67,.14,.42,.05,.22,.37,.6,.25,.69,1,.22,.65,.05,.34,.14,.65,.22,.01,.58,.44,.25,.15,.8,.08,.84,.29,.73,.09,.44,.96,.21,.33,.42,.17,.48,.93,.63,.33,.52,.11,.29,.67,.73,.6,.14,.87,.41,.76,.31,.11,.45,.71,.4,.99,.44,.3,.6,.47,.64,.44,.1,.51,.18,.02,.44,.09,.62,.35,.88,.49,.94,.2,.96,.07,.73,.26,.33,.97,.83,.58,.9,.24,.75,.61,.8,.29,.41,.91,.19,.87,1,.41,.3,.94,.45,.49,.97,0,.78,.85,.36,.1,.49,.9,.02,.74,.55,.81,.47,.37,.69,.52,.98,.71,.93,.45,.18,.69,.6,.95,.75,.09,.52,1,.84,.66,.5,.89,.38,.8,.5,1,.8,.13,.44,.86,.77,.12,.42,.85,.91,.26,.56,.85,.71,.29,.94,.55,.96,.36,.6,.4,1,.14,.91,.8,.29,.69,.56,.05,.81,.67,.06,.56,.42,.07,.84,.77,.37,.47,.9,.79,.32,.51,.94,.2,.06,.62,.89,.25,.78,.14,.73,0,.68,.95,.05,.24,.92,.35,.62,.37,.55,.22,.7,.19,.65,.25,.6,.43,.29,.63,.12,.91,.54,.18,0,.49,.14,.06,.46,.35,.16,.65,.85,0,.67,.35,.25,.58,.66,.05,.88,.17,.75,.08,.64,.45,.54,.76,.31,.71,.42,.37,.88,.08,.62,.91,.3,.1,.41,.64,.12,.25,.55,.84,.16,.34,.54,.19,.29,.02,.56,.25,.96,.06,.3,.62,.25,.69,.58,.93,.53,.18,.33,.53,.58,.16,.78,.38,.98,.08,.42,.79,.16,.04,.85,.73,.28,.52,0,.64,.39,.51,.05,.77,.88,.47,1,.36,.79,.22,.71,.96,.25,.16,1,.01,.19,.45,.04,.71,.65,.34,.58,.97,.51,.33,.07,.59,.36,.89,.2,.34,.77,.58,.83,.48,.75,.88,.28,.79,.94,.42,.05,.8,.16,.72,.55,.78,.48,.82,.44,.62,.75,.4,.8,1,.7,.04,.93,.49,.56,.24,.44,.75,.12,.8,.09,.76,.24,.61,.33,.91,.25,.21,.15,.92,.06,.22,.17,.64,.28,.13,.22,.73,.55,.85,.22,.47,.88,.39,.77,.48,.05,.42,.64,.85,.73,.92,.17,.39,.75,.58,.8,.94,.1,.35,.04,.3,.64,.73,.01,.92,.28,.08,.48,.7,.03,.61,.52,.35,.69,.65,.45,.07,.89,.66,.77,.25,.55,.18,.94,.35,.14,.27,.11,.63,.29,.92,.03,.61,.45,.69,.59,.81,.29,.63,.98,.16,.25,.84,.78,.12,.42,.83,.65,.95,.27,.45,.8,.53,.14,.7,.02,.22,.14,.98,.7,.06,.53,.34,.75,1,.09,.34,.88,.02,.24,.37,.05,.29,.95,.25,.67,.41,.53,.21,.84,.37,.09,.78,.63,.93,.52,.91,.47,.34,.55,.82,.38,.48,.59,.96,.4,.68,.61,.84,.99,.78,.53,.68,.93,.4,.16,.04,.78,.53,.72,.01,.98,.27,.92,.79,.23,.05,.6,.32,.78,.64,.08,.45,.2,.16,.53,.77,.45,.83,.09,.39,.69,.45,.83,.64,.72,.24,.31,.89,.23,.11,1,.22,.34,.56,.12,.18,.36,.95,.11,.83,.62,.41,.56,.67,.85,.4,.15,.48,.86,.35,.21,.49,.12,.36,.73,.52,.84,.07,.53,.45,0,.28,.73,.19,.48,.11,.56,.85,.07,.41,.28,.97,.36,.65,.43,.1,.58,.47,.16,.91,.58,.44,.52,.84,.4,.17,.99,.67,.87,.72,.56,.09,.18,.88,.31,.75,.27,.63,1,.33,.15,.05,.28,.39,.19,.64,.99,.14,.05,.87,.71,.02,.82,.28,.37,.55,.44,.07,.34,.83,.02,.49,.97,.64,.27,.19,.33,.11,.62,.68,.12,.58,.98,.44,.38,.12,.47,.87,.25,.51,.85,.67,.42,.9,.23,.98,.61,.25,.89,.2,.97,.36,.13,.54,.95,.43,.77,.84,.51,.37,.94,.82,.45,.86,.5,.69,.31,.47,.02,.73,.95,.2,.51,.78,.7,.56,.09,.66,.78,.95,.88,.07,.92,.22,.41,.33,.76,.9,.38,.98,.63,.05,.93,.3,.76,.16,.61,.67,.89,.46,.56,.85,.78,.23,.35,.87,.64,.25,.11,.2,.69,.25,.64,.74,.59,.5,.15,.22,.46,.91,.35,.6,.06,.81,.47,.05,.72,.42,.89,.56,.67,.84,.01,.73,.27,.44,.65,.17,.33,.78,.1,.52,.73,.03,.2,.94,.42,.59,.26,.66,.76,.38,.91,.95,.6,.84,.22,.41,.36,.52,.17,.76,.88,.53,.23,.97,.03,.71,.36,.95,.02,.32,.72,.15,.49,.76,.11,.56,.03,.44,.78,.86,.18,.66,.06,.27,.59,.01,.75,.16,.28,.94,.04,.6,.77,.9,.23,.83,.3,.09,.89,0,.24,.97,.82,.27,.03,.42,.3,.64,.45,.13,.69,.97,.6,.19,.66,.22,.52,.87,.42,.69,.39,.99,.3,.06,.75,.18,.1,.3,.49,.95,.71,.02,.81,.4,.73,.86,.05,.95,.11,.42,.29,.08,.93,.41,.83,0,.76,.52,.98,.13,.58,.89,.19,.53,.82,.33,.22,.76,.52,.95,.09,.78,.91,.56,.29,.47,.64,.95,.18,.88,.72,.63,.12,.9,.2,.33,.08,.45,.11,.68,.42,.53,.79,.9,.71,.02,.84,.27,.04,.69,.83,.57,.31,.75,.12,.25,.78,.63,.55,.05,.42,.87,.33,.52,.71,.24,.61,.3,.02,.57,.74,.47,.87,.09,.66,.51,.71,.56,.08,.4,.16,.53,.12,.6,.41,.68,.45,.31,.63,.36,.44,.18,.59,.7,.23,.53,.77,.86,.27,.05,.5,.09,.31,.78,.11,.34,.8,.02,.21,.64,.49,.92,.24,.82,.62,.03,.89,.17,.61,.22,.53,.95,.34,.63,.48,.36,.55,.82,.89,.25,.76,.56,.65,.27,.71,.45,.22,.34,.69,.4,.11,.25,.66,.08,.95,.42,.16,.33,.6,.5,.22,.76,.98,.16,.85,.24,.42,.33,.49,.28,.76,.53,.86,.72,.56,.8,.23,.77,.07,.29,.16,.1,.96,.6,.32,.64,.92,.35,.07,.19,.39,.95,.59,.49,.19,.37,.81,.27,.94,.64,.18,.82,.91,.09,.98,.47,.41,.92,.35,.25,.96,.34,.78,.11,.37,.23,.82,.96,.27,.87,.35,.7,.49,.17,.8,.93,.56,.06,.75,.94,.49,.84,.99,.15,.04,.59,.37,.8,.9,.42,.71,.94,.48,.58,.25,.9,.55,.12,.78,.36,.44,.55,.99,.39,.66,.46,.12,.75,.44,.06,.18,.78,.28,.9,.2,.06,.7,.36,.61,.07,.33,.18,.95,.06,.64,.85,.28,.78,.97,.47,.73,.04,.47,.61,.86,.25,.7,.36,.04,.42,.09,.58,.37,.05,.67,.78,.89,.09,.36,.05,.42,.94,.02,.51,.86,.27,.63,.99,.55,.44,.25,.75,.46,.15,.43,.5,.61,.8,.46,.85,.56,.07,.86,1,.51,.11,.74,.46,.02,.6,.38,.15,.75,.65,.22,.8,.15,.69,.42,.17,.87,.44,.61,.91,.32,.64,.67,.45,.09,1,.89,.03,.27,.73,.14,.22,.87,.52,.13,.06,.35,.67,.42,.95,.2,.64,.24,.56,.03,.83,.17,.66,.05,.73,.45,.86,.27,0,.69,.13,.33,.71,.27,.77,.37,.31,.91,.67,.59,.93,.11,.75,.6,.42,.95,.5,.16,1,.85,.6,.38,.82,.17,.94,.53,.02,.61,.36,.88,.3,.8,.12,.55,.91,.07,.81,.63,.89,.69,.49,.71,.94,.54,0,.59,.24,1,.68,.17,.63,.29,.38,.15,.92,.37,0,.83,.67,.4,.06,.87,.2,1,.78,.24,.93,.05,.14,.28,.68,.43,.7,.16,.6,.36,.23,.97,.29,.69,.45,.34,.88,.08,.84,.54,0,.63,.58,.27,.99,.03,.75,.15,.5,0,.55,.76,.21,.62,.54,.85,.41,.49,.8,.31,.66,.25,.38,.6,.91,.3,.51,.71,.12,.31,.99,.63,.38,.27,.89,.42,.33,1,.19,.61,.94,.75,.57,.22,.92,.08,.55,1,.83,.1,.48,.25,.4,.01,.52,.68,.22,.1,.78,.4,.73,.45,.12,.52,.75,.49,.11,.45,.2,.84,.13,.58,.24,.98,.36,.66,.2,.45,.97,.16,.27,.85,.3,.19,.81,.37,.16,.45,.84,.56,.8,.47,.22,.97,.69,.6,.21,.71,.5,.78,.19,.94,.53,.81,.69,.55,.13,.28,.66,.38,.74,.98,.33,.24,0,.3,.91,.86,.58,.76,.12,.83,.55,.05,.27,.57,.44,.29,.75,.92,.09,.5,.72,.23,.54,.42,.87,.17,.82,.31,.05,.42,.33,.11,.6,.98,.07,.62,.42,.89,.7,.82,.21,.79,.07,.41,.87,.76,.45,.2,.09,.96,.55,.77,.14,.69,.39,.56,.11,.39,.8,.05,.87,.45,.69,.02,.62,.2,.75,.86,.69,.47,.99,.34,.85,.28,.57,.01,.21,.27,.91,.04,.31,.24,.62,.79,.33,.93,.39,.7,.18,.49,.72,0,.27,.77,.5,.35,.56,.03,.44,.08,.62,.27,.97,.73,.33,.11,.27,.72,.34,.83,.06,.46,.09,.81,.33,.12,.28,.63,.09,.36,.3,.01,.41,.89,.49,.56,.21,.61,.78,.89,.58,.75,.47,.17,.06,.5,.41,.96,.2,.79,.92,.73,.11,.98,.33,.83,.19,.67,.37,.81,.27,.06,.99,.71,.37,.94,.65,.79,.95,.19,.7,.35,.23,.91,.03,.17,.53,.02,.47,.15,.59,.93,.02,.53,.15,.84,.73,.51,.22,.01,.82,.49,.05,.26,.84,.47,.3,.52,.6,.16,.23,.4,.51,.95,.36,.04,.31,.82,.17,.09,.93,.64,.53,.89,.82,.63,.77,.68,.95,.87,.4,.72,.05,.65,.53,.92,.05,.8,.33,.6,.95,.43,.06,.73,.62,.95,.78,.91,.53,.11,.88,.68,.19,.41,.94,.03,.58,.13,.89,.55,.96,.61,.41,.94,.84,.47,.22,.97,.65,.83,.71,.18,.95,.03,.82,.11,.45,.09,.52,.79,.4,.67,.33,.89,.65,.01,.31,.62,.51,.38,.19,.61,.47,.23,.41,.88,.04,.95,.57,.64,.36,.26,.53,.12,.5,.27,.71,.46,.07,.84,.58,.46,.73,.98,.33,.85,.25,.95,.66,.37,.22,.68,.28,.43,.65,.34,.6,.94,.31,.62,.9,.69,.94,.16,.66,.96,.35,.78,.94,.72,.29,.16,.58,.91,.64,.22,.55,.4,.75,.44,.2,.69,.32,.08,.44,.36,.18,.58,.14,.99,.5,.25,.09,.29,.64,.44,.92,.13,.84,.64,.22,.86,.13,.36,.25,.69,.32,.42,.55,.06,.5,.62,.91,.66,.51,.8,.42,.31,.77,.13,.23,.7,.56,.01,.78,.44,.15,.5,.26,.61,.44,.33,.93,.5,.37,.2,.96,.25,.04,1,.22,.78,.44,.73,.16,.87,.42,.04,.78,.89,.05,.77,.56,.31,.47,.13,.7,.44,.84,.1,.61,.8,.17,.08,.88,.53,.92,.15,.3,.8,.39,.12,.65,.44,.56,.74,.3,.5,.82,.59,.91,.96,.02,.81,.11,.45,.4,.19,.78,.44,.33,.2,.02,.74,.25,.09,.49,.05,.88,.8,.43,.11,.49,.77,.86,.61,.03,.26,.12,.99,.46,.56,.15,.86,.51,.05,.83,.35,.18,.76,.86,.39,.8,.2,.24,.56,.37,.16,.48,.32,.69,.45,.17,.84,.02,.73,.24,.82,.3,.76,.17,.25,.39,.19,.67,.27,.64,.51,.07,.73,.34,.64,.89,.7,.57,.06,.9,.77,.08,.7,.24,.66,.86,.71,.33,.65,.13,.71,.6,.09,.25,.36,.59,.97,.67,.25,.55,.27,.69,.13,.97,.62,.8,.25,.9,.18,.01,.74,.91,.41,.96,.56,.35,.25,.41,.66,.01,.52,.19,.6,.76,.07,.39,.1,.89,.16,.1,.38,.06,.49,.17,.26,.87,.71,1,.11,.54,.04,.6,.8,.55,.87,.42,.58,.84,.63,.33,.55,.67,.25,.99,.03,.29,.47,.95,.8,.37,.86,.07,.65,.95,.27,.75,.45,.29,.62,.91,.56,.67,.13,.99,.53,.69,.05,.89,.72,1,.81,.08,.93,.55,.6,.98,.49,.89,.36,.97,0,.47,.88,.08,1,.83,.03,.92,.87,.42,1,.18,.11,.3,.19,.38,.99,.34,.2,.53,.87,.16,.59,.28,.02,.55,.86,.49,.4,.88,.53,.95,.82,.48,.07,.14,.82,.94,.43,.5,.37,.19,.72,.01,.53,.38,.77,.56,.49,.22,.28,.68,.64,.02,.78,.74,.6,.98,.86,.69,.26,.87,.94,.2,.69,.45,.98,.79,.72,.64,.32,.76,.53,.66,.06,.57,.31,.85,.27,.72,.39,.99,.06,.67,.15,.38,.22,.95,.07,.19,.74,.43,.35,.13,.7,.19,.53,.58,.73,.24,.39,.73,.02,.87,.64,.22,.7,.02,.44,.22,.35,.74,.06,.33,.76,.47,.27,.02,.58,.42,.75,.06,.34,.14,.27,.62,.09,.67,.41,.59,.73,.33,.55,.49,.37,.57,.33,.27,.79,.52,.4,.93,.5,.81,.09,.47,.69,.38,.8,.42,.1,.99,.8,.44,.16,.93,.29,.33,.18,.02,.67,.22,.3,.52,.34,.63,0,.75,.84,.25,.94,.43,.09,.98,.33,.64,.94,.35,.05,.83,.47,.22,.94,.12,.44,.31,.08,.41,.15,.46,.31,.81,.61,.03,.53,.27,.47,.22,.84,.92,.44,.36,.23,.77,.16,.66,.92,.11,.18,.47,.3,.52,.91,.05,.75,.47,.37,.85,.9,.6,.55,.83,.89,.33,.64,.03,.29,.94,.5,.18,.6,.35,.1,.95,.8,.47,.09,.95,.61,.44,.58,.91,.41,.61,.2,.36,.64,.25,.89,.28,.81,.71,.42,.8,.18,.53,.27,.93,.21,.8,.65,.09,.16,.78,.12,.65,.01,.61,.85,.71,.04,.62,.75,.88,.56,.01,.28,.91,.5,.67,.36,.22,.75,.05,.8,.55,.73,.64,.37,.93,.76,.88,.7,.16,.22,.9,.58,.15,.53,.84,.67,.6,.16,.25,.86,.14,.55,.76,.14,.52,.85,.28,.17,.48,.77,.91,.55,.01,.65,.48,.24,.34,.67,.14,.9,.01,.56,.11,.14,.83,.95,.45,.88,.4,.49,.83,.64,.78,.24,.84,.6,.8,.27,.58,.71,0,.29,.14,.23,.69,.41,.09,1,.45,.13,.63,.81,.29,.98,.55,.4,.14,.51,.33,.89,.27,.78,0,.2,.83,.12,.53,.96,.8,.13,.5,.19,.63,.46,.9,.06,.51,.92,.74,.83,.14,.05,.43,.94,.25,.71,.95,.2,.38,.94,.47,.24,.16,.55,.31,.28,.13,.16,.96,.74,.61,.21,.06,.53,.96,.6,.67,.09,.47,.99,.12,.83,.43,.58,.04,.42,1,.31,.47,.09,.34,.65,.29,.21,.81,.45,.05,.79,.67,.41,.99,.33,.71,.37,.56,.67,.84,.25,.63,.35,.98,.77,.11,.88,.95,.78,.51,.4,.75,.61,.29,.71,.49,.01,.28,.6,.05,.23,.58,.36,.01,.95,.12,.34,.44,.97,.13,.89,.51,.63,.8,.99,.03,.49,.26,.78,.87,.35,.71,.05,.44,.08,.78,.67,.24,.98,.73,.16,.51,.67,.97,.39,.24,.88,.05,.73,.44,.85,.7,.98,0,.54,.21,.67,.33,.03,.25,.47,.36,.67,.52,.29,.87,.42,.49,.55,.71,.82,.07,.34,.7,.89,.45,.94,.66,.41,.52,.09,.34,.77,.25,.88,.11,.32,.41,.19,.89,.25,.31,.51,.19,.09,.24,.66,.53,.78,.69,.92,.82,.49,.05,.73,.36,.95,.52,.59,.19,.89,.07,.25,.64,.01,.9,.09,1,.03,.72,.19,.83,.38,.17,.58,.39,.04,.85,.18,.99,.34,.8,.9,.21,.64,.75,.13,.79,.99,.08,.91,.42,.65,.54,.74,.03,.19,.67,.35,.25,.43,.11,.33,.76,.62,.15,.72,.51,.21,.56,.84,.91,.49,.31,.86,.61,.08,.6,.41,.72,.11,.3,.44,.65,.71,.35,.29,.61,.09,.4,.33,.75,.13,.95,.84,.6,.44,.99,.63,.91,.61,.83,.16,0,.63,.08,.89,.15,.29,.56,.75,.96,0,.22,.53,.82,.71,.23,.84,.55,.96,.62,.44,.72,.47,.84,.56,.73,.64,0,.8,.69,.95,.87,.47,.12,.37,.03,.25,.41,.98,.13,.91,.57,0,.72,.29,.35,.47,.58,.81,.92,.49,.75,.34,.39,.47,.54,.3,.05,.69,.45,.74,.2,.62,.29,.69,.08,.23,.47,.41,.07,.53,.92,.37,.43,.69,.28,.51,.73,.18,.27,.87,.49,.61,.82,.05,.96,.72,.46,.87,.57,.37,.96,.29,.09,.94,.42,.13,.25,.73,.18,.02,.45,.36,.82,.05,.23,.56,.84,.78,.54,.09,.49,.92,.16,.24,.9,.47,.84,.44,.25,.36,.15,.78,.11,.31,.04,.17,.37,.97,.67,.32,.8,.25,.44,.93,.19,.49,.39,.63,.77,.08,.35,.04,.94,.45,.15,.01,.37,.18,.83,.03,.95,.35,.08,.42,.89,.55,.36,.58,.28,.81,.19,.87,.6,.7,.19,.58,.68,.33,.19,.42,.92,.1,.84,.73,.16,.42,.23,.11,.55,.18,.61,.86,.14,.95,.58,.93,.28,.07,.98,.47,.13,.45,.53,.88,.15,.66,.98,.33,.23,.84,.17,.65,.87,.13,.58,1,.36,.08,.92,.4,.3,.53,.83,.16,.65,.27,.2,.03,.83,.66,.49,0,.75,.67,.33,.59,.95,.58,.92,.28,.78,.99,.48,.89,.15,.04,.99,.22,.81,.41,.67,.77,.05,.58,.18,.64,.04,.72,.89,.67,.42,.81,.55,.73,.25,.51,.77,.18],yi=Ue({name:"SC-system-filter-do-not-remove"}),FilterEngine=function(){return this.cache=null,this.actions=[],this};let bi=FilterEngine.prototype=Object.create(Object.prototype);bi.type="FilterEngine";let Si=1e3;const ki=function(t){t.toFixed&&!isNaN(t)&&t>=200&&t<=1e4&&(Si=t)};bi.action=function(t){let{identifier:e,filters:i,image:s}=t,{workstoreLastAccessed:n,workstore:r,actions:o,theBigActionsObject:a}=this,l=Object.keys(r),h=Date.now()-Si;for(let t,e=0,i=l.length;e0?255:0}return r},bi.buildImageGrid=function(t){let{cache:e,workstore:i,workstoreLastAccessed:s}=this;t||(t=e.source);let{width:n,height:r}=t;if(n&&r){let t=`grid-${n}-${r}`;if(i[t])return s[t]=Date.now(),i[t];let e=[],o=0;for(let t=0;t0;t-=e)for(let t=0;t0;t-=e)t0;t-=n)for(let t=0;t0;t-=n)t=u&&(t=u-i-1),e+(s=s.toFixed&&!isNaN(s)?s:1)>=d&&(e=d-s-1),t<1&&(t=1),e<1&&(e=1),t+i>=u&&(i=u-t-1),e+s>=d&&(s=d-e-1);let o=t+i,a=e+s;(n=n.toFixed&&!isNaN(n)?n:0)<0&&(n=0),n>=o&&(n=o-1),(r=r.toFixed&&!isNaN(r)?r:0)<0&&(r=0),r>=a&&(r=a-1);const l=`alphatileset-${u}-${d}-${t}-${e}-${i}-${s}-${n}-${r}`;if(h[l])return c[l]=Date.now(),h[l];let f,p,m,g,y,b,S,k=[];for(g=r-a,y=d;g=0&&b=0&&e=0&&b=0&&e=0&&b=0&&e=0&&b=0&&e=l&&(t=l-1),(e=e.toFixed&&!isNaN(e)?e:1)<1&&(e=1),e>=h&&(e=h-1),(i=i.toFixed&&!isNaN(i)?i:0)<0&&(i=0),i>=t&&(i=t-1),(s=s.toFixed&&!isNaN(s)?s:0)<0&&(s=0),s>=e&&(s=e-1);const n=`simple-tileset-${l}-${h}-${t}-${e}-${i}-${s}`;if(o[n])return a[n]=Date.now(),o[n];const r=[];for(let n=s-e,o=h;n=0&&r=0&&e=d&&(m=d-1),r.substring?g=Math.round(parseFloat(r)/100*f):r.toFixed&&!isNaN(r)&&(g=r),g<0?g=0:g>=f&&(g=f-1),o.toFixed&&!isNaN(o)&&(y=o);let S=`${b}-tileset-${d}-${f}-${l}-${h}-${p}-${m}-${g}-${y}`;if("points-array"===b?S+=`-${t.join(",")}`:"random-points"===b&&(S+=`-${t}-${a}`),c[S])return u[S]=Date.now(),c[S];if("rect-grid"===b&&1===l&&1===h)return c[S]=[],u[S]=Date.now(),[];const k=fi(),A=[m,g],O=[0,0];let v,x,C,w,P,D,R,F,E=[],M=[],H=[],I=[],B="";"hex-grid"===b&&h/p<1.05&&(h=1.05*p);let T,L,$,j,X,Y,N,G,z,W=0,V=Math.floor(l/2),Z=Math.floor(h/2),_=2*p,U=Math.round(h/p*p),K=0;switch(b){case"rect-grid":if(B=`rect-grid-points-${d}-${f}-${l}-${h}-${m}-${g}`,c[B])u[B]=Date.now(),M=c[B];else{for(R=g-2*f+Z,F=g+2*f+Z;R-l&&P-h&&R=0&&C=0&&vp)continue;j=v*d+C,I[j]||(I[j]=[]),I[j].push(W)}W++}if(!H.length)return H;for(v=0;v{[P,R,$]=H[t],z=k.zero().add(O).subtract([P,R]).getMagnitude(),(X<0||z=0&&E[X].push(N);return pi(k),E=E.filter((t=>null!=t)),c[S]=E,u[S]=Date.now(),E}return[]},bi.buildHorizontalBlur=function(t,e){const{workstore:i,workstoreLastAccessed:s}=this;e&&e.toFixed&&!isNaN(e)||(e=0);const n=t.length,r=t[0].length,o=`blur-h-${r}-${n}-${e}`;if(i[o])return s[o]=Date.now(),i[o];let a=[];for(let i=0;i=0&&o=0&&r=t&&(i=t-1),null==s||s<0?s=0:s>=e&&(s=e-1);const u=`matrix-${l}-${h}-${t}-${e}-${i}-${s}`;if(o[u])return a[u]=Date.now(),o[u];let d,f,p,m,g,y,b,S,k,A=c.length,O=[],v=[];for(p=-s,m=e-s;p=A&&(k-=A),S.push(k);v.push(S)}return o[u]=v,a[u]=Date.now(),v},bi.checkChannelLevelsParameters=function(t){const e=function(t,e=!1){if(t.toFixed)return t<0?[[0,255,0]]:t>255?[[0,255,255]]:isNaN(t)?e?[[0,255,255]]:[[0,255,0]]:[[0,255,t]];if(t.substring&&(t=t.split(",")),Array.isArray(t)){if(!t.length)return t;if(Array.isArray(t[0]))return t;if((t=t.map((t=>parseInt(t,10)))).sort(((t,e)=>t-e)),1==t.length)return[[0,255,t[0]]];let e,i,s=[];for(let n=0,r=t.length;n0){s=1-i;for(let t=0,e=n.length;t{for(e=y[r%4],i=0,s=t.length;i=0&&i=0&&s255*(t+e*(1-t));let[r,o,a]=this.getInputAndOutputLines(t),{width:l,height:h,data:c}=r,{width:u,height:d,data:f}=o,{width:p,height:m,data:g}=a;c.length;let y,b,S,k,A,O,v,x,C,w,P,D,R,F,E,M,H,I,B,T,L,{opacity:$,blend:j,offsetX:X,offsetY:Y,lineOut:N}=t;switch(null==$&&($=1),null==j&&(j=""),null==X&&(X=0),null==Y&&(Y=0),j){case"color-burn":const t=(t,e)=>1==e?255:0==t?0:255*(1-Math.min(1,(1-e)/t));for(b=0;b0==e?0:1==t?255:255*Math.min(1,e/(1-t));for(b=0;bt255*Math.abs(t-e);for(b=0;b255*(t+e-2*e*t);for(b=0;bt<=.5?t*e*255:255*(e+(t-e*t));for(b=0;bt>e?t:e;for(b=0;b255*(t+e);for(b=0;bt*e*255;for(b=0;bt>=.5?t*e*255:255*(e+(t-e*t));for(b=0;b255*(e+(t-e*t));for(b=0;b{let i=e<=.25?((16*e-12)*e+4)*e:Math.sqrt(e);return t<=.5?255*(e-(1-2*t)*e*(1-e)):255*(e+(2*t-1)*(i-e))};for(b=0;be*t+s*i*(1-e);for(b=0;b=t&&r<=s&&o>=e&&o<=n&&a>=i&&a<=h){c=!0;break}}p[e]=r,p[i]=o,p[s]=a,p[n]=c?0:f[n]}b?this.processResults(d,u,1-g):this.processResults(this.cache.work,d,g)},"clamp-channels":function(t){let e,i,s,n,r,o,a,l,h,[c,u]=this.getInputAndOutputLines(t),d=c.data,f=u.data,p=d.length,{opacity:m,lowRed:g,lowGreen:y,lowBlue:b,highRed:S,highGreen:k,highBlue:A,lineOut:O}=t;null==m&&(m=1),null==g&&(g=0),null==y&&(y=0),null==b&&(b=0),null==S&&(S=255),null==k&&(k=255),null==A&&(A=255);const v=S-g,x=k-y,C=A-b;for(h=0;hv?255:(s-O)/x*255};let i,s,n,r,o,a,l,[h,c]=this.getInputAndOutputLines(t),u=h.data,d=c.data,f=u.length,{opacity:p,red:m,green:g,blue:y,opaqueAt:b,transparentAt:S,lineOut:k}=t;null==p&&(p=1),null==m&&(m=0),null==g&&(g=255),null==y&&(y=0),null==b&&(b=1),null==S&&(S=0);let A=Math.max((m+g+y)/3,(255-m+(255-g)+(255-y))/3),O=S*A,v=b*A,x=v-O;for(let t=0;t=0&&i=0&&se*t*s+s*i*(1-e);for(x=0;x=0&&(g=m+1,y=g+1,b=y+1,k=S+1,A=k+1,O=A+1,C=l[b]/255,w=p[O]/255,u[m]=t(l[m],C,p[S],w),u[g]=t(l[g],C,p[k],w),u[y]=t(l[y],C,p[A],w),u[b]=255*(C*w+w*(1-C)));break;case"source-in":const s=(t,e,i)=>e*t*i;for(x=0;x=0&&(g=m+1,y=g+1,b=y+1,O=S+3,C=l[b]/255,w=p[O]/255,u[m]=s(l[m],C,w),u[g]=s(l[g],C,w),u[y]=s(l[y],C,w),u[b]=C*w*255);break;case"source-out":const r=(t,e,i)=>e*t*(1-i);for(x=0;x=0&&e(S,m,p);break;case"destination-atop":const h=(t,e,i,s)=>e*t*(1-s)+s*i*e;for(x=0;xe*t*(1-s)+s*i;for(x=0;xe*t*i;for(x=0;x=0&&(g=m+1,y=g+1,b=y+1,k=S+1,A=k+1,O=A+1,C=l[b]/255,w=p[O]/255,u[m]=d(p[S],C,w),u[g]=d(p[k],C,w),u[y]=d(p[A],C,w),u[b]=C*w*255);break;case"destination-out":const f=(t,e,i)=>i*t*(1-e);for(x=0;x=0&&(g=m+1,y=g+1,b=y+1,k=S+1,A=k+1,O=A+1,C=l[b]/255,w=p[O]/255,u[m]=f(p[S],C,w),u[g]=f(p[k],C,w),u[y]=f(p[A],C,w),u[b]=w*(1-C)*255);break;case"clear":break;case"xor":const P=(t,e,i,s)=>e*t*(1-s)+s*i*(1-e);for(x=0;xe*t+s*i*(1-e);for(x=0;xr&&(r=s);switch(y){case"lowest":return o;case"highest":return r;default:return a(o+(r-o)/2)}};let[i,s]=this.getInputAndOutputLines(t),n=i.data,r=s.data,o=n.length,a=Math.floor,{opacity:l,includeRed:h,includeGreen:c,includeBlue:u,includeAlpha:d,width:f,height:p,offsetX:m,offsetY:g,operation:y,lineOut:b}=t;null==l&&(l=1),null==h&&(h=!1),null==c&&(c=!1),null==u&&(u=!1),null==d&&(d=!0),(null==f||f<1)&&(f=3),(null==p||p<1)&&(p=3),null==m&&(m=1),null==g&&(g=1),null==y&&(y="mean");let S,k,A,O,v,x=this.buildMatrixGrid(f,p,m,g,i),C=a(o/4);for(v=0;v=0&&i=0&&s=0?(P=Math.floor(C+(127-p[E+x])/127*b),D=Math.floor(w+(127-p[E+M])/127*S),O?R=P<0||P>=o||D<0||D>=a?-1:4*(D*o+P):(P<0&&(P=0),P>=o&&(P=o-1),D<0&&(D=0),D>=a&&(D=a-1),R=4*(D*o+P)),e(R,F,l)):e(F,F,l);v?this.processResults(n,s,1-m):this.processResults(this.cache.work,n,m)},emboss:function(t){const e=function(t,e,i){let s=0;for(let n=0,r=e.length;n=v-c&&P<=v+c&&D>=x-c&&D<=x+c&&R>=C-c&&R<=C+c&&(u?r[O]=0:(r[S]=127,r[k]=127,r[A]=127))));f?this.processResults(s,i,1-a):this.processResults(this.cache.work,s,a)},flood:function(t){let e,i,s,[n,r]=this.getInputAndOutputLines(t),o=n.data,a=r.data,l=o.length,{opacity:h,red:c,green:u,blue:d,alpha:f,excludeAlpha:p,lineOut:m}=t;for(null==h&&(h=1),null==c&&(c=0),null==u&&(u=0),null==d&&(d=0),null==f&&(f=255),null==p&&(p=!1),e=0;e>8&255,h=o>>16&255,c=o>>24&255,v=a*s[6],x=l*s[6],C=h*s[6],w=c*s[6],S=v,k=x,A=C,O=w,M=s[0],H=s[1],I=s[4],B=s[5],E=0;E>8&255,f=o>>16&255,p=o>>24&255,m=u*M+a*H+S*I+v*B,g=d*M+l*H+k*I+x*B,y=f*M+h*H+A*I+C*B,b=p*M+c*H+O*I+w*B,v=S,x=k,C=A,w=O,S=m,k=g,A=y,O=b,a=u,l=d,h=f,c=p,i[R]=S,i[R+1]=k,i[R+2]=A,i[R+3]=O,R+=4,P++;for(P--,R-=4,D+=r*(n-1),o=t[P],a=255&o,l=o>>8&255,h=o>>16&255,c=o>>24&255,v=a*s[7],x=l*s[7],C=h*s[7],w=c*s[7],S=v,k=x,A=C,O=w,u=a,d=l,f=h,p=c,M=s[2],H=s[3],E=n-1;E>=0;E--)m=u*M+a*H+S*I+v*B,g=d*M+l*H+k*I+x*B,y=f*M+h*H+A*I+C*B,b=p*M+c*H+O*I+w*B,v=S,x=k,C=A,w=O,S=m,k=g,A=y,O=b,a=u,l=d,h=f,c=p,o=t[P],u=255&o,d=o>>8&255,f=o>>16&255,p=o>>24&255,o=(i[R]+S<<0)+(i[R+1]+k<<8)+(i[R+2]+A<<16)+(i[R+3]+O<<24),e[D]=o,P--,R-=4,D-=r}};let[c,u]=this.getInputAndOutputLines(t),d=c.data,f=u.data,{width:p,height:m}=c,{opacity:g,radius:y,lineOut:b}=t;null==g&&(g=1),null==y&&(y=1);const S=new Uint8ClampedArray(d),k=new Uint32Array(S.buffer),A=new Uint32Array(k.length),O=new Float32Array(4*Math.max(p,m)),v=function(t){t<.5&&(t=.5);let h=Math.exp(.527076)/t,c=Math.exp(-h),u=Math.exp(-2*h),d=(1-c)*(1-c)/(1+2*h*c-u);return e=d,i=d*(h-1)*c,s=d*(h+1)*c,n=-d*u,r=2*c,o=-u,a=(e+i)/(1-r-o),l=(s+n)/(1-r-o),new Float32Array([e,i,s,n,r,o,a,l])}(y);h(k,A,O,v,p,m),h(A,k,O,v,m,p),f.set(S),b?this.processResults(u,c,1-g):this.processResults(this.cache.work,u,g)},glitch:function(t){let e,i,s,n,r,o,a,l,h,c,u,d,f,p,m,g,y,b,S,k,A,O,v,x,C,[w,P]=this.getInputAndOutputLines(t),D=w.data,R=P.data,F=D.length,E=w.width,M=w.height,{opacity:H,useMixedChannel:I,seed:B,level:T,step:L,offsetMin:$,offsetMax:j,offsetRedMin:X,offsetRedMax:Y,offsetGreenMin:N,offsetGreenMax:G,offsetBlueMin:z,offsetBlueMax:W,offsetAlphaMin:V,offsetAlphaMax:Z,transparentEdges:_,lineOut:U}=t;null==H&&(H=1),null==I&&(I=!0),null==B&&(B="some-random-string-or-other"),null==T&&(T=0),null==L&&(L=1),null==$&&($=0),null==j&&(j=0),null==X&&(X=0),null==Y&&(Y=0),null==N&&(N=0),null==G&&(G=0),null==z&&(z=0),null==W&&(W=0),null==V&&(V=0),null==Z&&(Z=0),null==_&&(_=!1);const K=this.getRandomNumbers({seed:B,length:5*M}),q=j-$,Q=Y-X,J=G-N,tt=W-z,et=Z-V;let it=-1;const st=[];for(L=Math.floor(L),L<1&&(L=1),e=0;eg||vg||xg||Cg?0:D[C]):R[d]=D[C];U?this.processResults(P,w,1-H):this.processResults(this.cache.work,P,H)},grayscale:function(t){let e,i,s,n,r,o,[a,l]=this.getInputAndOutputLines(t),h=a.data,c=l.data,u=h.length,{opacity:d,lineOut:f}=t;null==d&&(d=1);const p=this.getGrayscaleValue;for(r=0;r=s&&t<=n)return r}};this.checkChannelLevelsParameters(t);let i,s,n,r,o,[a,l]=this.getInputAndOutputLines(t),h=a.data,c=l.data,u=h.length,{opacity:d,red:f,green:p,blue:m,alpha:g,lineOut:y}=t;for(null==d&&(d=1),null==f&&(f=[0]),null==p&&(p=[0]),null==m&&(m=[0]),null==g&&(g=[255]),o=0;ofunction(t,e,i){d.length=0,f.length=0;let s,n,r,a,l,h,p,m=0,g=i.length;for(i[0],s=0;s=0&&i=0&&r=0&&i=0&&r=0&&p=0&&m=0&&g=0&&y=0&&b=0&&Se+t[i+s]),0);n=Math.floor(n/i.length);for(let t=0,r=i.length;t{d?e(r,o,t,0):i(r,o,t,0),f?e(r,o,t,1):i(r,o,t,1),p?e(r,o,t,2):i(r,o,t,2),m?e(r,o,t,3):i(r,o,t,3)})),g?this.processResults(n,s,1-a):this.processResults(this.cache.work,n,a)},"process-image":function(t){const{assetData:e,lineOut:i}=t;if(i&&i.substring&&i.length){let{width:t,height:s,data:n}=e;if(t&&s&&n){let{width:e,height:r}=this.cache.source;if(e!==t||r!==s){let i,o,a,l,h=new ImageData(e,r).data,c=(e-t)/2,u=(r-s)/2;for(c<0&&(c=0),u<0&&(u=0),o=0;o=f)?(d[e]=u[e],d[i]=u[i],d[s]=u[s],d[n]=u[n]):(l<0?l+=f:l>=f&&(l-=f),!w||u[n]&&u[l+3]?(d[e]=O?u[l]:u[e],l++,d[i]=v?u[l]:u[i],l++,d[s]=x?u[l]:u[s],l++,d[n]=C?u[l]:u[n]):(d[e]=u[e],d[i]=u[i],d[s]=u[s],d[n]=u[n]))):(d[e]=u[e],d[i]=u[i],d[s]=u[s],d[n]=u[n])}P?this.processResults(c,h,1-m):this.processResults(this.cache.work,c,m)},"reduce-palette":function(t,e){this.predefinedPalette||(this.predefinedPalette={});this.colorSpaceIndices();const{rgbIndices:i,labIndices:s,indicesMemoRecord:n,predefinedPalette:r,getGrayscaleValue:o,tfx:a,tfx2:l,tfx3:h,indicesLen:c,labIndicesMultiplier:u}=this;let d;const f=(t,e)=>{if(t||(t=e.join(",")),t&&r[t])return r[t];const o=[];return e.forEach((t=>{yi.convert(t);const[e,r,h]=yi.rgb,c=e*l+r*a+h;if(o.push(c),!n[c]){n[c]=1;const[t,o,a]=yi.convertRGBtoOKLAB(e,r,h);let l=3*c;i[l]=e,s[l]=t*u,l++,i[l]=r,s[l]=o*u,l++,i[l]=h,s[l]=a*u}})),r[t]=o.sort(((t,e)=>t-e)),o};r["black-white"]||(f("black-white",["#000","#fff"]),f("monochrome-4",["#222","#777","#bbb","#fff"]),f("monochrome-8",["#000","#333","#555","#777","#999","#bbb","#ddd","#fff"]),f("monochrome-16",["#000","#111","#222","#333","#444","#555","#666","#777","#888","#999","#aaa","#bbb","#ccc","#ddd","#eee","#fff"]));const p=function(t,e){const s=e.length;if(!s)return 0;if(1===s)return e[0];const n=i[3*t];let r,o,a;const l=[];for(let t=0;tt[1]-e[1]));const[h,c]=l[0],[u,d]=l[1],f=c+d,p=f-c;return Z[P]*ft[1]-e[1]));const[k,A]=S[0],[O,v]=S[1];let x=Z[P];return y=A+v,b=y-A,x*=y,xe[1]-t[1])),f=0,p=r.length;f=n)break}else{for(g=i[m],m++,y=i[m],m++,b=i[m],O=!0,a=0,l=o.length;a=n)break}else o.push(t[0])}return o}(Q,z,X):[],F.length||(F=r["black-white"]),g=0;g<$;g++)P++,y=q[g],R=4*g,y<0?(T[R]=K[R],R++,T[R]=K[R],R++,T[R]=K[R],R++,T[R]=K[R]):(D=_?3*p(y,F):3*m(y,F),T[R]=i[D],R++,D++,T[R]=i[D],R++,D++,T[R]=i[D],R++,T[R]=K[R]);V?this.processResults(M,E,1-j):this.processResults(this.cache.work,M,j)},"set-channel-to-level":function(t){let e,i,s,n,r,[o,a]=this.getInputAndOutputLines(t),l=o.data,h=a.data,c=l.length,{opacity:u,includeRed:d,includeGreen:f,includeBlue:p,includeAlpha:m,level:g,lineOut:y}=t;for(null==u&&(u=1),null==d&&(d=!1),null==f&&(f=!1),null==p&&(p=!1),null==m&&(m=!1),null==g&&(g=0),r=0;r$){let t=j;j=$,$=t}const X=$-j;if(h=B-$,h<0&&(h=0),u=B+$,u>H&&(u=H),c=L-$,c<0&&(c=0),d=L+$,d>=I&&(d=I),h0&&c0){let e=E,o=E;st(e)?o=`ude-${e(0)}-${e(.1)}-${e(.2)}-${e(.3)}-${e(.4)}-${e(.5)}-${e(.6)}-${e(.7)}-${e(.8)}-${e(.9)}-${e(1)}`:e=null!=mt[e]?mt[e]:mt.linear;const H=`swirl-${a}-${v}-${x}-${C}-${P}-${o}-${D}-${R}`,I=this.getOrAddWorkstore(H);if(!I.length){const s=fi(),n=fi();for(s.setFromArray([B,L]),f=c;f$?g=i:m=D&&(k-=D),A<0?A+=R:A>=R&&(A-=R),g=4*t[A][k]):(O=1-(m-j)/X,O=e(O),n.rotate(P*O).add(s),k=F(n[0]),A=F(n[1]),k<0?k+=D:k>=D&&(k-=D),A<0?A+=R:A>=R&&(A-=R),g=4*t[A][k]),I.push(g);pi(n),pi(s)}let T=-1;for(f=c;fe+t[4*i+s]),0);n=Math.floor(n/i.length);for(let t=0,r=i.length;t{y?e(r,o,t,0):i(r,o,t,0),b?e(r,o,t,1):i(r,o,t,1),S?e(r,o,t,2):i(r,o,t,2),k?e(r,o,t,3):i(r,o,t,3)})):this.transferDataUnchanged(o,r,a),A?this.processResults(n,s,1-l):this.processResults(this.cache.work,n,l)},"tint-channels":function(t){let e,i,s,n,r,o,a,l,[h,c]=this.getInputAndOutputLines(t),u=h.data,d=c.data,f=u.length,{opacity:p,redInRed:m,redInGreen:g,redInBlue:y,greenInRed:b,greenInGreen:S,greenInBlue:k,blueInRed:A,blueInGreen:O,blueInBlue:v,lineOut:x}=t;for(null==p&&(p=1),null==m&&(m=1),null==g&&(g=0),null==y&&(y=0),null==b&&(b=0),null==S&&(S=1),null==k&&(k=0),null==A&&(A=0),null==O&&(O=0),null==v&&(v=1),r=0;r{const e=p[t];e&&(e.dirtyFilterIdentifier=!1)})),R.forEach((t=>{const e=D[t];e&&(e.dirtyFilterIdentifier=!1)}))}}),H.FilterEngine=FilterEngine;const Ai=new FilterEngine;function Oi(t=q){t.defs=at(t.defs,{sourceLoaded:!1,source:null,subscribers:null}),t.packetExclusions=ht(t.packetExclusions,["sourceLoaded","source","subscribers"]),t.finalizePacketOut=function(t,e){return this.subscribers&&this.subscribers.length&&(t.subscribers=this.subscribers.map((t=>t.name))),t},t.kill=function(t=!1){return t&&this.source&&this.source.remove(),this.deregister()},t.getters;const e=t.setters;return t.deltaSetters,e.source=function(t){t&&this.sourceLoaded&&this.notifySubscribers()},e.subscribers=Z,t.assetConstructor=function(t){return this.makeName(t.name),this.register(),this.subscribers=[],this.set(this.defs),this.set(t),t.subscribe&&this.subscribers.push(t.subscribe),this},t.subscribe=function(t){if(t&&t.name){const e=t.name;this.subscribers.every((t=>t.name!==e))&&this.subscribeAction(t)}},t.subscribeAction=function(t){t&&(this.subscribers.push(t),t.asset=this,t.source=this.source,this.notifySubscriber(t))},t.unsubscribe=function(t){if(t&&t.name){const e=t.name,i=this.subscribers.findIndex((t=>t.name===e));i>=0&&(t.source=null,t.asset=null,t.sourceNaturalHeight=0,t.sourceNaturalWidth=0,t.sourceLoaded=!1,this.subscribers.splice(i,1))}},t.notifySubscribers=function(){this.subscribers.forEach((t=>this.notifySubscriber(t)),this)},t.notifySubscriber=function(t){t.sourceNaturalWidth=this.sourceNaturalWidth,t.sourceNaturalHeight=this.sourceNaturalHeight,t.sourceLoaded=this.sourceLoaded,t.source=this.source,t.dirtyImage=!0,t.dirtyCopyStart=!0,t.dirtyCopyDimensions=!0,t.dirtyImageSubscribers=!0,t.dirtyFilterIdentifier=!0},t}const ImageAsset=function(t=q){return this.assetConstructor(t)};let vi=ImageAsset.prototype=Object.create(Object.prototype);vi.type="Image",vi.lib="asset",vi.isArtefact=!1,vi.isAsset=!0,vi=me(vi),vi=Oi(vi);vi.defs=at(vi.defs,{intrinsicDimensions:null}),vi.saveAsPacket=function(){return[this.name,this.type,this.lib,{}]},vi.stringifyFunction=Z,vi.processPacketOut=Z,vi.finalizePacketOut=Z,vi.clone=U;let xi=vi.getters,Ci=vi.setters;vi.deltaSetters,xi.width=function(){return this.sourceNaturalWidth||this.source.naturalWidth||0},xi.height=function(){return this.sourceNaturalHeight||this.source.naturalHeight||0},Ci.source=function(t){t&&(["IMG","PICTURE"].indexOf(t.tagName.toUpperCase())>=0&&(this.source=t,this.sourceNaturalWidth=t.naturalWidth,this.sourceNaturalHeight=t.naturalHeight,this.sourceLoaded=t.complete),this.sourceLoaded&&this.notifySubscribers())},Ci.currentSrc=function(t){this.currentSrc=t,this.currentFile=this.currentSrc.split("/").pop()},vi.checkSource=function(t,e){let i=this.source,s="element";if(this.sourceLoaded){let n=this.intrinsicDimensions[this.currentFile];switch(this.currentSrc!==i.currentSrc?(this.set({currentSrc:i.currentSrc}),n=this.intrinsicDimensions[this.currentFile],s=n?"intrinsic":"zero"):n&&(s="intrinsic"),s){case"zero":this.sourceNaturalWidth=0,this.sourceNaturalHeight=0,this.notifySubscribers();break;case"intrinsic":this.sourceNaturalWidth===n[0]&&this.sourceNaturalHeight===n[1]||(this.sourceNaturalWidth=n[0],this.sourceNaturalHeight=n[1],this.notifySubscribers());break;default:this.sourceNaturalWidth===i.naturalWidth&&this.sourceNaturalHeight===i.naturalHeight&&this.sourceNaturalWidth===t&&this.sourceNaturalHeight===e||(this.sourceNaturalWidth=i.naturalWidth,this.sourceNaturalHeight=i.naturalHeight,this.notifySubscribers())}}};const wi=[],Pi=[],Di=function(...t){let e=/.*\/(.*?)\./,i=[];return t.forEach((t=>{let s,n,r,o,a=!1,l=!1;if(t.substring){let i=e.exec(t);s=i&&i[1]?i[1]:"",n=t,r="",o=!1,l=!0}else(t=!!rt(t)&&t)&&t.src&&(s=t.name||"",n=t.src,r=t.className||"",o=t.visibility||!1,t.parent&&(a=document.querySelector(t.parent)),l=!0);if(l){let t=Hi({name:s,intrinsicDimensions:{}}),e=document.createElement("img");e.name=s,e.className=r,e.crossorigin="anonymous",e.style.display=o?"block":"none",a&&a.appendChild(e),e.onload=()=>{t.set({source:e})},e.src=n,t.set({source:e}),i.push(s)}else i.push(!1)})),i},Ri=function(t){let e=/.*\/(.*?)\./;document.querySelectorAll(t).forEach((t=>{let i;if(["IMG","PICTURE"].indexOf(t.tagName.toUpperCase())>=0){if(t.id||t.name)i=t.id||t.name;else{let s=e.exec(t.src);i=s&&s[1]?s[1]:""}let s=t.dataset.dimensions||{};s.substring&&(s=JSON.parse(s));let n=Hi({name:i,source:t,intrinsicDimensions:s,currentSrc:t.currentSrc});t.onload=()=>{n.set({source:t})}}}))},Fi=function(t,e=!1){let i=t.substring?u[t]||c[t]:t;"Canvas"===i.type&&(i=i.base),"Cell"===i.type&&(i.stashOutput=!0,e&&(i.stashOutputAsAsset=e))},Ei=function(t,e=!1){let i;t&&!t.substring?"Group"===t.type?i=t:"Cell"===t.type?i=g[t.name]:"Canvas"===t.type&&(i=g[t.base.name]):t&&t.substring&&(i=g[t]),i&&(i.stashOutput=!0,e&&(i.stashOutputAsAsset=e))},Mi=function(t,e=!1){let i=t.substring?o[t]:t;i.isArtefact&&(i.stashOutput=!0,e&&(i.stashOutputAsAsset=e))},Hi=function(t){return!!t&&new ImageAsset(t)};function Ii(t=q){t.defs=at(t.defs,{filters:null,isStencil:!1,memoizeFilterOutput:!1});let e=t.setters;return e.filters=function(t){Array.isArray(this.filters)||(this.filters=[]),t&&(Array.isArray(t)?(this.filters=t,this.dirtyFilters=!0,this.dirtyImageSubscribers=!0):t.substring&&(ht(this.filters,t),this.dirtyFilters=!0,this.dirtyImageSubscribers=!0),this.dirtyFilterIdentifier=!0)},e.memoizeFilterOutput=function(t){this.memoizeFilterOutput=t,this.updateFilterIdentifier(!!t)},t.updateFilterIdentifier=function(t){this.dirtyFilterIdentifier=!1,this.state&&(this.state.dirtyFilterIdentifier=!1),this.memoizeFilterOutput&&t?this.filterIdentifier=(()=>{function t(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return`${t()}${t()}-${t()}-${t()}-${t()}-${t()}${t()}${t()}`})():this.filterIdentifier=""},t.cleanFilters=function(){this.dirtyFilters=!1,this.dirtyFiltersCache=!0,this.filters||(this.filters=[]);let t,e,i=this.filters,s=Math.floor,n=[];i.forEach((i=>{t=p[i],t&&(e=s(t.order)||0,n[e]||(n[e]=[]),n[e].push(t))})),this.currentFilters=n.reduce(((t,e)=>t.concat(e)),[])},t.addFilters=function(...t){return Array.isArray(this.filters)||(this.filters=[]),t.forEach((t=>{t&&"Filter"===t.type&&(t=t.name),ht(this.filters,t)}),this),this.dirtyFilters=!0,this.dirtyImageSubscribers=!0,this.dirtyFilterIdentifier=!0,this},t.removeFilters=function(...t){return Array.isArray(this.filters)||(this.filters=[]),t.forEach((t=>{t&&"Filter"===t.type&&(t=t.name),ct(this.filters,t)}),this),this.dirtyFilters=!0,this.dirtyImageSubscribers=!0,this.dirtyFilterIdentifier=!0,this},t.clearFilters=function(){return Array.isArray(this.filters)||(this.filters=[]),this.filters.length=0,this.dirtyFilters=!0,this.dirtyImageSubscribers=!0,this.dirtyFilterIdentifier=!0,this},t.preprocessFilters=function(t){for(let e,i=0,s=t.length;is&&(r=s-2,a=1),o>n&&(o=n-2,l=1),a>s&&(a=s-1,r=0),l>n&&(l=n-1,o=0),r+a>s&&(r=s-a-1),o+l>n&&(o=n-l-1);const u=hi(),d=u.engine,f=u.element;f.width=h,f.height=c,d.setTransform(1,0,0,1,0,0),d.globalCompositeOperation="source-over",d.globalAlpha=1;const p=i.source||i.element;d.drawImage(p,r,o,a,l,0,0,h,c),t.assetData=d.getImageData(0,0,h,c),ci(u)}}e&&(t.assetData={width:1,height:1,data:new Uint8ClampedArray(4)})}e.dirtyFilterIdentifier&&(this.dirtyFilterIdentifier=!0)}const e=this.state;if(e)if(e.dirtyFilterIdentifier)this.dirtyFilterIdentifier=!0;else{let{fillStyle:t,strokeStyle:i}=e;(D[t]&&D[t].dirtyFilterIdentifier||D[i]&&D[i].dirtyFilterIdentifier)&&(this.dirtyFilterIdentifier=!0)}(this.dirtyFilterIdentifier||this.state&&this.state.dirtyFilterIdentifier)&&this.updateFilterIdentifier(!0)},t}H.ImageAsset=ImageAsset;const Group=function(t=q){return this.makeName(t.name),this.register(),this.artefacts=[],this.artefactCalculateBuckets=[],this.artefactStampBuckets=[],this.set(this.defs),this.onEntityHover=Z,this.onEntityNoHover=Z,this.isHovering=null,this.set(t),this};let Bi=Group.prototype=Object.create(Object.prototype);Bi.type="Group",Bi.lib="group",Bi.isArtefact=!1,Bi.isAsset=!1,Bi=me(Bi),Bi=Ii(Bi);Bi.defs=at(Bi.defs,{artefacts:null,order:0,visibility:!0,regionRadius:0,checkForEntityHover:!1,onEntityHover:null,onEntityNoHover:null}),Bi.packetExclusions=ht(Bi.packetExclusions,["artefactCalculateBuckets","artefactStampBuckets","batchResort"]),Bi.packetFunctions=ht(Bi.packetFunctions,["onEntityHover","onEntityNoHover"]),Bi.postCloneAction=function(t,e){let i;return i=e.host?o[e.host]:this.currentHost?this.currentHost:!!this.host&&o[this.host],i&&(i.addGroups(t.name),t.host||(t.host=i.name)),this.onEntityHover&&(t.onEntityHover=this.onEntityHover),this.onEntityNoHover&&(t.onEntityNoHover=this.onEntityNoHover),t},Bi.kill=function(t=!1){t&&this.artefactCalculateBuckets.forEach((t=>t.kill()));let e=this.name;return Object.entries(o).forEach((([t,i])=>{Array.isArray(i.groups)&&i.groups.indexOf(e)>=0&&(ct(i.groups,e),i.batchResort=!0)})),Object.entries(u).forEach((([t,i])=>{Array.isArray(i.groups)&&i.groups.indexOf(e)>=0&&(ct(i.groups,e),i.batchResort=!0)})),this.deregister()},Bi.killArtefacts=function(){return this.artefactCalculateBuckets.forEach((t=>t.kill())),this};let Ti=Bi.getters,Li=Bi.setters;Ti.artefacts=function(){return[].concat(this.artefacts)},Li.artefacts=function(t){this.artefacts=[],this.addArtefacts(t)},Li.host=function(t){let e=this.getHost(t);e&&e.addGroups&&(this.host=t,e.addGroups(this.name),this.dirtyHost=!0)},Li.order=function(t){let e=this.getHost(this.host);this.order=t,e&&e.set({batchResort:!0})},Li.noFilters=function(t){this.noFilters=t,this.dirtyFilterIdentifier=!0},Bi.getHost=function(t){if(t){if(t.type&&["Cell","Stack"].includes(t.type))return t;if(t.substring)return o[t]||u[t]}const e=this.currentHost;return e&&e.substring?o[e]||u[e]:e},Bi.forceStamp=function(){let t=this.visibility;this.visibility=!0,this.stamp(),this.visibility=t},Bi.stamp=function(){if(this.dirtyHost||!this.currentHost){this.dirtyHost=!1;let t=this.getHost(this.host);t?this.currentHost=t:this.dirtyHost=!0}if(this.visibility){const{currentHost:t,stashOutput:e,noFilters:i,filters:s}=this;if(t){this.sortArtefacts();const n=!!(e||!i&&s&&s.length)&&hi();if(n&&n.element){const e=t.currentDimensions,i=n.element;e&&i&&(i.width=e[0],i.height=e[1])}else t.engine&&t.engine.save();this.prepareStamp(n),this.stampAction(n),n?ci(n):t.engine&&(t.engine.restore(),t.setEngineFromState(t.engine))}}},Bi.sortArtefacts=function(){if(this.batchResort){this.batchResort=!1;let t=Math.floor,e=[];this.artefacts.forEach((i=>{let s=o[i],n=t(s.calculateOrder)||0;e[n]||(e[n]=[]),e[n].push(s)})),this.artefactCalculateBuckets=e.reduce(((t,e)=>t.concat(e)),[]),e.length=0,this.artefacts.forEach((i=>{let s=o[i],n=t(s.stampOrder)||0;e[n]||(e[n]=[]),e[n].push(s)})),this.artefactStampBuckets=e.reduce(((t,e)=>t.concat(e)),[])}},Bi.prepareStamp=function(t){let e=this.currentHost;t&&(e=t),this.artefactCalculateBuckets.forEach((i=>{"entity"===i.lib&&(i.currentHost&&i.currentHost.name===e.name||(i.currentHost=e,t||(i.dirtyHost=!0))),i.noDeltaUpdates||i.updateByDelta(),i.prepareStamp()}))},Bi.stampAction=function(t){!this.currentHost||this.currentHost.stashOutput;let{dirtyFilters:e,currentFilters:i,artefactStampBuckets:s,noFilters:n,filters:r,stashOutput:o,currentHost:a}=this;if(!e&&i||this.cleanFilters(),s.forEach((t=>{t&&t.stamp&&t.stamp()})),t)if(!n&&r&&r.length){let e=this.applyFilters(t);this.stashAction(e)}else if(o){let e=t.element,i=t.engine,s=!(!a||!a.engine)&&a.engine;if(s){s.save(),s.globalCompositeOperation="source-over",s.globalAlpha=1,s.setTransform(1,0,0,1,0,0),s.drawImage(e,0,0),s.restore();let t=i.getImageData(0,0,e.width,e.height);this.stashAction(t)}}},Bi.applyFilters=function(t){let e=this.currentHost,i=t;if(!e||!i)return!1;let s=e.element,n=e.engine,r=i.element,o=i.engine;this.isStencil&&(o.save(),o.globalCompositeOperation="source-in",o.globalAlpha=1,o.setTransform(1,0,0,1,0,0),o.drawImage(s,0,0),o.restore(),this.dirtyFilterIdentifier=!0),o.setTransform(1,0,0,1,0,0);let a=o.getImageData(0,0,r.width,r.height);this.preprocessFilters(this.currentFilters);let l=Ai.action({identifier:this.filterIdentifier,image:a,filters:this.currentFilters});return l&&(o.globalCompositeOperation="source-over",o.globalAlpha=1,o.setTransform(1,0,0,1,0,0),o.putImageData(l,0,0)),n.save(),n.setTransform(1,0,0,1,0,0),n.drawImage(r,0,0),n.restore(),l},Bi.stashAction=function(t){if(!t)return!1;if(this.stashOutput){this.stashOutput=!1;const[e,i,s,n]=this.getCellCoverage(t),r=hi(),o=r.engine,a=r.element;if(a.width=s,a.height=n,o.putImageData(t,-e,-i),this.stashedImageData=o.getImageData(0,0,s,n),this.stashOutputAsAsset){const t=this.stashOutputAsAsset.substring?this.stashOutputAsAsset:`${this.name}-groupimage`;if(this.stashOutputAsAsset=!1,this.stashedImage)this.stashedImage.src=a.toDataURL();else{const e=this.stashedImage=document.createElement("img");e.id=t,e.onload=function(){zt.appendChild(e),Ri(`#${t}`)},e.src=a.toDataURL()}}ci(r)}},Bi.getCellCoverage=function(t){let e,i,s=t.width,n=t.height,r=t.data,o=0,a=0,l=s,h=n,c=3;for(i=0;ie&&(l=e),oi&&(h=i),a{t&&(t.substring?ht(this.artefacts,t):t.name&&ht(this.artefacts,t.name))}),this),this.batchResort=!0,this},Bi.getArtefact=function(t){return this.artefacts.indexOf(t)>=0&&o[t]||!1},Bi.removeArtefacts=function(...t){return t.forEach((t=>{t&&(t.substring?ct(this.artefacts,t):t.name&&ct(this.artefacts,t.name))}),this),this.batchResort=!0,this},Bi.moveArtefactsIntoGroup=function(...t){let e,i;return t.forEach((t=>{t&&(i=t.substring?o[t]:t,i&&i.isArtefact&&(e=i.group?i.group:!!i.host&&g[i.host]),e&&(e.removeArtefacts(t),e.batchResort=!0),ht(this.artefacts,t))}),this),this.batchResort=!0,this},Bi.clearArtefacts=function(){return this.artefacts.length=0,this.artefactCalculateBuckets.length=0,this.artefactStampBuckets.length=0,this.batchResort=!0,this},Bi.updateArtefacts=function(t){return this.cascadeAction(t,"setDelta"),this},Bi.setArtefacts=function(t){return this.cascadeAction(t,"set"),this},Bi.updateByDelta=function(){return this.cascadeAction(!1,"updateByDelta"),this},Bi.reverseByDelta=function(){return this.cascadeAction(!1,"reverseByDelta"),this},Bi.addArtefactClasses=function(t){return this.cascadeAction(t,"addClasses"),this},Bi.removeArtefactClasses=function(t){return this.cascadeAction(t,"removeClasses"),this},Bi.cascadeAction=function(t,e){return this.artefacts.forEach((i=>{let s=o[i];s&&s[e]&&s[e](t)})),this},Bi.setDeltaValues=function(t=q){return this.artefactCalculateBuckets.forEach((e=>e.setDeltaValues(t))),this},Bi.addFiltersToEntitys=function(...t){return this.artefacts.forEach((e=>{let i=f[e];i&&i.addFilters&&i.addFilters(t)})),this},Bi.removeFiltersFromEntitys=function(...t){return this.artefacts.forEach((e=>{let i=f[e];i&&i.removeFilters&&i.removeFilters(t)})),this},Bi.clearFiltersFromEntitys=function(){return this.artefacts.forEach((t=>{let e=f[t];e&&e.clearFilters&&e.clearFilters()})),this},Bi.getArtefactAt=function(t){this.sortArtefacts();let e=hi(),i=this.artefactStampBuckets;for(let s=i.length-1;s>=0;s--){let n=i[s];if(n){let i=n.checkHit(t,e);if(i)return ci(e),i}}return ci(e),!1},Bi.getAllArtefactsAt=function(t){this.sortArtefacts();const e=hi(),i=this.artefactStampBuckets,s=[],n=[];for(let r=i.length-1;r>=0;r--){const o=i[r];if(o){const i=o.checkHit(t,e);if(i&&i.artefact){const t=i.artefact;s.indexOf(t.name)<0&&(s.push(t.name),n.push(i))}}}if(ci(e),this.checkForEntityHover){const t=!!n.length;this.isHovering!==t&&(this.isHovering=t,t?this.onEntityHover():this.onEntityNoHover())}return n};const $i=function(t){return!!t&&new Group(t)};function ji(t=q){t.defs=at(t.defs,{group:null,visibility:!0,calculateOrder:0,stampOrder:0,start:null,handle:null,offset:null,dimensions:null,pivoted:null,mimicked:null,particle:null,lockTo:null,bringToFrontOnDrag:!0,ignoreDragForX:!1,ignoreDragForY:!1,scale:1,roll:0,noUserInteraction:!1,noPositionDependencies:!1,noCanvasEngineUpdates:!1,noFilters:!1,noPathUpdates:!1,purge:null}),t.packetExclusions=ht(t.packetExclusions,["pathObject","mimicked","pivoted"]),t.packetExclusionsByRegex=ht(t.packetExclusionsByRegex,["^(local|dirty|current)","Subscriber$"]),t.packetCoordinates=ht(t.packetCoordinates,["start","handle","offset"]),t.packetObjects=ht(t.packetObjects,["group"]),t.packetFunctions=ht(t.packetFunctions,[]),t.processPacketOut=function(t,e,i){let s=!0;if("lockTo"===t)"start"===e[0]&&"start"===e[1]&&(s=i.indexOf("lockTo")>=0);else"entity"===this.lib?s=this.processEntityPacketOut(t,e,i):this.isArtefact&&(s=this.processDOMPacketOut(t,e,i));return s},t.handlePacketAnchor=function(t,e){if(this.anchor){let i=JSON.parse(this.anchor.saveAsPacket(e))[3];t.anchor=i}return t},t.kill=function(t=!1,e=!1){let i=this.name;return Object.entries(g).forEach((([t,e])=>{e.artefacts.indexOf(i)>=0&&e.removeArtefacts(i)})),this.anchor&&this.demolishAnchor(),Object.entries(o).forEach((([t,e])=>{e.name!==i&&(e.pivot&&e.pivot.name===i&&e.set({pivot:!1}),e.mimic&&e.mimic.name===i&&e.set({mimic:!1}),e.path&&e.path.name===i&&e.set({path:!1}),e.generateAlongPath&&e.generateAlongPath.name===i&&e.set({generateAlongPath:!1}),e.generateInArea&&e.generateInArea.name===i&&e.set({generateInArea:!1}),e.artefact&&e.artefact.name===i&&e.set({artefact:!1}),Array.isArray(e.pins)&&e.pins.forEach(((t,s)=>{rt(t)&&t.name===i&&e.removePinAt(s)})))})),Object.entries(w).forEach((([t,e])=>{e.checkForTarget(i)&&e.removeFromTargets(this)})),this.factoryKill(t,e),this.deregister(),this},t.factoryKill=Z;let e=t.getters,i=t.setters,s=t.deltaSetters;return e.positionX=function(){return this.currentStampPosition[0]},e.positionY=function(){return this.currentStampPosition[1]},e.position=function(){return[].concat(this.currentStampPosition)},e.startX=function(){return this.currentStart[0]},e.startY=function(){return this.currentStart[1]},e.start=function(){return[].concat(this.currentStart)},i.startX=function(t){null!=t&&(this.start[0]=t,this.dirtyStart=!0)},i.startY=function(t){null!=t&&(this.start[1]=t,this.dirtyStart=!0)},i.start=function(t,e){this.setCoordinateHelper("start",t,e),this.dirtyStart=!0},s.startX=function(t){let e=this.start;e[0]=G(e[0],t),this.dirtyStart=!0},s.startY=function(t){let e=this.start;e[1]=G(e[1],t),this.dirtyStart=!0},s.start=function(t,e){this.setDeltaCoordinateHelper("start",t,e),this.dirtyStart=!0},e.handleX=function(){return this.currentHandle[0]},e.handleY=function(){return this.currentHandle[1]},e.handle=function(){return[].concat(this.currentHandle)},i.handleX=function(t){null!=t&&(this.handle[0]=t,this.dirtyHandle=!0)},i.handleY=function(t){null!=t&&(this.handle[1]=t,this.dirtyHandle=!0)},i.handle=function(t,e){this.setCoordinateHelper("handle",t,e),this.dirtyHandle=!0},s.handleX=function(t){let e=this.handle;e[0]=G(e[0],t),this.dirtyHandle=!0},s.handleY=function(t){let e=this.handle;e[1]=G(e[1],t),this.dirtyHandle=!0},s.handle=function(t,e){this.setDeltaCoordinateHelper("handle",t,e),this.dirtyHandle=!0},e.offsetX=function(){return this.currentOffset[0]},e.offsetY=function(){return this.currentOffset[1]},e.offset=function(){return[].concat(this.currentOffset)},i.offsetX=function(t){null!=t&&(this.offset[0]=t,this.dirtyOffset=!0)},i.offsetY=function(t){null!=t&&(this.offset[1]=t,this.dirtyOffset=!0)},i.offset=function(t,e){this.setCoordinateHelper("offset",t,e),this.dirtyOffset=!0},s.offsetX=function(t){let e=this.offset;e[0]=G(e[0],t),this.dirtyOffset=!0},s.offsetY=function(t){let e=this.offset;e[1]=G(e[1],t),this.dirtyOffset=!0},s.offset=function(t,e){this.setDeltaCoordinateHelper("offset",t,e),this.dirtyOffset=!0},e.width=function(){return this.currentDimensions[0]},e.height=function(){return this.currentDimensions[1]},e.dimensions=function(){return[].concat(this.currentDimensions)},i.width=function(t){null!=t&&(this.dimensions[0]=t,this.dirtyDimensions=!0)},i.height=function(t){null!=t&&(this.dimensions[1]=t,this.dirtyDimensions=!0)},i.dimensions=function(t,e){this.setCoordinateHelper("dimensions",t,e),this.dirtyDimensions=!0},s.width=function(t){let e=this.dimensions;e[0]=G(e[0],t),this.dirtyDimensions=!0},s.height=function(t){let e=this.dimensions;e[1]=G(e[1],t),this.dirtyDimensions=!0},s.dimensions=function(t,e){this.setDeltaCoordinateHelper("dimensions",t,e),this.dirtyDimensions=!0},e.order=function(){return this.stampOrder},i.order=function(t){this.calculateOrder=t,this.stampOrder=t},i.particle=function(t){tt(t)&&!t?(this.particle=null,"particle"===this.lockTo[0]&&(this.lockTo[0]="start"),"particle"===this.lockTo[1]&&(this.lockTo[1]="start"),this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0):(this.particle=t,this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0)},i.lockTo=function(t){Array.isArray(t)?(this.lockTo[0]=t[0],this.lockTo[1]=t[1]):(this.lockTo[0]=t,this.lockTo[1]=t),this.dirtyLock=!0,this.dirtyStampPositions=!0},i.lockXTo=function(t){this.lockTo[0]=t,this.dirtyLock=!0,this.dirtyStampPositions=!0},i.lockYTo=function(t){this.lockTo[1]=t,this.dirtyLock=!0,this.dirtyStampPositions=!0},e.roll=function(){return this.currentRotation},i.roll=function(t){this.roll=t,this.dirtyRotation=!0},s.roll=function(t){this.roll+=t,this.dirtyRotation=!0},e.scale=function(){return this.currentScale},i.scale=function(t){this.scale=t,this.dirtyScale=!0},s.scale=function(t){this.scale+=t,this.dirtyScale=!0},i.host=function(t){if(t){let e=o[t];e&&e.here?this.host=e.name:this.host=t}else this.host="";this.dirtyDimensions=!0,this.dirtyHandle=!0,this.dirtyStart=!0,this.dirtyOffset=!0},i.group=function(t){let e;t&&(this.group&&"Group"===this.group.type&&this.group.removeArtefacts(this.name),t.substring?(e=g[t],this.group=e||t):this.group=t),this.group&&"Group"===this.group.type&&this.group.addArtefacts(this.name)},i.noFilters=function(t){this.noFilters=t,this.dirtyFilterIdentifier=!0},t.purgeArtefact=function(t){return t.substring&&(t="all"===t?["pivot","mimic","path","filter"]:[t]),Array.isArray(t)&&t.forEach((t=>function(t,e){switch(e){case"pivot":delete t.pivot,delete t.pivotCorner,delete t.pivotPin,delete t.addPivotHandle,delete t.addPivotOffset,delete t.addPivotRotation;break;case"mimic":delete t.mimic,delete t.useMimicDimensions,delete t.useMimicScale,delete t.useMimicStart,delete t.useMimicHandle,delete t.useMimicOffset,delete t.useMimicRotation,delete t.useMimicFlip,delete t.addOwnDimensionsToMimic,delete t.addOwnScaleToMimic,delete t.addOwnStartToMimic,delete t.addOwnHandleToMimic,delete t.addOwnOffsetToMimic,delete t.addOwnRotationToMimic;break;case"path":delete t.path,delete t.pathPosition,delete t.addPathHandle,delete t.addPathOffset,delete t.addPathRotation,delete t.constantPathSpeed;break;case"filter":delete t.filter,delete t.filters,delete t.isStencil}}(this,t))),this},t.initializePositions=function(){this.dimensions=mi(),this.start=mi(),this.handle=mi(),this.offset=mi(),this.currentDimensions=mi(),this.currentStart=mi(),this.currentHandle=mi(),this.currentOffset=mi(),this.currentDragOffset=mi(),this.currentDragCache=mi(),this.currentStartCache=mi(),this.currentStampPosition=mi(),this.currentStampHandlePosition=mi(),this.delta={},this.deltaConstraints={},this.lockTo=["start","start"],this.pivoted=[],this.mimicked=[],this.dirtyScale=!0,this.dirtyDimensions=!0,this.dirtyLock=!0,this.dirtyStart=!0,this.dirtyOffset=!0,this.dirtyHandle=!0,this.dirtyRotation=!0,this.isBeingDragged=!1,this.initializeDomPositions()},t.initializeDomPositions=Z,t.setCoordinateHelper=function(t,e,i){let s=this[t];Array.isArray(e)?(s[0]=e[0],s[1]=e[1]):rt(e)?pt(e.x,e.y)?(s[0]=ft(e.x,s[0]),s[1]=ft(e.y,s[1])):(s[0]=ft(e.width,e.w,s[0]),s[1]=ft(e.height,e.h,s[1])):(s[0]=e,s[1]=i)},t.setDeltaCoordinateHelper=function(t,e,i){let s=this[t],n=s[0],r=s[1];Array.isArray(e)?(s[0]=G(n,e[0]),s[1]=G(r,e[1])):rt(e)?pt(e.x,e.y)?(s[0]=G(n,ft(e.x,0)),s[1]=G(r,ft(e.y,0))):(s[0]=G(n,ft(e.width,e.w,0)),s[1]=G(r,ft(e.height,e.h,0))):(s[0]=G(n,e),s[1]=G(r,i))},t.getHost=function(){if(this.currentHost)return this.currentHost;if(this.host){let t=o[this.host];if(t)return this.currentHost=t,this.dirtyHost=!0,this.currentHost}return Se},t.getHere=function(){let t=this.getHost();if(t){if(t.here&&Object.keys(t.here))return t.here;if(t.currentDimensions){let e=t.currentDimensions;if(e)return{w:e[0],h:e[1]}}}return Se},t.cleanPosition=function(t,e,i){let s,n;for(let r=0;r<2;r++)s=e[r],n=i[r],s.toFixed?t[r]=s:t[r]="left"===s||"top"===s?0:"right"===s||"bottom"===s?n:"center"===s?n/2:parseFloat(s)/100*n;this.dirtyFilterIdentifier=!0},t.cleanScale=function(){this.dirtyScale=!1;let t,e=this.scale,i=this.mimic,s=this.currentScale;i&&this.useMimicScale?i.currentScale?(t=i.currentScale,this.addOwnScaleToMimic&&(t+=e)):(t=e,this.dirtyMimicScale=!0):t=e,this.currentScale=t,this.dirtyDimensions=!0,this.dirtyHandle=!0,s!==this.currentScale&&(this.dirtyPositionSubscribers=!0),this.mimicked&&this.mimicked.length&&(this.dirtyMimicScale=!0),this.dirtyFilterIdentifier=!0},t.cleanDimensions=function(){this.dirtyDimensions=!1;let t=this.getHost(),e=this.dimensions,i=this.currentDimensions;if(t){let s=t.currentDimensions?t.currentDimensions:[t.w,t.h],[n,r]=e,o=i[0],a=i[1];n.substring&&(n=parseFloat(n)/100*s[0]),r.substring&&(r="auto"===r?0:parseFloat(r)/100*s[1]);let l,h=this.mimic;h&&h.name&&this.useMimicDimensions&&(l=h.currentDimensions),l?(i[0]=this.addOwnDimensionsToMimic?l[0]+n:l[0],i[1]=this.addOwnDimensionsToMimic?l[1]+r:l[1]):(i[0]=n,i[1]=r),this.cleanDimensionsAdditionalActions(),this.dirtyStart=!0,this.dirtyHandle=!0,this.dirtyOffset=!0,o===i[0]&&a===i[1]||(this.dirtyPositionSubscribers=!0),this.mimicked&&this.mimicked.length&&(this.dirtyMimicDimensions=!0),this.dirtyFilterIdentifier=!0}else this.dirtyDimensions=!0},t.cleanDimensionsAdditionalActions=Z,t.cleanLock=function(){this.dirtyLock=!1,this.dirtyStart=!0,this.dirtyHandle=!0},t.cleanStart=function(){let t,e,i=this.getHost();i&&(this.dirtyStart=!1,dt(i.w,i.h)?(t=i.w,e=i.h):i.currentDimensions?[t,e]=i.currentDimensions:this.dirtyStart=!0),this.dirtyStart||(this.cleanPosition(this.currentStart,this.start,[t,e]),this.dirtyStampPositions=!0)},t.cleanOffset=function(){let t,e,i=this.getHost();i&&(this.dirtyOffset=!1,dt(i.w,i.h)?(t=i.w,e=i.h):i.currentDimensions?[t,e]=i.currentDimensions:this.dirtyOffset=!0),this.dirtyStart||(this.cleanPosition(this.currentOffset,this.offset,[t,e]),this.dirtyStampPositions=!0,this.mimicked&&this.mimicked.length&&(this.dirtyMimicOffset=!0))},t.cleanHandle=function(){this.dirtyHandle=!1;let t=this.currentHandle;this.cleanPosition(t,this.handle,this.currentDimensions),this.dirtyStampHandlePositions=!0,this.mimicked&&this.mimicked.length&&(this.dirtyMimicHandle=!0)},t.cleanRotation=function(){this.dirtyRotation=!1;let t,e=this.roll,i=this.currentRotation,s=this.path,n=this.mimic,r=this.pivot,o=this.lockTo;if(s&&o.indexOf("path")>=0){if(t=e,this.addPathRotation){let e=this.getPathData();e&&(t+=e.angle)}}else n&&this.useMimicRotation&&o.indexOf("mimic")>=0?ut(n.currentRotation)?(t=n.currentRotation,this.addOwnRotationToMimic&&(t+=e)):this.dirtyMimicRotation=!0:(t=e,r&&this.addPivotRotation&&o.indexOf("pivot")>=0&&(ut(r.currentRotation)?t+=r.currentRotation:this.dirtyPivotRotation=!0));this.currentRotation=t,t!==i&&(this.dirtyPositionSubscribers=!0),this.mimicked&&this.mimicked.length&&(this.dirtyMimicRotation=!0),this.dirtyFilterIdentifier=!0},t.cleanStampPositions=function(){this.dirtyStampPositions=!1;let{currentStampPosition:t,currentStart:e,currentOffset:i,currentStartCache:s,currentDragOffset:n}=this,[r,o]=t;if(this.noPositionDependencies)t[0]=e[0],t[1]=e[1];else{let{isBeingDragged:r,lockTo:o,pivot:a,pivotCorner:l,pivotPin:h,addPivotOffset:c,path:u,addPathOffset:d,mimic:f,useMimicStart:p,useMimicOffset:m,addOwnStartToMimic:g,addOwnOffsetToMimic:y,particle:S,ignoreDragForX:k,ignoreDragForY:A}=this;const O=function(t){return("pivot"!==t||a)&&("path"!==t||u)&&("mimic"!==t||f)&&("particle"!==t||b)?t:"start"},v={start:function(t){t.setFromArray(e).add(i)},path:function(t){P?(t.setFromVector(P),d||t.subtract(u.currentOffset)):t.setFromArray(e).add(i)},pivot:function(t){l&&a.getCornerCoordinate?t.setFromArray(a.getCornerCoordinate(l)):"Polyline"==a.type?t.setFromArray(a.getPinAt(h)):t.setFromArray(a.currentStampPosition),c||t.subtract(a.currentOffset),t.add(i)},mimic:function(t){p||m?(t.setFromArray(f.currentStampPosition),p&&g&&t.add(e),m&&y&&t.add(i),p||t.subtract(f.currentStart).add(e),m||t.subtract(f.currentOffset).add(i)):t.setFromArray(e).add(i)},particle:function(t){S.substring&&(S=b[S]),S?t.setFromVector(S.position):t.setFromArray(e).add(i)},mouse:function(t){t.setFromVector(w),r&&(s.setFromArray(t),t.add(n)),t.add(i)}};let x,C,w,P,D=fi(),R=!1;if(D.length=0,r)D.push(k?O(o[0]):"mouse"),D.push(A?O(o[1]):"mouse"),R=!0,this.getCornerCoordinate&&this.cleanPathObject();else for(x=0;x<2;x++)C=O(o[x]),"mouse"===C&&(R=!0),"start"!==C&&(this.dirtyFilterIdentifier=!0),D.push(C);R&&(w=this.getHere()),D.indexOf("path")>=0&&(P=this.getPathData());let[F,E]=D,M=fi(),H=fi();v[F](M),F==E?H.setFromArray(M):v[E](H),t[0]=M[0],t[1]=H[1],pi(D)}r===t[0]&&o===t[1]||(this.dirtyPositionSubscribers=!0)},t.cleanStampHandlePositions=function(){this.dirtyStampHandlePositions=!1;let t=this.currentStampHandlePosition,e=this.currentHandle,i=t[0],s=t[1];if(this.noPositionDependencies)t[0]=e[0],t[1]=e[1];else{let i,s,n,r=this.lockTo,o=this.pivot,a=this.path,l=this.mimic;for(s=0;s<2;s++){switch(i=r[s],"pivot"!==i||o||(i="start"),"path"!==i||a||(i="start"),"mimic"!==i||l||(i="start"),n=e[s],"start"!==i&&(this.dirtyFilterIdentifier=!0),i){case"pivot":this.addPivotHandle&&(n+=o.currentHandle[s]);break;case"path":this.addPathHandle&&(n+=a.currentHandle[s]);break;case"mimic":this.useMimicHandle&&(n=l.currentHandle[s],this.addOwnHandleToMimic&&(n+=e[s]))}t[s]=n}}this.cleanStampHandlePositionsAdditionalActions(),i===t[0]&&s===t[1]||(this.dirtyPositionSubscribers=!0)},t.cleanStampHandlePositionsAdditionalActions=Z,t.checkHit=function(t=[],e){if(this.noUserInteraction)return!1;this.pathObject&&!this.dirtyPathObject||this.cleanPathObject();let i=Array.isArray(t)?t:[t],s=!1;e||(e=hi(),s=!0);let n,r,o=e.engine,a=this.currentStampPosition,l=a[0],h=a[1];if(i.some((t=>{if(Array.isArray(t))n=t[0],r=t[1];else{if(!dt(t,t.x,t.y))return!1;n=t.x,r=t.y}return!(!n.toFixed||!r.toFixed||isNaN(n)||isNaN(r))&&(e.rotateDestination(o,l,h,this),o.isPointInPath(this.pathObject,n,r,this.winding))}),this)){let t=this.checkHitReturn(n,r,e);return s&&ci(e),t}return s&&ci(e),!1},t.checkHitReturn=function(t,e,i){return{x:t,y:e,artefact:this}},t.pickupArtefact=function(t=q){let{x:e,y:i}=t;return dt(e,i)&&(this.isBeingDragged=!0,this.currentDragCache.set(this.currentDragOffset),this.relativeCoordinates=[...this.start],"start"===this.lockTo[0]?this.currentDragOffset[0]=this.currentStart[0]-e:"pivot"===this.lockTo[0]&&this.pivot?this.currentDragOffset[0]=this.pivot.get("startX")-e:"mimic"===this.lockTo[0]&&this.mimic&&(this.currentDragOffset[0]=this.mimic.get("startX")-e),"start"===this.lockTo[1]?this.currentDragOffset[1]=this.currentStart[1]-i:"pivot"===this.lockTo[1]&&this.pivot?this.currentDragOffset[1]=this.pivot.get("startY")-i:"mimic"===this.lockTo[1]&&this.mimic&&(this.currentDragOffset[1]=this.mimic.get("startY")-i),this.bringToFrontOnDrag&&(this.stampOrder+=9999,this.group.batchResort=!0),ut(this.dirtyPathObject)&&(this.dirtyPathObject=!0)),this},t.dropArtefact=function(){this.start.set(this.currentStartCache).add(this.currentDragOffset),this.dirtyStart=!0;const t=this.currentHost;if(t){const[e,i]=t.get("dimensions"),[s,n]=this.start,[r,o]=this.relativeCoordinates;r.substring&&(this.start[0]=s/e*100+"%"),o.substring&&(this.start[1]=n/i*100+"%")}return delete this.relativeCoordinates,this.currentDragOffset.set(this.currentDragCache),this.bringToFrontOnDrag&&(this.stampOrder-=9999,this.stampOrder<0&&(this.stampOrder=0),this.group.batchResort=!0),ut(this.dirtyPathObject)&&(this.dirtyPathObject=!0),this.isBeingDragged=!1,this},t.updatePositionSubscribers=function(){this.dirtyPositionSubscribers=!1,this.pivoted&&this.pivoted.length&&this.updatePivotSubscribers(),this.mimicked&&this.mimicked.length&&this.updateMimicSubscribers(),this.pathed&&this.pathed.length&&this.updatePathSubscribers()},t.updatePivotSubscribers=Z,t.updateMimicSubscribers=Z,t.updatePathSubscribers=Z,t.updateImageSubscribers=Z,t}function Xi(t=q){const e={delta:null,noDeltaUpdates:!1,deltaConstraints:null,checkDeltaConstraints:!1,performDeltaChecks:!1};t.defs=at(t.defs,e),at(t,e);const i=t.setters;t.deltaSetters,i.delta=function(t=q){t&&(this.delta=lt(this.delta,t))},i.deltaConstraints=function(t=q){t&&(this.deltaConstraints=lt(this.deltaConstraints,t))},t.updateByDelta=function(){return this.setDelta(this.delta),this.checkDeltaConstraints&&this.performDeltaConstraintsChecks(),this},t.reverseByDelta=function(){const t={},e=this.delta,i=Object.keys(e),s=i.length;for(let n,r,o=0;o=0?(a<2?p=this.start:a<4?p=this.handle:a<6?p=this.offset:a<8&&(p=this.dimensions),n.indexOf(o)>=0&&(m=1),g=p[m]):g=this.get(o),S=parseFloat(h),k=parseFloat(c),A=parseFloat(g),d="",Ak&&(d=u,f=1),d)switch(d){case"reverse":t[o]=-parseFloat(t[o])+"%",this.set({[o]:A+parseFloat(t[o])+"%"});break;case"loop":f?this.set({[o]:A-(k-S)+"%"}):this.set({[o]:A+(k-S)+"%"})}}else if(g=this.get(o),d="",gc&&(d=u,f=1),d)switch(d){case"reverse":t[o]=-t[o],this.set({[o]:g+t[o]});break;case"loop":f?this.set({[o]:g-(c-h)}):this.set({[o]:g+(c-h)})}}else this.performDeltaChecks=!0},t.setDeltaValues=function(t=q){const e=this.delta,i=Object.keys(t),s=i.length;for(let n,r,o,a,l,h=0;h=0&&(this.pivotCorner=t)},i.addPivotHandle=function(t){this.addPivotHandle=t,this.dirtyHandle=!0},i.addPivotOffset=function(t){this.addPivotOffset=t,this.dirtyOffset=!0},i.addPivotRotation=function(t){this.addPivotRotation=t,this.dirtyRotation=!0},t.updatePivotSubscribers=function(){this.pivoted.forEach((t=>{let e=o[t];e||(e=l[t],e&&"Cell"===e.type||(e=!1)),e&&(e.dirtyStart=!0,e.addPivotHandle&&(e.dirtyHandle=!0),e.addPivotOffset&&(e.dirtyOffset=!0),e.addPivotRotation&&(e.dirtyRotation=!0),"Polyline"===e.type?e.dirtyPins=!0:"Line"!==e.type&&"Quadratic"!==e.type&&"Bezier"!==e.type||e.dirtyPins.push(this.name))}),this)},t}function Ni(t=q){let e={mimic:"",useMimicDimensions:!1,useMimicScale:!1,useMimicStart:!1,useMimicHandle:!1,useMimicOffset:!1,useMimicRotation:!1,useMimicFlip:!1,addOwnDimensionsToMimic:!1,addOwnScaleToMimic:!1,addOwnStartToMimic:!1,addOwnHandleToMimic:!1,addOwnOffsetToMimic:!1,addOwnRotationToMimic:!1};t.defs=at(t.defs,e),at(t,e),t.packetObjects=ht(t.packetObjects,["mimic"]),t.getters;let i=t.setters;return t.deltaSetters,i.mimic=function(t){if(tt(t)&&!t)this.mimic=null,"mimic"===this.lockTo[0]&&(this.lockTo[0]="start"),"mimic"===this.lockTo[1]&&(this.lockTo[1]="start"),this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0;else{let e=this.mimic,i=this.name,s=t.substring?o[t]:t;s||(s=l[t],s&&"Cell"!==s.type&&(s=!1)),s&&s.name&&(e&&e.name!==s.name&&ct(e.mimicked,i),ht(s.mimicked,i),this.mimic=s,this.useMimicDimensions&&(this.dirtyDimensions=!0),this.useMimicScale&&(this.dirtyScale=!0),this.useMimicStart&&(this.dirtyStart=!0),this.useMimicHandle&&(this.dirtyHandle=!0),this.useMimicOffset&&(this.dirtyOffset=!0),this.useMimicRotation&&(this.dirtyRotation=!0))}},i.useMimicDimensions=function(t){this.useMimicDimensions=t,this.dirtyDimensions=!0},i.useMimicScale=function(t){this.useMimicScale=t,this.dirtyScale=!0},i.useMimicStart=function(t){this.useMimicStart=t,this.dirtyStart=!0},i.useMimicHandle=function(t){this.useMimicHandle=t,this.dirtyHandle=!0},i.useMimicOffset=function(t){this.useMimicOffset=t,this.dirtyOffset=!0},i.useMimicRotation=function(t){this.useMimicRotation=t,this.dirtyRotation=!0},i.addOwnDimensionsToMimic=function(t){this.addOwnDimensionsToMimic=t,this.dirtyDimensions=!0},i.addOwnScaleToMimic=function(t){this.addOwnScaleToMimic=t,this.dirtyScale=!0},i.addOwnStartToMimic=function(t){this.addOwnStartToMimic=t,this.dirtyStart=!0},i.addOwnHandleToMimic=function(t){this.addOwnHandleToMimic=t,this.dirtyHandle=!0},i.addOwnOffsetToMimic=function(t){this.addOwnOffsetToMimic=t,this.dirtyOffset=!0},i.addOwnRotationToMimic=function(t){this.addOwnRotationToMimic=t,this.dirtyRotation=!0},t.updateMimicSubscribers=function(){let t=this.dirtyMimicHandle,e=this.dirtyMimicOffset,i=this.dirtyMimicRotation,s=this.dirtyMimicScale,n=this.dirtyMimicDimensions;this.mimicked.forEach((r=>{let a=o[r];a||(a=l[r],a&&"Cell"===a.type||(a=!1)),a&&(a.useMimicStart&&(a.dirtyStart=!0),t&&a.useMimicHandle&&(a.dirtyHandle=!0),e&&a.useMimicOffset&&(a.dirtyOffset=!0),i&&a.useMimicRotation&&(a.dirtyRotation=!0),s&&a.useMimicScale&&(a.dirtyScale=!0),n&&a.useMimicDimensions&&(a.dirtyDimensions=!0))})),this.dirtyMimicHandle=!1,this.dirtyMimicOffset=!1,this.dirtyMimicRotation=!1,this.dirtyMimicScale=!1,this.dirtyMimicDimensions=!1},t}function Gi(t=q){let e={path:"",pathPosition:0,addPathHandle:!1,addPathOffset:!0,addPathRotation:!1,constantSpeedAlongPath:!1};t.defs=at(t.defs,e),at(t,e),t.packetObjects=ht(t.packetObjects,["path"]);let i=t.setters,s=t.deltaSetters;return i.path=function(t){if(tt(t)&&!t)this.path=null,"path"===this.lockTo[0]&&(this.lockTo[0]="start"),"path"===this.lockTo[1]&&(this.lockTo[1]="start"),this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0;else{let e=this.path,i=t.substring?o[t]:t,s=this.name;i&&i.name&&i.useAsPath&&(e&&e.name!==i.name&&ct(e.pathed,s),ht(i.pathed,s),this.path=i,this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0)}},i.pathPosition=function(t){t<0&&(t=Math.abs(t)),t>1&&(t%=1),this.pathPosition=parseFloat(t.toFixed(6)),this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0,this.currentPathData=!1},s.pathPosition=function(t){let e=this.pathPosition+t;e<0&&(e+=1),e>1&&(e%=1),this.pathPosition=parseFloat(e.toFixed(6)),this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0,this.currentPathData=!1},i.addPathHandle=function(t){this.addPathHandle=t,this.dirtyHandle=!0},i.addPathOffset=function(t){this.addPathOffset=t,this.dirtyOffset=!0},i.addPathRotation=function(t){this.addPathRotation=t,this.dirtyRotation=!0},t.getPathData=function(){if(this.currentPathData)return this.currentPathData;let t,e=this.pathPosition,i=this.path;if(i){let s=this.constantSpeedAlongPath||this.constantPathSpeed||!1;return t=i.getPathPositionData(e,s),this.addPathRotation&&(this.dirtyRotation=!0),this.currentPathData=t,t}return!1},t}H.Group=Group;const Anchor=function(t=q){return this.makeName(t.name),this.register(),this.set(this.defs),this.set(t),this.build(),this};let zi=Anchor.prototype=Object.create(Object.prototype);zi.type="Anchor",zi.lib="anchor",zi.isArtefact=!1,zi.isAsset=!1,zi=me(zi);zi.defs=at(zi.defs,{host:null,description:"",download:"",href:"",hreflang:"",ping:"",referrerpolicy:"",rel:"noreferrer",target:"_blank",anchorType:"",clickAction:null,focusAction:!1,blurAction:!1}),zi.packetExclusions=ht(zi.packetExclusions,["domElement"]),zi.packetObjects=ht(zi.packetExclusions,["host"]),zi.packetFunctions=ht(zi.packetFunctions,["clickAction"]),zi.demolish=function(){this.domElement&&this.hold&&this.hold.removeChild(this.domElement),this.deregister()};let Wi=zi.setters;Wi.host=function(t){let e=t.substring?o[t]:t;e&&e.name&&(this.host=e)},Wi.hold=function(t){it(t)&&(this.domElement&&this.hold&&this.hold.removeChild(this.domElement),this.hold=t,this.domElement&&this.hold.appendChild(this.domElement))},Wi.download=function(t){this.download=t,this.domElement&&this.update("download")},Wi.href=function(t){this.href=t,this.domElement&&this.update("href")},Wi.hreflang=function(t){this.hreflang=t,this.domElement&&this.update("hreflang")},Wi.ping=function(t){this.ping=t,this.domElement&&this.update("ping")},Wi.referrerpolicy=function(t){this.referrerpolicy=t,this.domElement&&this.update("referrerpolicy")},Wi.rel=function(t){this.rel=t,this.domElement&&this.update("rel")},Wi.target=function(t){this.target=t,this.domElement&&this.update("target")},Wi.anchorType=function(t){this.anchorType=t,this.domElement&&this.update("type")},Wi.description=function(t){this.description=t,this.domElement&&(this.domElement.textContent=t)},Wi.clickAction=function(t){st(t)&&(this.clickAction=t,this.domElement&&this.domElement.setAttribute("onclick",t()))},zi.build=function(){this.domElement&&this.hold&&this.hold.removeChild(this.domElement);let t=document.createElement("a");t.id=this.name,this.download&&t.setAttribute("download",this.download),this.href&&t.setAttribute("href",this.href),this.hreflang&&t.setAttribute("hreflang",this.hreflang),this.ping&&t.setAttribute("ping",this.ping),this.referrerpolicy&&t.setAttribute("referrerpolicy",this.referrerpolicy),this.rel&&t.setAttribute("rel",this.rel),this.target&&t.setAttribute("target",this.target),this.anchorType&&t.setAttribute("type",this.anchorType),this.clickAction&&st(this.clickAction)&&t.setAttribute("onclick",this.clickAction()),this.description&&(t.textContent=this.description),this.focusAction&&t.addEventListener("focus",(t=>this.host.onEnter()),!1),this.blurAction&&t.addEventListener("blur",(t=>this.host.onLeave()),!1),this.domElement=t,this.hold&&this.hold.appendChild(t)},zi.update=function(t){this.domElement&&this.domElement.setAttribute(t,this[t])},zi.click=function(){if(this.hasBeenRecentlyClicked)return!1;{let t=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0});this.hasBeenRecentlyClicked=!0;let e=this;return setTimeout((()=>e.hasBeenRecentlyClicked=!1),200),this.domElement.dispatchEvent(t)}};function Vi(t=q){t.defs=at(t.defs,{anchor:null}),t.demolishAnchor=function(){this.anchor&&this.anchor.demolish()};const e=t.getters,i=t.setters;return t.deltaSetters,e.anchorDescription=function(){return this.anchor?this.anchor.get("description"):""},i.anchorDescription=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.description(t)},e.anchorType=function(){return this.anchor?this.anchor.get("type"):""},i.anchorType=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.anchorType(t)},e.anchorTarget=function(){return this.anchor?this.anchor.get("target"):""},i.anchorTarget=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.target(t)},e.anchorRel=function(){return this.anchor?this.anchor.get("rel"):""},i.anchorRel=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.rel(t)},e.anchorReferrerPolicy=function(){return this.anchor?this.anchor.get("referrerpolicy"):""},i.anchorReferrerPolicy=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.referrerpolicy(t)},e.anchorPing=function(){return this.anchor?this.anchor.get("ping"):""},i.anchorPing=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.ping(t)},e.anchorHreflang=function(){return this.anchor?this.anchor.get("hreflang"):""},i.anchorHreflang=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.hreflang(t)},e.anchorHref=function(){return this.anchor?this.anchor.get("href"):""},i.anchorHref=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.href(t)},e.anchorDownload=function(){return this.anchor?this.anchor.get("download"):""},i.anchorDownload=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.download(t)},i.anchorFocusAction=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.focusAction(t)},i.anchorBlurAction=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.blurAction(t)},i.anchor=function(t){this.anchor?this.anchor.set(t):this.buildAnchor(t)},t.buildAnchor=function(t){rt(t)&&(this.anchor&&this.anchor.demolish(),t.name||(t.name=`${this.name}-anchor`),t.description||(t.description=`Anchor link for ${this.name} ${this.type}`),t.host=this,t.hold=this.getAnchorHold(),this.anchor=function(t){return!!t&&new Anchor(t)}(t))},t.getAnchorHold=function(){let t=this.currentHost;if(t){if("Canvas"===t.type)return t.navigation;if("Cell"===t.type){let e=t.currentHost?t.currentHost:c[t.host];if(e&&"Canvas"===e.type)return e.navigation}}return this.dirtyAnchorHold=!0,Wt},t.rebuildAnchor=function(){this.anchor&&this.anchor.build()},t.clickAnchor=function(){this.anchor&&this.anchor.click()},t}function Zi(t=q){t.defs=at(t.defs,{groups:null,groupBuckets:null,batchResort:!0});const e=t.getters,i=t.setters;return e.groups=function(){return[].concat(this.groups)},i.groups=function(t){this.groups=[],this.addGroups(t)},t.sortGroups=function(t=!1){if(this.batchResort){this.batchResort=!1;const t=Math.floor,e=this.groups,i=[];let s,n;e.forEach((e=>{s=g[e],n=s?t(s.order):0,i[n]||(i[n]=[]),i[n].push(s)})),this.groupBuckets=i.reduce(((t,e)=>t.concat(e)),[])}},t.initializeCascade=function(){this.groups=[],this.groupBuckets=[]},t.addGroups=function(...t){return t.forEach((t=>{t&&t.substring?ht(this.groups,t):g[t]&&ht(this.groups,t.name)}),this),this.batchResort=!0,this},t.removeGroups=function(...t){return t.forEach((t=>{t&&t.substring?ct(this.groups,t):g[t]&&ct(this.groups,t.name)}),this),this.batchResort=!0,this},t.cascadeAction=function(t,e){let i;return this.groups.forEach((s=>{i=g[s],i&&i[e](t)}),this),this},t.updateArtefacts=function(t){return this.cascadeAction(t,"updateArtefacts"),this},t.setArtefacts=function(t){return this.cascadeAction(t,"setArtefacts"),this},t.addArtefactClasses=function(t){return this.cascadeAction(t,"addArtefactClasses"),this},t.removeArtefactClasses=function(t){return this.cascadeAction(t,"removeArtefactClasses"),this},t.updateByDelta=function(){return this.cascadeAction(!1,"updateByDelta"),this},t.reverseByDelta=function(){return this.cascadeAction(!1,"reverseByDelta"),this},t.getArtefactAt=function(t){if(t=ft(t,this.here,!1)){let e,i;for(let s=this.groups.length-1;s>=0;s--)if(e=g[this.groups[s]],e&&(i=e.getArtefactAt(t),i))return i}return!1},t.getAllArtefactsAt=function(t){const e=[];if(t=ft(t,this.here,!1)){let i,s;for(let n=this.groups.length-1;n>=0;n--)i=g[this.groups[n]],i&&(s=i.getAllArtefactsAt(t),s&&e.push(...s))}return e},t}function _i(t=q){t.defs=at(t.defs,{repeat:"repeat",patternMatrix:null});let e=t.setters;return t.repeatValues=["repeat","repeat-x","repeat-y","no-repeat"],e.repeat=function(t){this.repeatValues.indexOf(t)>=0?this.repeat=t:this.repeat=this.defs.repeat},t.matrixNumberPosCheck=["a","b","c","d","e","f"],t.updateMatrixNumber=function(t,e){this.patternMatrix||(this.patternMatrix=new DOMMatrix),t=t.substring?parseFloat(t):t;let i=this.matrixNumberPosCheck.indexOf(e);nt(t)&&i>=0&&(this.patternMatrix[e]=t)},e.matrixA=function(t){this.updateMatrixNumber(t,"a")},e.matrixB=function(t){this.updateMatrixNumber(t,"b")},e.matrixC=function(t){this.updateMatrixNumber(t,"c")},e.matrixD=function(t){this.updateMatrixNumber(t,"d")},e.matrixE=function(t){this.updateMatrixNumber(t,"e")},e.matrixF=function(t){this.updateMatrixNumber(t,"f")},e.stretchX=function(t){this.updateMatrixNumber(t,"a")},e.skewY=function(t){this.updateMatrixNumber(t,"b")},e.skewX=function(t){this.updateMatrixNumber(t,"c")},e.stretchY=function(t){this.updateMatrixNumber(t,"d")},e.shiftX=function(t){this.updateMatrixNumber(t,"e")},e.shiftY=function(t){this.updateMatrixNumber(t,"f")},e.patternMatrix=function(t){if(Array.isArray(t)){let e=this.updateMatrixNumber;e(t[0],"a"),e(t[1],"b"),e(t[2],"c"),e(t[3],"d"),e(t[4],"e"),e(t[5],"f")}},t.buildStyle=function(t){if(t){t.substring&&(t=u[t]);let e=this.source,i=this.sourceLoaded,s=this.repeat,n=t.engine;if("Cell"!==this.type&&"Noise"!==this.type||(e=this.element,i=!0),n&&i){let t=n.createPattern(e,s);return t.setTransform(this.patternMatrix),t}}return"rgb(0 0 0 / 0)"},t}H.Anchor=Anchor;const Cell=function(t=q){if(this.makeName(t.name),this.register(),this.initializePositions(),this.initializeCascade(),!et(t.element)){let e=document.createElement("canvas");e.id=this.name,e.width=300,e.height=150,t.element=e}return this.installElement(t.element,t.willReadFrequently),this.set(this.defs),this.set(t),this.state.setStateFromEngine(this.engine),$i({name:this.name,host:this.name}),this.subscribers=[],this.sourceNaturalDimensions=mi(),this.dirtyDimensionsOverride=!0,this.sourceLoaded=!0,this.here={},this};let Ui=Cell.prototype=Object.create(Object.prototype);Ui.type="Cell",Ui.lib="cell",Ui.isArtefact=!1,Ui.isAsset=!0,Ui=me(Ui),Ui=ni(Ui),Ui=Oi(Ui),Ui=ji(Ui),Ui=Xi(Ui),Ui=Yi(Ui),Ui=Ni(Ui),Ui=Gi(Ui),Ui=Vi(Ui),Ui=Zi(Ui),Ui=_i(Ui),Ui=Ii(Ui);Ui.defs=at(Ui.defs,{cleared:!0,compiled:!0,shown:!0,compileOrder:0,showOrder:0,backgroundColor:"",clearAlpha:0,alpha:1,composite:"source-over",scale:1,flipReverse:!1,flipUpend:!1,filter:"none",isBase:!1,useAsPattern:!1,controller:null,includeInCascadeEventActions:!1}),delete Ui.defs.source,delete Ui.defs.sourceLoaded,Ui.stringifyFunction=Z,Ui.processPacketOut=Z,Ui.finalizePacketOut=Z,Ui.saveAsPacket=function(){return`[${this.name}, ${this.type}, ${this.lib}, {}]`},Ui.clone=U,Ui.factoryKill=function(){let t=this.name;Object.entries(c).forEach((([e,i])=>{i.cells.indexOf(t)>=0&&i.removeCell(t),i.base&&i.base.name===t&&i.set({visibility:!1})})),Object.entries(o).forEach((([e,i])=>{if(i.name!==t){let e=i.state;if(e){let i=e.fillStyle,s=e.strokeStyle;i.name&&i.name===t&&(e.fillStyle=e.defs.fillStyle),s.name&&s.name===t&&(e.strokeStyle=e.defs.strokeStyle)}}})),g[t]&&g[t].kill()};let Ki=Ui.getters,qi=Ui.setters,Qi=Ui.deltaSetters;Ui.get=function(t){let e=this.getters[t];if(e)return e.call(this);{let e,i=this.defs[t],s=this.state;return null!=i?(e=this[t],null!=e?e:i):(i=s.defs[t],null!=i?(e=s[t],null!=e?e:i):undef)}},Ki.width=function(){return this.currentDimensions[0]||this.element.getAttribute("width")},qi.width=function(t){null!=t&&(this.dimensions[0]=t,this.dirtyDimensions=!0,this.dirtyDimensionsOverride=!0)},Ki.height=function(){return this.currentDimensions[1]||this.element.getAttribute("height")},qi.height=function(t){null!=t&&(this.dimensions[1]=t,this.dirtyDimensions=!0,this.dirtyDimensionsOverride=!0)},Ki.dimensions=function(){return[this.currentDimensions[0]||this.element.getAttribute("width"),this.currentDimensions[1]||this.element.getAttribute("height")]},qi.dimensions=function(t,e){this.setCoordinateHelper("dimensions",t,e),this.dirtyDimensions=!0,this.dirtyDimensionsOverride=!0},qi.source=function(){},qi.engine=function(t){},qi.state=function(t){},qi.element=function(t){et(t)&&this.installElement(t)},qi.backgroundColor=function(t){"rgb(0 0 0 / 0)"!==t&&"rgba(0 0 0 / 0)"!==t&&"rgba(0,0,0,0)"!==t&&"rgba(0, 0, 0, 0)"!==t&&"transparent"!==t&&"#00000000"!==t&&"#0000"!==t||(t=""),this.backgroundColor=t},qi.cleared=function(t){this.cleared=t,this.updateControllerCells()},qi.compiled=function(t){this.compiled=t,this.updateControllerCells()},qi.shown=function(t){this.shown=t,this.updateControllerCells()},qi.compileOrder=function(t){this.compileOrder=t,this.updateControllerCells()},qi.showOrder=function(t){this.showOrder=t,this.updateControllerCells()},qi.stashX=function(t){this.stashCoordinates||(this.stashCoordinates=[0,0]),this.stashCoordinates[0]=t},qi.stashY=function(t){this.stashCoordinates||(this.stashCoordinates=[0,0]),this.stashCoordinates[1]=t},qi.stashWidth=function(t){if(!this.stashDimensions){let t=this.currentDimensions;this.stashDimensions=[t[0],t[1]]}this.stashDimensions[0]=t},qi.stashHeight=function(t){if(!this.stashDimensions){let t=this.currentDimensions;this.stashDimensions=[t[0],t[1]]}this.stashDimensions[1]=t},Qi.stashX=function(t){this.stashCoordinates||(this.stashCoordinates=[0,0]);let e=this.stashCoordinates;e[0]=addStrings(e[0],t)},Qi.stashY=function(t){this.stashCoordinates||(this.stashCoordinates=[0,0]);let e=this.stashCoordinates;e[1]=addStrings(e[1],t)},Qi.stashWidth=function(t){if(!this.stashDimensions){let t=this.currentDimensions;this.stashDimensions=[t[0],t[1]]}let e=this.stashDimensions;e[0]=addStrings(e[0],t)},Qi.stashHeight=function(t){if(!this.stashDimensions){let t=this.currentDimensions;this.stashDimensions=[t[0],t[1]]}let e=this.stashDimensions;e[1]=addStrings(e[1],t)},qi.clearAlpha=function(t){t.toFixed&&(t>1?t=1:t<0&&(t=0),this.clearAlpha=t)},Qi.clearAlpha=function(t){t.toFixed&&((t+=this.clearAlpha)>1?t=1:t<0&&(t=0),this.clearAlpha=t)},qi.smoothFont=function(t){const{element:e}=this;if(e){const{style:i}=e;i&&(t?(i.webkitFontSmoothing="auto",i.mozOsxFontSmoothing="auto",i.smoothFont="auto"):(i.webkitFontSmoothing="none",i.mozOsxFontSmoothing="grayscale",i.smoothFont="never"))}},qi.checkForEntityHover=function(t){g[this.name].set({checkForEntityHover:t})},qi.onEntityHover=function(t){g[this.name].set({onEntityHover:t})},qi.onEntityNoHover=function(t){g[this.name].set({onEntityNoHover:t})},Ki.group=function(){return g[this.name]},Ui.checkSource=function(t,e){this.currentDimensions[0]===t&&this.currentDimensions[1]===e||this.notifySubscribers()},Ui.getData=function(t,e){return this.checkSource(this.sourceNaturalDimensions[0],this.sourceNaturalDimensions[1]),this.buildStyle(e)},Ui.updateArtefacts=function(t=q){const e=this.groupBuckets;let i,s,n,r,o,a;for(n=0,r=e.length;ns?(o[0]=i((n-g*s)/2),o[1]=0,o[2]=i(g*s),o[3]=i(y*s)):(o[0]=0,o[1]=i((r-y*t)/2),o[2]=i(g*t),o[3]=i(y*t));break;case"cover":t=n/(g||1),s=r/(y||1),t0&&(this.paste||(this.paste=[]),o=this.paste,this.noDeltaUpdates||this.setDelta(this.delta),this.cleared||this.compiled||this.prepareStamp(),e.globalCompositeOperation=h,e.globalAlpha=c,o[0]=i(-p[0]*a),o[1]=i(-p[1]*a),o[2]=i(g*a),o[3]=i(y*a),this.rotateDestination(e,...m));e.drawImage(d,0,0,g,y,...o),e.restore()}},Ui.applyFilters=function(){let t=this.engine,e=t.getImageData(0,0,this.currentDimensions[0],this.currentDimensions[1]);this.preprocessFilters(this.currentFilters);let i=Ai.action({identifier:this.filterIdentifier,image:e,filters:this.currentFilters});i&&t.putImageData(i,0,0)},Ui.stashOutputAction=function(){if(this.stashOutput){this.stashOutput=!1;let{currentDimensions:t,stashCoordinates:e,stashDimensions:i,engine:s}=this,[n,r]=t,o=e?e[0]:0,a=e?e[1]:0,l=i?i[0]:n,h=i?i[1]:r;if((l.substring||h.substring||o.substring||a.substring||o||a||l!==n||h!==r)&&(l.substring&&(l=parseFloat(l)/100*n),(isNaN(l)||l<=0)&&(l=1),l>n&&(l=n),h.substring&&(h=parseFloat(h)/100*r),(isNaN(h)||h<=0)&&(h=1),h>r&&(h=r),o.substring&&(o=parseFloat(o)/100*n),(isNaN(o)||o<0)&&(o=0),o+l>n&&(o=n-l),a.substring&&(a=parseFloat(a)/100*r),(isNaN(a)||a<0)&&(a=0),a+h>r&&(a=r-h)),s.save(),s.setTransform(1,0,0,1,0,0),this.stashedImageData=s.getImageData(o,a,l,h),s.restore(),this.stashOutputAsAsset){const t=this.stashOutputAsAsset.substring?this.stashOutputAsAsset:`${this.name}-image`;let e,i;if(this.stashOutputAsAsset=!1,i=hi(),e=i.element,e.width=l,e.height=h,i.engine.putImageData(this.stashedImageData,0,0),this.stashedImage)this.stashedImage.src=e.toDataURL();else{let i=this.stashedImage=document.createElement("img");i.id=t,i.onload=function(){zt.appendChild(i),Ri(`#${t}`)},i.src=e.toDataURL()}ci(i)}}},Ui.getHost=function(){if(this.currentHost)return this.currentHost;if(this.host){let t=l[this.host]||o[this.host];return t&&(this.currentHost=t),!!t&&this.currentHost}return!1},Ui.updateBaseHere=function(t,e){if(this.isBase){this.here||(this.here={});let i=this.here,s=this.currentDimensions,n=t.active,r=t.localListener?t.originalWidth:t.w,o=t.localListener?t.originalHeight:t.h;if(s[0]!==r||s[1]!==o){this.basePaste||(this.basePaste=[]);let a,l,h=this.basePaste[0],c=s[0],u=s[1],d=r,f=o,p=t.x,m=t.y,g=c/d||1,y=u/f||1,b=Math.round;switch(i.w=c,i.h=u,e){case"contain":case"cover":h?(a=(d-c/y)/2,i.x=b((p-a)*y),i.y=b(m*y)):(l=(f-u/g)/2,i.x=b(p*g),i.y=b((m-l)*g));break;case"fill":i.x=b(p*g),i.y=b(m*y);break;default:a=(d-c)/2,l=(f-u)/2,i.x=b(p-a),i.y=b(m-l)}(i.x<0||i.x>c)&&(n=!1),(i.y<0||i.y>u)&&(n=!1),i.active=n}else i.x=t.x,i.y=t.y,i.w=r,i.h=o,i.active=n;t.baseActive=n}},Ui.prepareStamp=function(){(this.dirtyScale||this.dirtyDimensions||this.dirtyStart||this.dirtyOffset||this.dirtyHandle)&&(this.dirtyPathObject=!0),this.dirtyScale&&this.cleanScale(),this.dirtyDimensions&&(this.cleanDimensions(),this.dirtyAssetSubscribers=!0),this.dirtyLock&&this.cleanLock(),this.dirtyStart&&this.cleanStart(),this.dirtyOffset&&this.cleanOffset(),this.dirtyHandle&&this.cleanHandle(),this.dirtyRotation&&this.cleanRotation(),(this.isBeingDragged||this.lockTo.indexOf("mouse")>=0)&&(this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtyStampHandlePositions&&this.cleanStampHandlePositions(),this.dirtyPathObject&&this.cleanPathObject(),this.dirtyPositionSubscribers&&this.updatePositionSubscribers(),this.dirtyAssetSubscribers&&(this.dirtyAssetSubscribers=!1,this.notifySubscribers())},Ui.cleanPathObject=function(){if(this.dirtyPathObject=!1,!this.noPathUpdates||!this.pathObject){let t=this.pathObject=new Path2D,e=this.currentStampHandlePosition,i=this.currentScale,s=this.currentDimensions,n=-e[0]*i,r=-e[1]*i,o=s[0]*i,a=s[1]*i;t.rect(n,r,o,a)}},Ui.updateHere=function(){this.here||(this.here={});let t=this.here,[e,i]=this.currentDimensions;t.w=e,t.h=i,t.x=-1e4,t.y=-1e4,t.active=!1;let s=this.currentHost;if(s){let e=s.here;if(e&&e.active){let{x:i,y:s,w:n,h:r}=e;this.pathObject&&!this.dirtyPathObject||this.cleanPathObject();let o=hi(),a=o.engine,[l,h]=this.currentStampPosition;o.rotateDestination(a,l,h,this);let c=a.isPointInPath(this.pathObject,i,s);if(ci(o),t.active=c,c){let[e,n]=this.currentStampHandlePosition,{flipUpend:r,flipReverse:o,roll:a,scale:c}=this;if(c){let u=(i-l)/c,d=(s-h)/c;if(o&&(u=-u),r&&(d=-d),a){(o&&!r||!o&&r)&&(a=-a);let t=fi(u,d);t.rotate(-a),[u,d]=t,pi(t)}u+=e,d+=n,t.x=u,t.y=d}}}}};const Ji=function(t){if(t){if(t.setTransform(1,0,0,1,0,0),!$t()){const e=Tt();return t.scale(e,e),e}t.scale(1,1)}return 1};H.Cell=Cell;const Vector=function(t,e,i){return this.x=0,this.y=0,this.z=0,ut(t)&&this.set(t,e,i),this};let ts=Vector.prototype=Object.create(Object.prototype);ts.type="Vector",ts.getXYCoordinate=function(){return[this.x,this.y]},ts.getXYZCoordinate=function(){return[this.x,this.y,this.z]},ts.setX=function(t){if(!ut(t))throw new Error(`${this.name} Vector error - setX() arguments error: ${t}`);return this.x=t,this},ts.setY=function(t){if(!ut(t))throw new Error(`${this.name} Vector error - setY() arguments error: ${t}`);return this.y=t,this},ts.setZ=function(t){if(!ut(t))throw new Error(`${this.name} Vector error - setZ() arguments error: ${t}`);return this.z=t,this},ts.setXY=function(t,e){if(!dt(t,e))throw new Error(`${this.name} Vector error - setXY() arguments error: ${t}, ${e}`);return this.x=t,this.y=e,this},ts.set=function(t,e,i){return rt(t)?this.setFromVector(t):Array.isArray(t)?this.setFromArray(t):dt(t,e)?this.setFromArray([t,e,i]):this},ts.setFromArray=function(t){if(!Array.isArray(t))throw new Error(`${this.name} Vector error - setFromArray() arguments error: ${t}`);let[e,i,s]=t;return nt(e)&&(this.x=e),nt(i)&&(this.y=i),nt(s)&&(this.z=s),this},ts.setFromVector=function(t){if(!rt(t))throw new Error(`${this.name} Vector error - setFromVector() arguments error: ${JSON.stringify(t)}`);let{x:e,y:i,z:s}=t;return nt(e)&&(this.x=e),nt(i)&&(this.y=i),nt(s)&&(this.z=s),this},ts.zero=function(){return this.x=0,this.y=0,this.z=0,this},ts.vectorAdd=function(t=q){if(Array.isArray(t))return this.vectorAddArray(t);let{x:e,y:i,z:s}=t;return nt(e)&&(this.x+=e),nt(i)&&(this.y+=i),nt(s)&&(this.z+=s),this},ts.vectorAddArray=function(t=[]){let[e,i,s]=t;return nt(e)&&(this.x+=e),nt(i)&&(this.y+=i),nt(s)&&(this.z+=s),this},ts.vectorSubtract=function(t=q){if(Array.isArray(t))return this.vectorSubtractArray(t);let{x:e,y:i,z:s}=t;return nt(e)&&(this.x-=e),nt(i)&&(this.y-=i),nt(s)&&(this.z-=s),this},ts.vectorSubtractArray=function(t){let[e,i,s]=t;return nt(e)&&(this.x-=e),nt(i)&&(this.y-=i),nt(s)&&(this.z-=s),this},ts.scalarMultiply=function(t){if(!nt(t))throw new Error(`${this.name} Vector error - scalarMultiply() argument not a number: ${t}`);return this.x*=t,this.y*=t,this.z*=t,this},ts.vectorMultiply=function(t=q){if(Array.isArray(t))return this.vectorMultiplyArray(t);let{x:e,y:i,z:s}=t;return nt(e)&&(this.x*=e),nt(i)&&(this.y*=i),nt(s)&&(this.z*=s),this},ts.vectorMultiplyArray=function(t){let[e,i,s]=t;return nt(e)&&(this.x*=e),nt(i)&&(this.y*=i),nt(s)&&(this.z*=s),this},ts.scalarDivide=function(t){if(!nt(t))throw new Error(`${this.name} Vector error - scalarDivide() argument not a number: ${t}`);if(!t)throw new Error(`${this.name} Vector error - scalarDivide() division by zero: ${t}`);return this.x/=t,this.y/=t,this.z/=t,this},ts.getMagnitude=function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},ts.rotate=function(t){if(!nt(t))throw new Error(`${this.name} Vector error - rotate() argument not a number: ${t}`);let e=Math.atan2(this.y,this.x);e+=.01745329251*t;let i=this.getMagnitude();return this.x=i*Math.cos(e),this.y=i*Math.sin(e),this},ts.reverse=function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},ts.normalize=function(){let t=this.getMagnitude();return t>0&&(this.x/=t,this.y/=t,this.z/=t),this};const es=[],is=function(t,e,i){es.length||es.push(new Vector);let s=es.shift();return s.set(t,e,i),s},ss=function(t){t&&"Vector"===t.type&&es.push(t.zero())},ns=function(t,e,i){return new Vector(t,e,i)};H.Vector=Vector;const Quaternion=function(t=q){return this.name=t.name||"generic",this.n=t.n||1,this.v=ns(),this.set(t),this};let rs=Quaternion.prototype=Object.create(Object.prototype);rs.type="Quaternion",rs.set=function(t=q){if(ot(t))return this.setFromQuaternion(t);if(pt(t.pitch,t.yaw,t.roll))return this.setFromEuler(t);let e,i,s,n,r,o=this.v;return r=!(!ut(t.vector)&&!ut(t.v))&&(t.vector||t.v),n=!(!ut(t.scalar)&&!ut(t.n))&&(t.scalar||t.n||0),e=r?r.x||0:t.x||!1,i=r?r.y||0:t.y||!1,s=r?r.z||0:t.z||!1,this.n=nt(n)?n:this.n,o.x=nt(e)?e:o.x,o.y=nt(i)?i:o.y,o.z=nt(s)?s:o.z,this},rs.setFromQuaternion=function(t){if(!ot(t))throw new Error(`${this.name} Quaternion error - setFromQuaternion() bad argument: ${t}`);let e=this.v,i=t.v;return this.n=t.n,e.x=i.x,e.y=i.y,e.z=i.z,this},rs.setFromEuler=function(t=q){let e,i,s,n,r,o,a,l,h,c=Math.cos,u=Math.sin,d=this.v;return e=(t.pitch||t.x||0)*gt,i=(t.yaw||t.y||0)*gt,s=(t.roll||t.z||0)*gt,n=c(e/2),r=c(i/2),o=c(s/2),a=u(e/2),l=u(i/2),h=u(s/2),d.x=a*r*o+n*l*h,d.y=n*l*o+a*r*h,d.z=n*r*h-a*l*o,this.n=n*r*o-a*l*h,this},rs.zero=function(){let t=this.v;return this.n=1,t.x=0,t.y=0,t.z=0,this},rs.getMagnitude=function(){let t=this.v;return Math.sqrt(this.n*this.n+t.x*t.x+t.y*t.y+t.z*t.z)},rs.normalize=function(){let t=this.getMagnitude(),e=this.v;if(!t)throw new Error(`${this.name} Quaternion error - normalize() division by zero: ${t}`);return this.n/=t,this.n=this.n>-1e-6&&this.n<1e-6?0:this.n,e.x/=t,e.x=e.x>-1e-6&&e.x<1e-6?0:e.x,e.y/=t,e.y=e.y>-1e-6&&e.y<1e-6?0:e.y,e.z/=t,e.z=e.z>-1e-6&&e.z<1e-6?0:e.z,this},rs.quaternionMultiply=function(t){if(!ot(t))throw new Error(`${this.name} Quaternion error - quaternionMultiply() bad argument: ${t}`);let e=this.v,i=t.v,s=this.n,n=e.x,r=e.y,o=e.z,a=t.n,l=i.x,h=i.y,c=i.z;return this.n=s*a-n*l-r*h-o*c,e.x=s*l+n*a+r*c-o*h,e.y=s*h+r*a+o*l-n*c,e.z=s*c+o*a+n*h-r*l,this},rs.getAngle=function(t){let e;return t=!!ut(t)&&t,e=2*Math.acos(this.n),t&&(e*=1/gt),e>-1e-6&&e<1e-6?0:e},rs.quaternionRotate=function(t){if(!ot(t))throw new Error(`${this.name} Quaternion error - quaternionRotate() bad argument: ${t}`);let e=as(t),i=as(this);return this.setFromQuaternion(e.quaternionMultiply(i)),ls(e),ls(i),this};const os=[],as=function(t){os.length||os.push(hs({name:"pool"}));let e=os.shift();return e.set(t),e},ls=function(t){t&&"Quaternion"===t.type&&os.push(t.zero())},hs=function(t){return new Quaternion(t)};function cs(t=q){(t=Vi(t=Gi(t=Ni(t=Yi(t=Xi(t=ji(t))))))).defs=at(t.defs,{domElement:"",pitch:0,yaw:0,offsetZ:0,css:null,classes:"",position:"absolute",smoothFont:!0,checkForResize:!1,trackHere:"",activePadding:5,includeInTabNavigation:!1,moreContrastAction:null,otherContrastAction:null,reduceMotionAction:null,noPreferenceMotionAction:null,colorSchemeLightAction:null,colorSchemeDarkAction:null,reduceTransparencyAction:null,noPreferenceTransparencyAction:null,reduceDataAction:null,noPreferenceDataAction:null}),t.packetExclusions=ht(t.packetExclusions,["domElement","pathCorners","rotation"]),t.packetFunctions=ht(t.packetFunctions,["onEnter","onLeave","onDown","onUp"]),t.processDOMPacketOut=function(t,e,i){return this.processFactoryPacketOut(t,e,i)},t.processFactoryPacketOut=function(t,e,i){let s=!0;return i.indexOf(t)<0&&e===this.defs[t]&&(s=!1),s},t.finalizePacketOut=function(t,e){if(it(this.domElement)){let e=this.domElement,i=e.cloneNode(!0);i.querySelectorAll('[data-scrawl-corner-div="sc"]').forEach((t=>i.removeChild(t))),t.outerHTML=i.outerHTML,t.host=e.parentElement.id}return t=this.handlePacketAnchor(t,e)},t.postCloneAction=function(t,e){return this.onEnter&&(t.onEnter=this.onEnter),this.onLeave&&(t.onLeave=this.onLeave),this.onDown&&(t.onDown=this.onDown),this.onUp&&(t.onUp=this.onUp),t};let e=t.setters,i=t.deltaSetters;e.trackHere=function(t){var e;ut(t)&&(t?(ht(be,this.name),"local"===t&&(rt(e=this)&&(e.localMouseListener&&e.localMouseListener(),e.here||(e.here={}),e.here.originalWidth=e.currentDimensions[0],e.here.originalHeight=e.currentDimensions[1],e.localMouseListener=xt("move",(function(t){e.here&&(e.here.x=Math.round(parseFloat(t.offsetX)),e.here.y=Math.round(parseFloat(t.offsetY)))}),e.domElement)))):(ct(be,this.name),function(t){rt(t)&&(t.localMouseListener&&t.localMouseListener(),t.localMouseListener=!1)}(this)),this.trackHere=t)},e.position=function(t){this.position=t,this.dirtyPosition=!0},e.smoothFont=function(t){this.smoothFont=t,this.dirtySmoothFont=!0},e.visibility=function(t){this.visibility=t,this.dirtyVisibility=!0},e.offsetZ=function(t){this.offsetZ=t,this.dirtyOffsetZ=!0},i.offsetZ=function(t){this.offsetZ+=t,this.dirtyOffsetZ=!0},e.roll=function(t){this.roll=this.checkRotationAngle(t),this.dirtyRotation=!0},i.roll=function(t){this.roll=this.checkRotationAngle(this.roll+t),this.dirtyRotation=!0},e.pitch=function(t){this.pitch=this.checkRotationAngle(t),this.dirtyRotation=!0},i.pitch=function(t){this.pitch=this.checkRotationAngle(this.pitch+t),this.dirtyRotation=!0},e.yaw=function(t){this.yaw=this.checkRotationAngle(t),this.dirtyRotation=!0},i.yaw=function(t){this.yaw=this.checkRotationAngle(this.yaw+t),this.dirtyRotation=!0},e.css=function(t){this.css=this.css?at(this.css,t):t,this.dirtyCss=!0},e.classes=function(t){this.classes=t,this.dirtyClasses=!0},e.domAttributes=function(t){this.updateDomAttributes(t)},e.includeInTabNavigation=function(t){const e=this.domElement;e&&(this.includeInTabNavigation=t,t?e.setAttribute("tabindex",0):e.setAttribute("tabindex",-1))},t.checkRotationAngle=function(t){return(t<-180||t>180)&&(t+=t>0?-360:360),t},t.updateDomAttributes=function(t,e){if(this.domElement){let i=this.domElement;t.substring&&ut(e)?e?i.setAttribute(t,e):i.removeAttribute(t):rt(t)&&Object.entries(t).forEach((([t,e])=>{e?i.setAttribute(t,e):i.removeAttribute(t)}))}return this},t.initializeDomLayout=function(t){let e=t.domElement,i=e.style;if(i.boxSizing="border-box",e&&t.setInitialDimensions){let s=e.getBoundingClientRect();e.style.transform,e.style.transformOrigin;let n,r=!1;if(t&&t.host&&(r=t.host,r.substring&&o[r]&&(r=o[r])),this.currentDimensions[0]=s.width,this.currentDimensions[1]=s.height,t.width=s.width,t.height=s.height,e.className&&(t.classes=e.className),r&&r.domElement&&(n=r.domElement.getBoundingClientRect(),n&&(t.startX=s.left-n.left,t.startY=s.top-n.top)),"Stack"===this.type){ut(t.perspective)||ut(t.perspectiveZ)||(t.perspectiveZ=ut(i.perspective)&&i.perspective?parseFloat(i.perspective):0);let e=i.perspectiveOrigin;e.length&&(e=e.split(" "),e.length>0&&!ut(t.perspective)&&!ut(t.perspectiveX)&&(t.perspectiveX=e[0]),ut(t.perspective)||ut(t.perspectiveY)||(e.length>1?t.perspectiveY=e[1]:t.perspectiveY=e[0]))}}},t.addClasses=function(t){if(t.substring){let e=this.classes;e+=` ${t}`,e=e.trim(),e=e.replace(/[\s\uFEFF\xA0]+/g," "),e!==this.classes&&(this.classes=e,this.dirtyClasses=!0)}return this},t.removeClasses=function(t){if(t.substring){let e,i=this.classes;t.split().forEach((t=>{e=new RegExp(" ?"+t+" ?"),i=i.replace(e," "),i=i.trim(),i=i.replace(/[\s\uFEFF\xA0]+/g," ")})),i!==this.classes&&(this.classes=i,this.dirtyClasses=!0)}return this},t.emptyElementTagNames=["AREA","BASE","BR","COL","EMBED","HR","IMG","INPUT","KEYGEN","LINK","META","PARAM","SOURCE","TRACK","WBR","CANVAS"],t.addPathCorners=function(){if(this.domElement&&!this.noUserInteraction&&this.emptyElementTagNames.indexOf(this.domElement.tagName)<0){let t=function(){let t=document.createElement("div");return t.style.width=0,t.style.height=0,t.style.position="absolute",t.style.margin=0,t.style.border=0,t.style.padding=0,t},e=t(),i=t(),s=t(),n=t();e.style.top="0%",e.style.left="0%",e.setAttribute("data-scrawl-corner-div","sc"),i.style.top="0%",i.style.left="100%",i.setAttribute("data-scrawl-corner-div","sc"),s.style.top="100%",s.style.left="100%",s.setAttribute("data-scrawl-corner-div","sc"),n.style.top="100%",n.style.left="0%",n.setAttribute("data-scrawl-corner-div","sc");let r=this.domElement;r.appendChild(e),r.appendChild(i),r.appendChild(s),r.appendChild(n),this.pathCorners.push(e),this.pathCorners.push(i),this.pathCorners.push(s),this.pathCorners.push(n),this.currentCornersData||(this.currentCornersData=[])}return this},t.checkCornerPositions=function(t){let e=this.pathCorners;if(4===e.length){let i,s=this.getHere(),n=Se.scrollX-(s.offsetX||0),r=Se.scrollY-(s.offsetY||0),o=Math.round,a=[];const l=function(t){let e=t[0];e?(a.push(o(e.left+n)),a.push(o(e.top+r))):a.push(0,0)};switch(t){case"topLeft":return i=e[0].getClientRects(),l(i),a;case"topRight":return i=e[1].getClientRects(),l(i),a;case"bottomRight":return i=e[2].getClientRects(),l(i),a;case"bottomLeft":return i=e[3].getClientRects(),l(i),a;default:return e.forEach((t=>{it(t)&&(i=t.getClientRects(),l(i))})),a}}};const s=["topLeft","topRight","bottomRight","bottomLeft"];return t.getCornerCoordinate=function(t){return s.indexOf(t)>=0?this.checkCornerPositions(t):[].concat(this.currentStampPosition)},t.cleanPathObject=function(){if(this.dirtyPathObject=!1,this.domElement&&!this.noUserInteraction)if(this.pathCorners.length||this.addPathCorners(),this.pathCorners.length){this.currentCornersData||(this.currentCornersData=[]);let t=this.currentCornersData;t.length=0,t.push(...this.checkCornerPositions());let e=this.pathObject=new Path2D;e.moveTo(t[0],t[1]),e.lineTo(t[2],t[3]),e.lineTo(t[4],t[5]),e.lineTo(t[6],t[7]),e.closePath()}else{let t=this.pathObject=new Path2D;t.moveTo(0,0),t.lineTo(10,0),t.lineTo(0,10),t.lineTo(-10,0),t.closePath()}},t.checkHit=function(t=[],e){if(this.noUserInteraction)return!1;this.pathObject&&!this.dirtyPathObject||this.cleanPathObject();let i=Array.isArray(t)?t:[t],s=!1;e||(e=requestCell(),s=!0);let n,r,o=e.engine,a=this.currentStampPosition;return a[0],a[1],i.some((t=>{if(Array.isArray(t))n=t[0],r=t[1];else{if(!dt(t,t.x,t.y))return!1;n=t.x,r=t.y}return!(!n.toFixed||!r.toFixed||isNaN(n)||isNaN(r))&&o.isPointInPath(this.pathObject,n,r)}),this)?(s&&releaseCell(e),{x:n,y:r,artefact:this}):(s&&releaseCell(e),!1)},t.cleanRotation=function(){this.dirtyRotation=!1,this.rotation&&ot(this.rotation)||(this.rotation=hs()),this.currentRotation&&ot(this.rotation)||(this.currentRotation=hs());let t=this.rotation;t.setFromEuler({pitch:this.pitch||0,yaw:this.yaw||0,roll:this.roll||0}),1!==t.getMagnitude()&&t.normalize();let e=as(),i=this.path,s=this.mimic,n=this.pivot,r=this.lockTo;i&&r.indexOf("path")>=0?e.set(t):s&&this.useMimicRotation&&r.indexOf("mimic")>=0?ut(s.currentRotation)?(e.set(s.currentRotation),this.addOwnRotationToMimic&&e.quaternionRotate(t)):this.dirtyMimicRotation=!0:(e.set(t),n&&this.addPivotRotation&&r.indexOf("pivot")>=0&&(ut(n.currentRotation)?e.quaternionRotate(n.currentRotation):this.dirtyPivotRotation=!0)),this.currentRotation.set(e),ls(e),this.dirtyPositionSubscribers=!0,this.mimicked&&this.mimicked.length&&(this.dirtyMimicRotation=!0)},t.cleanOffsetZ=function(){this.dirtyOffsetZ=!1},t.cleanContent=function(){this.dirtyContent=!1,this.domElement&&(this.dirtyDimensions=!0)},t.cleanDisplayShape=Z,t.cleanDisplayArea=Z,t.prepareStamp=function(){(this.dirtyScale||this.dirtyDimensions||this.dirtyStart||this.dirtyOffset||this.dirtyHandle||this.dirtyRotation)&&(this.dirtyPathObject=!0),this.dirtyContent&&this.cleanContent(),this.dirtyScale&&this.cleanScale(),this.dirtyDimensions&&this.cleanDimensions(),this.dirtyDisplayArea&&this.cleanDisplayArea(),this.dirtyDisplayShape&&this.cleanDisplayShape(),this.dirtyLock&&this.cleanLock(),this.dirtyStart&&this.cleanStart(),this.dirtyOffset&&this.cleanOffset(),this.dirtyOffsetZ&&this.cleanOffsetZ(),this.dirtyHandle&&this.cleanHandle(),this.dirtyRotation&&this.cleanRotation(),(this.isBeingDragged||this.lockTo.indexOf("mouse")>=0||this.lockTo.indexOf("particle")>=0)&&(this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0),this.pivoted.length&&(this.dirtyStampPositions=!0),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtyStampHandlePositions&&this.cleanStampHandlePositions(),this.dirtyPathObject&&this.cleanPathObject()},t.stamp=function(){if(!this.domElement)return!1;let t,e,i,s,n,[r,o]=this.currentStampPosition,[a,l]=this.currentStampHandlePosition,h=this.currentScale,c=this.currentRotation,u=`${a}px ${l}px 0`,d=`translate(${r-a}px,${o-l}px)`;(this.yaw||this.pitch||this.roll||this.pivot&&this.addPivotRotation||this.mimic&&this.useMimicRotation||this.path&&this.addPathRotation)&&(t=c.v,e=t.x,i=t.y,s=t.z,n=c.getAngle(!1),d+=` rotate3d(${e},${i},${s},${n}rad)`),this.offsetZ&&(d+=` translateZ(${this.offsetZ}px)`),1!==h&&(d+=` scale(${h},${h})`),d!==this.currentTransformString&&(this.currentTransformString=d,this.dirtyTransform=!0),u!==this.currentTransformOriginString&&(this.currentTransformOriginString=u,this.dirtyTransformOrigin=!0),(this.dirtyTransform||this.dirtyPerspective||this.dirtyPosition||this.dirtyDomDimensions||this.dirtyTransformOrigin||this.dirtyVisibility||this.dirtySmoothFont||this.dirtyCss||this.dirtyClasses||this.domShowRequired)&&(this.domShowRequired=!1,function(t=""){if(!t)throw new Error(`core/document addDomShowElement() error - false argument supplied: ${t}`);if(!t.substring)throw new Error(`core/document addDomShowElement() error - argument not a string: ${t}`);ht(Yt,t)}(this.name),function(t=!0){Nt=t}(!0)),this.dirtyPositionSubscribers&&this.updatePositionSubscribers(),(this.dirtyMimicRotation||this.dirtyPivotRotation)&&(this.dirtyMimicRotation=!1,this.dirtyPivotRotation=!1,this.dirtyRotation=!0),this.dirtyMimicScale&&(this.dirtyMimicScale=!1,this.dirtyScale=!0)},t.initializeAccessibility=function(){this.reduceMotionAction=Z,this.noPreferenceMotionAction=Z,this.colorSchemeLightAction=Z,this.colorSchemeDarkAction=Z,this.reduceTransparencyAction=Z,this.noPreferenceTransparencyAction=Z,this.reduceDataAction=Z,this.noPreferenceDataAction=Z,this.moreContrastAction=Z,this.otherContrastAction=Z},e.moreContrastAction=function(t){st(t)&&(this.moreContrastAction=t)},t.setMoreContrastAction=function(t){st(t)&&(this.moreContrastAction=t)},e.otherContrastAction=function(t){st(t)&&(this.otherContrastAction=t)},t.setOtherContrastAction=function(t){st(t)&&(this.otherContrastAction=t)},t.contrastActions=function(){const t=this.here;if(ut(t)){const e=t.prefersContrast;ut(e)&&(e?this.moreContrastAction():this.otherContrastAction())}},e.reduceMotionAction=function(t){st(t)&&(this.reduceMotionAction=t)},t.setReduceMotionAction=function(t){st(t)&&(this.reduceMotionAction=t)},e.noPreferenceMotionAction=function(t){st(t)&&(this.noPreferenceMotionAction=t)},t.setNoPreferenceMotionAction=function(t){st(t)&&(this.noPreferenceMotionAction=t)},t.reducedMotionActions=function(){const t=this.here;if(ut(t)){const e=t.prefersReducedMotion;ut(e)&&(e?this.reduceMotionAction():this.noPreferenceMotionAction())}},e.colorSchemeLightAction=function(t){st(t)&&(this.colorSchemeLightAction=t)},t.setColorSchemeLightAction=function(t){st(t)&&(this.colorSchemeLightAction=t)},e.colorSchemeDarkAction=function(t){st(t)&&(this.colorSchemeDarkAction=t)},t.setColorSchemeDarkAction=function(t){st(t)&&(this.colorSchemeDarkAction=t)},t.colorSchemeActions=function(){const t=this.here;if(ut(t)){const e=t.prefersDarkColorScheme;ut(e)&&(e?this.colorSchemeDarkAction():this.colorSchemeLightAction())}},e.reduceTransparencyAction=function(t){st(t)&&(this.reduceTransparencyAction=t)},t.setReduceTransparencyAction=function(t){st(t)&&(this.reduceTransparencyAction=t)},e.noPreferenceTransparencyAction=function(t){st(t)&&(this.noPreferenceTransparencyAction=t)},t.setNoPreferenceTransparencyAction=function(t){st(t)&&(this.noPreferenceTransparencyAction=t)},t.reducedTransparencyActions=function(){const t=this.here;if(ut(t)){const e=t.prefersReduceTransparency;ut(e)&&(e?this.reduceTransparencyAction():this.noPreferenceTransparencyAction())}},e.reduceDataAction=function(t){st(t)&&(this.reduceDataAction=t)},t.setReduceDataAction=function(t){st(t)&&(this.reduceDataAction=t)},e.noPreferenceDataAction=function(t){st(t)&&(this.noPreferenceDataAction=t)},t.setNoPreferenceDataAction=function(t){st(t)&&(this.noPreferenceDataAction=t)},t.reducedDataActions=function(){const t=this.here;if(ut(t)){const e=t.prefersReduceData;ut(e)&&(e?this.reduceDataAction():this.noPreferenceDataAction())}},t.checkAccessibilityValues=function(){this.contrastActions(),this.reducedMotionActions(),this.colorSchemeActions(),this.reducedTransparencyActions(),this.reducedDataActions()},t.apply=function(){je(),this.prepareStamp(),this.stamp(),Gt(this.name),this.dirtyPathObject=!0,this.cleanPathObject()},t}function us(t=q){const e={breakToBanner:3,breakToLandscape:1.5,breakToPortrait:.65,breakToSkyscraper:.35,actionBannerShape:null,actionLandscapeShape:null,actionRectangleShape:null,actionPortraitShape:null,actionSkyscraperShape:null,breakToSmallest:2e4,breakToSmaller:8e4,breakToLarger:18e4,breakToLargest:32e4,actionSmallestArea:null,actionSmallerArea:null,actionRegularArea:null,actionLargerArea:null,actionLargestArea:null};t.defs=at(t.defs,e),at(t,e),t.packetFunctions=ht(t.packetFunctions,["actionBannerShape","actionLandscapeShape","actionRectangleShape","actionPortraitShape","actionSkyscraperShape","actionSmallestArea","actionSmallerArea","actionRegularArea","actionLargerArea","actionLargestArea"]);const i=t.getters,s=t.setters;return i.displayShape=function(){return this.currentDisplayShape},i.displayShapeBreakpoints=function(){return{breakToBanner:this.breakToBanner,breakToLandscape:this.breakToLandscape,breakToPortrait:this.breakToPortrait,breakToSkyscraper:this.breakToSkyscraper,breakToSmallest:this.breakToSmallest,breakToSmaller:this.breakToSmaller,breakToLarger:this.breakToLarger,breakToLargest:this.breakToLargest}},s.displayShapeBreakpoints=function(t=q){for(const[e,i]of Object.entries(t))if(nt(i))switch(e){case"breakToBanner":this.breakToBanner=i;break;case"breakToLandscape":this.breakToLandscape=i;break;case"breakToPortrait":this.breakToPortrait=i;break;case"breakToSkyscraper":this.breakToSkyscraper=i;break;case"breakToSmallest":this.breakToSmallest=i;break;case"breakToSmaller":this.breakToSmaller=i;break;case"breakToLarger":this.breakToLarger=i;break;case"breakToLargest":this.breakToLargest=i}this.dirtyDisplayShape=!0,this.dirtyDisplayArea=!0},t.setDisplayShapeBreakpoints=s.displayShapeBreakpoints,s.breakToBanner=function(t){nt(t)&&(this.breakToBanner=t),this.dirtyDisplayShape=!0},s.breakToLandscape=function(t){nt(t)&&(this.breakToLandscape=t),this.dirtyDisplayShape=!0},s.breakToPortrait=function(t){nt(t)&&(this.breakToPortrait=t),this.dirtyDisplayShape=!0},s.breakToSkyscraper=function(t){nt(t)&&(this.breakToSkyscraper=t),this.dirtyDisplayShape=!0},s.breakToSmallest=function(t){nt(t)&&(this.breakToSmallest=t),this.dirtyDisplayArea=!0},s.breakToSmaller=function(t){nt(t)&&(this.breakToSmaller=t),this.dirtyDisplayArea=!0},s.breakToLarger=function(t){nt(t)&&(this.breakToLarger=t),this.dirtyDisplayArea=!0},s.breakToLargest=function(t){nt(t)&&(this.breakToLargest=t),this.dirtyDisplayArea=!0},s.actionBannerShape=function(t){st(t)&&(this.actionBannerShape=t),this.dirtyDisplayShape=!0},t.setActionBannerShape=s.actionBannerShape,s.actionLandscapeShape=function(t){st(t)&&(this.actionLandscapeShape=t),this.dirtyDisplayShape=!0},t.setActionLandscapeShape=s.actionLandscapeShape,s.actionRectangleShape=function(t){st(t)&&(this.actionRectangleShape=t),this.dirtyDisplayShape=!0},t.setActionRectangleShape=s.actionRectangleShape,s.actionPortraitShape=function(t){st(t)&&(this.actionPortraitShape=t),this.dirtyDisplayShape=!0},t.setActionPortraitShape=s.actionPortraitShape,s.actionSkyscraperShape=function(t){st(t)&&(this.actionSkyscraperShape=t),this.dirtyDisplayShape=!0},t.setActionSkyscraperShape=s.actionSkyscraperShape,s.actionSmallestArea=function(t){st(t)&&(this.actionSmallestArea=t),this.dirtyDisplayArea=!0},t.setActionSmallestArea=s.actionSmallestArea,s.actionSmallerArea=function(t){st(t)&&(this.actionSmallerArea=t),this.dirtyDisplayArea=!0},t.setActionSmallerArea=s.actionSmallerArea,s.actionRegularArea=function(t){st(t)&&(this.actionRegularArea=t),this.dirtyDisplayArea=!0},t.setActionRegularArea=s.actionRegularArea,s.actionLargerArea=function(t){st(t)&&(this.actionLargerArea=t),this.dirtyDisplayArea=!0},t.setActionLargerArea=s.actionLargerArea,s.actionLargestArea=function(t){st(t)&&(this.actionLargestArea=t),this.dirtyDisplayArea=!0},t.setActionLargestArea=s.actionLargestArea,t.initializeDisplayShapeActions=function(){this.actionBannerShape=Z,this.actionLandscapeShape=Z,this.actionRectangleShape=Z,this.actionPortraitShape=Z,this.actionSkyscraperShape=Z,this.currentDisplayShape="",this.dirtyDisplayShape=!0,this.actionSmallestArea=Z,this.actionSmallerArea=Z,this.actionRegularArea=Z,this.actionLargerArea=Z,this.actionLargestArea=Z,this.currentDisplayArea="",this.dirtyDisplayArea=!0},t.cleanDisplayShape=function(){this.dirtyDisplayShape=!1;const[t,e]=this.currentDimensions;if(t>0&&e>0){const i=t/e,s=this.currentDisplayShape,n=this.breakToBanner,r=this.breakToLandscape,o=this.breakToPortrait,a=this.breakToSkyscraper;return i>n?"banner"!==s&&(this.currentDisplayShape="banner",this.actionBannerShape(),!0):i>r?"landscape"!==s&&(this.currentDisplayShape="landscape",this.actionLandscapeShape(),!0):i0&&e>0){const i=t*e,s=this.currentDisplayArea,n=this.breakToLargest,r=this.breakToLarger,o=this.breakToSmaller,a=this.breakToSmallest;return i>n?"largest"!==s&&(this.currentDisplayArea="largest",this.actionLargestArea(),!0):i>r?"larger"!==s&&(this.currentDisplayArea="larger",this.actionLargerArea(),!0):i=0?t:"none"},ps.title=function(t){this.title=t,this.dirtyAria=!0},ps.label=function(t){this.label=t,this.dirtyAria=!0},ps.description=function(t){this.description=t,this.dirtyAria=!0},ps.role=function(t){this.role=t,this.dirtyAria=!0},fs.backgroundColor=function(){return this.base.backgroundColor},ps.backgroundColor=function(t){this.base&&this.base.set({backgroundColor:t})},fs.alpha=function(){return this.base.alpha},ps.alpha=function(t){this.base&&this.base.set({alpha:t})},ms.alpha=function(t){this.base&&this.base.deltaSet({alpha:t})},fs.composite=function(){return this.base.composite},ps.composite=function(t){this.base&&this.base.set({composite:t})},ps.checkForEntityHover=function(t){this.base.set({checkForEntityHover:t})},ps.onEntityHover=function(t){this.base.set({onEntityHover:t})},ps.onEntityNoHover=function(t){this.base.set({onEntityNoHover:t})},fs.baseGroup=function(){return g[this.base.name]},fs.baseName=function(){return this.base.name},ds.setAsCurrentCanvas=function(){return this.base&&As(this),this},ds.setBase=function(t){return this.base&&(this.base.set(t),this.setBaseHelper()),this},ds.deltaSetBase=function(t){return this.base&&(this.base.deltaSet(t),this.setBaseHelper()),this},ds.updateBaseHere=function(){this.base&&this.base.updateBaseHere(this.here,this.fit)},ds.setBaseHelper=function(){let t={};this.base.dirtyScale&&(t.dirtyScale=!0),this.base.dirtyDimensions&&(t.dirtyDimensions=!0),this.base.dirtyLock&&(t.dirtyLock=!0),this.base.dirtyStart&&(t.dirtyStart=!0),this.base.dirtyOffset&&(t.dirtyOffset=!0),this.base.dirtyHandle&&(t.dirtyHandle=!0),this.base.dirtyRotation&&(t.dirtyRotation=!0),this.cleanCells(),this.base.prepareStamp(),this.updateCells(t)},ds.updateCells=function(t=q){const e=this.cells;for(let i,s=0,n=e.length;st.concat(e)),[]),this.cellBatchesShow=s.reduce(((t,e)=>t.concat(e)),[])},ds.cascadeEventAction=function(t,e={}){this.currentActiveEntityNames||(this.currentActiveEntityNames=[]);let i,s,n,r,a,l,h=this.currentActiveEntityNames,c=[],d=[],f=[],p=[],m=[],g=[];const y=this.cells;for(i=0,s=y.length;it.concat(e)),[]),i=0,s=c.length;ie.appendChild(t))),this.dirtyContent=!0}},xs.content=function(t){if(this.domElement){let e=this.domElement,i=e.querySelectorAll('[data-scrawl-corner-div="sc"]');e.innerHTML=t,i.forEach((t=>e.appendChild(t))),this.dirtyContent=!0}},vs.cleanDimensionsAdditionalActions=function(){this.dirtyDomDimensions=!0},vs.addCanvas=function(t=q){if(this.canvas)return this.canvas;{let e=document.createElement("canvas"),i=this.domElement;e.id=`${this.name}-canvas`;let s=i.getBoundingClientRect();window.getComputedStyle(i),i.parentNode.insertBefore(e,this.domElement);let n=gs({name:`${this.name}-canvas`,domElement:e,position:"absolute",width:s.width,height:s.height,mimic:this.name,lockTo:"mimic",useMimicDimensions:!0,useMimicScale:!0,useMimicStart:!0,useMimicHandle:!0,useMimicOffset:!0,useMimicRotation:!0,addOwnDimensionsToMimic:!1,addOwnScaleToMimic:!1,addOwnStartToMimic:!1,addOwnHandleToMimic:!1,addOwnOffsetToMimic:!1,addOwnRotationToMimic:!1});return n.set(t),this.canvas=n,n}};const Cs=function(t){return!!t&&new Element(t)};H.Element=Element;const Stack=function(t=q){let e,i;if(this.makeName(t.name),this.register(),this.initializePositions(),this.initializeCascade(),this.dimensions[0]=300,this.dimensions[1]=150,this.pathCorners=[],this.css={},this.here={},this.perspective={x:"50%",y:"50%",z:0},this.dirtyPerspective=!0,this.initializeDomLayout(t),e=$i({name:this.name,host:this.name}),this.addGroups(e.name),this.set(this.defs),this.initializeDisplayShapeActions(),this.initializeAccessibility(),this.set(t),i=this.domElement,i){i.dataset.isResponsive&&(this.isResponsive=!0),"root"===i.getAttribute("data-scrawl-group")&&(ht(At,this.name),Ot())}return this};let ws=Stack.prototype=Object.create(Object.prototype);ws.type="Stack",ws.lib="stack",ws.isArtefact=!0,ws.isAsset=!1,ws=me(ws),ws=Zi(ws),ws=cs(ws),ws=us(ws);ws.defs=at(ws.defs,{position:"relative",perspective:null,trackHere:"subscribe",isResponsive:!1,containElementsInHeight:!1}),ws.stringifyFunction=Z,ws.processPacketOut=Z,ws.finalizePacketOut=Z,ws.saveAsPacket=function(){return`[${this.name}, ${this.type}, ${this.lib}, {}]`},ws.clone=U,ws.factoryKill=function(){let t=this.name;ct(At,t),Ot(),ct(be,t),g[t]&&g[t].kill(),Object.entries(o).forEach((([e,i])=>{i.host===t&&i.kill()})),this.domElement.remove()};let Ps=ws.getters,Ds=ws.setters,Rs=ws.deltaSetters;Ps.perspectiveX=function(){return this.perspective.x},Ps.perspectiveY=function(){return this.perspective.y},Ps.perspectiveZ=function(){return this.perspective.z},Ds.perspectiveX=function(t){this.perspective.x=t,this.dirtyPerspective=!0},Ds.perspectiveY=function(t){this.perspective.y=t,this.dirtyPerspective=!0},Ds.perspectiveZ=function(t){this.perspective.z=t,this.dirtyPerspective=!0},Ds.perspective=function(t=q){this.perspective.x=ut(t.x)?t.x:this.perspective.x,this.perspective.y=ut(t.y)?t.y:this.perspective.y,this.perspective.z=ut(t.z)?t.z:this.perspective.z,this.dirtyPerspective=!0},Rs.perspectiveX=function(t){this.perspective.x=G(this.perspective.x,t),this.dirtyPerspective=!0},Rs.perspectiveY=function(t){this.perspective.y=G(this.perspective.y,t),this.dirtyPerspective=!0},Ps.group=function(){return g[this.name]},ws.updateArtefacts=function(t=q){this.groupBuckets.forEach((e=>{e.artefactCalculateBuckets.forEach((e=>{t.dirtyScale&&(e.dirtyScale=!0),t.dirtyDimensions&&(e.dirtyDimensions=!0),t.dirtyLock&&(e.dirtyLock=!0),t.dirtyStart&&(e.dirtyStart=!0),t.dirtyOffset&&(e.dirtyOffset=!0),t.dirtyHandle&&(e.dirtyHandle=!0),t.dirtyRotation&&(e.dirtyRotation=!0),t.dirtyPathObject&&(e.dirtyPathObject=!0)}))}))},ws.cleanDimensionsAdditionalActions=function(){this.groupBuckets&&this.updateArtefacts({dirtyDimensions:!0,dirtyPath:!0,dirtyStart:!0,dirtyHandle:!0}),this.dirtyDomDimensions=!0,this.dirtyPath=!0,this.dirtyStart=!0,this.dirtyHandle=!0,this.dirtyDisplayShape=!0,this.dirtyDisplayArea=!0},ws.cleanPerspective=function(){this.dirtyPerspective=!1;let t=this.perspective;this.domPerspectiveString=`perspective-origin: ${t.x} ${t.y}; perspective: ${t.z}px;`,this.domShowRequired=!0,this.groupBuckets&&this.updateArtefacts({dirtyHandle:!0,dirtyPathObject:!0})},ws.checkResponsive=function(){this.isResponsive&&this.trackHere&&(this.currentVportWidth||(this.currentVportWidth=Se.w),this.currentVportHeight||(this.currentVportHeight=Se.h),this.dirtyHeight&&this.containElementsInHeight&&(this.dirtyHeight=!1),this.currentVportWidth!==Se.w&&(this.currentVportWidth=Se.w,this.containElementsInHeight&&(this.dirtyHeight=!0)),this.currentVportHeight!==Se.h&&(this.currentVportHeight=Se.h))},ws.clear=function(){this.checkResponsive()},ws.compile=function(){this.sortGroups(),this.prepareStamp(),this.stamp(),this.groupBuckets.forEach((t=>t.stamp()))},ws.show=function(){Gt()},ws.render=function(){this.compile(),this.show()},ws.addExistingDomElements=function(t){let e,i,s,n,r;if(ut(t))for(e=t.substring?document.querySelectorAll(t):[].concat(t),n=0,r=e.length;n{if(null!=t.getAttribute("data-scrawl-stack")||et(t)||"SCRIPT"===t.tagName)t.setAttribute("data-scrawl-group",e);else{let n=t.getBoundingClientRect(),r=window.getComputedStyle(t),o=parseFloat(r.marginTop)+parseFloat(r.borderTopWidth)+parseFloat(r.paddingTop)+parseFloat(r.paddingBottom)+parseFloat(r.borderBottomWidth)+parseFloat(r.marginBottom);s=s||n.top-i.top;let a={name:t.id||t.getAttribute("name"),domElement:t,group:e,host:e,position:"absolute",width:n.width,height:n.height,startX:n.left-i.left,startY:s,classes:t.className?t.className:""};s+=o+n.height,Cs(a)}}))},Hs=function(t=q){let e,i,s,n,r,a,l="absolute";return e=t.element&&t.element.substring?document.querySelector(t.element):it(t.element)?t.element:document.createElement("div"),t.host&&t.host.substring?(i=document.querySelector(t.host),i||(i=document.body)):i=it(t.host)?t.host:ut(e.parentElement)?e.parentElement:document.body,ut(t.width)&&(e.style.width=t.width.toFixed?`${t.width}px`:t.width),ut(t.height)&&(e.style.height=t.height.toFixed?`${t.height}px`:t.height),a=t.name||e.id||e.getAttribute("name")||"",a||(a=generateUniqueString()),e.id=a,e.setAttribute("data-scrawl-stack","data-scrawl-stack"),i&&null!=i.getAttribute("data-scrawl-stack")?(s=o[i.id],r=s?s.name:"root"):r="root",e.setAttribute("data-scrawl-group",r),"root"===r&&(l="relative"),e.parentElement&&i.id===e.parentElement.id||i.appendChild(e),n=Fs({name:a,domElement:e,group:r,host:r,position:l,setInitialDimensions:!0}),Ms(e,a),Array.from(e.childNodes).forEach((t=>{t.id&&At.indexOf(t.id)>=0&&ct(At,t.id)})),delete t.name,delete t.element,delete t.host,delete t.width,delete t.height,n.set(t),Ot(),n},Is=function(t){let e=document.querySelector(`#${t}`);const i=C[t];if(i){if(null!=e.dataset.scrawlGroup)return i;E(t)}if(e){return Es(e)}},Bs=function(){!function(t="[data-scrawl-stack]"){document.querySelectorAll(t).forEach((t=>Es(t)))}(),function(t="[data-scrawl-canvas]"){let e;document.querySelectorAll(t).forEach(((t,i)=>{e=ys(t),i||As(e)}))}(),Y(),je(),we(),qt(!0),Te()},Ts=function(t){return t.length?t:(kt&&function(){const t=Math.floor;if(kt){kt=!1;const e=[];let i,s,n,r,a;for(n=0,r=At.length;nt.concat(e)),[]))}}(),St)},Ls=function(t,e){let i,s,n,r;for(i=0,s=t.length;i{let s=Object.assign({},t);s.name=`${s.name}_${i.name}`,s.target=i,e.push(new RenderAnimation(s))})),e}e=t.target&&t.target.substring?o[t.target]:t.target}else e={clear:$s,compile:js,show:Xs,checkAccessibilityValues:Z};this.makeName(t.name),this.order=ut(t.order)?t.order:this.defs.order,this.onRun=t.onRun||Z,this.onHalt=t.onHalt||Z,this.onKill=t.onKill||Z,this.target=e,this.commence=t.commence||Z,this.afterClear=t.afterClear||Z,this.afterCompile=t.afterCompile||Z,this.afterShow=t.afterShow||Z,this.afterCreated=t.afterCreated||Z,this.error=t.error||Z,this.readyToInitialize=!0,this.fn=function(){this.noTarget?(this.commence(),this.afterClear(),this.afterCompile(),this.afterShow(),this.readyToInitialize&&(this.afterCreated(this),this.readyToInitialize=!1)):this.isRunning()&&(this.commence(),this.target.clear(),this.afterClear(),this.target.compile(),this.afterCompile(),this.target.show(),this.afterShow(),this.readyToInitialize&&(this.target.checkAccessibilityValues(),this.afterCreated(this),this.readyToInitialize=!1))},this.register();const i=t.observer||!1;return i&&setTimeout((()=>{tt(i)?this.observer=vt(this,this.target):this.observer=vt(this,this.target,i)}),0),t.delay||this.run(),this};let Ns=RenderAnimation.prototype=Object.create(Object.prototype);Ns.type="RenderAnimation",Ns.lib="animation",Ns.isArtefact=!1,Ns.isAsset=!1,Ns=me(Ns);Ns.defs=at(Ns.defs,{order:1,onRun:null,onHalt:null,onKill:null,commence:null,afterClear:null,afterCompile:null,afterShow:null,afterCreated:null,error:null,target:null}),Ns.stringifyFunction=Z,Ns.processPacketOut=Z,Ns.finalizePacketOut=Z,Ns.saveAsPacket=function(){return`[${this.name}, ${this.type}, ${this.lib}, {}]`},Ns.clone=U,Ns.kill=function(){return this.onKill(),ct($,this.name),j(),this.deregister(),!0},Ns.run=function(){return this.onRun(),ht($,this.name),j(),this.target&&this.target.checkAccessibilityValues(),setTimeout((()=>pe()),20),this},Ns.start=function(){return this.readyToInitialize=!0,this.run()},Ns.isRunning=function(){return $.indexOf(this.name)>=0},Ns.halt=function(){return this.onHalt(),ct($,this.name),j(),this};const Gs=function(t){return!!t&&new RenderAnimation(t)};H.RenderAnimation=RenderAnimation;const UnstackedElement=function(t){let e=t.id||t.name;return this.makeName(e),this.register(),t.setAttribute("data-scrawl-name",this.name),this.domElement=t,this.elementComputedStyles=window.getComputedStyle(t),this.hostStyles=q,this.canvasStartX=0,this.canvasStartY=0,this.canvasWidth=0,this.canvasHeight=0,this.canvasZIndex=0,this};let zs=UnstackedElement.prototype=Object.create(Object.prototype);zs.type="UnstackedElement",zs.lib="unstackedelement",zs.isArtefact=!1,zs.isAsset=!1,zs=me(zs);zs.defs=at(zs.defs,{canvasOnTop:!1}),zs.getters,zs.setters,zs.deltaSetters,zs.demolish=function(t=!1){return!0},zs.addCanvas=function(t=q){if(!this.canvas){let e=document.createElement("canvas"),i=this.domElement,s=i.style;"static"===s.position&&(s.position="relative"),e.id=`${this.name}-canvas`,i.prepend(e);let n=gs({name:`${this.name}-canvas`,domElement:e,position:"absolute"});return this.canvas=n,n.set(t),this.updateCanvas(),n}},zs.includedStyles=["width","height","zIndex","borderBottomLeftRadius","borderBottomRightRadius","borderTopLeftRadius","borderTopRightRadius"],zs.mimickedStyles=["borderBottomLeftRadius","borderBottomRightRadius","borderTopLeftRadius","borderTopRightRadius"],zs.checkElementStyleValues=function(){let t={},e=this.domElement,i=this.canvas;if(e&&i&&i.domElement){let s=this.hostStyles,n=this.elementComputedStyles,r=i.domElement,o=this.includedStyles,{x:a,y:l,width:h,height:c}=e.getBoundingClientRect(),{x:u,y:d}=r.getBoundingClientRect(),{zIndex:f,width:p,height:m}=n;a=Math.floor(a),l=Math.floor(l),u=Math.floor(u),d=Math.floor(d),h=Math.floor(h),c=Math.floor(c),p=Math.floor(parseFloat(p)),m=Math.floor(parseFloat(m)),o.forEach((e=>{switch(e){case"width":let i=Math.max(p,h);this.canvasWidth!==i&&(this.canvasWidth=i,this.dirtyDimensions=!0);break;case"height":let r=Math.max(m,c);this.canvasHeight!==r&&(this.canvasHeight=r,this.dirtyDimensions=!0);break;case"zIndex":let o="auto"===f?0:parseInt(f,10);o=this.canvasOnTop?o+1:o-1,this.canvasZIndex!==o&&(this.canvasZIndex=o,this.dirtyZIndex=!0);break;default:let a=s[e],l=n[e];ut(a)&&a===l||(s[e]=l,t[e]=l)}}));let g=a-u,y=l-d;(g||y)&&(this.canvasStartX+=g,this.canvasStartY+=y,this.dirtyStart=!0)}return t},zs.updateCanvas=function(){if(this.canvas&&this.canvas.domElement){let t=this.canvas,e=t.domElement.style,i=this.mimickedStyles,s=this.checkElementStyleValues();for(let[t,n]of Object.entries(s))i.indexOf(t)>=0&&(e[t]=n);if(this.dirtyStart&&(this.dirtyStart=!1,t.set({startX:this.canvasStartX,startY:this.canvasStartY})),this.dirtyDimensions){this.dirtyDimensions=!1;let e=this.canvasWidth,i=this.canvasHeight;t.set({width:e,height:i}),t.dirtyDimensions=!0,t.base.set({width:e,height:i}),t.base.dirtyDimensions=!0,t.cleanDimensions(),t.base.cleanDimensions()}this.dirtyZIndex&&(this.dirtyZIndex=!1,e.zIndex=this.canvasZIndex)}};H.UnstackedElement=UnstackedElement;const Ws=function(t){let e=!!it(t.domElement)&&t.domElement,i=rt(t.animationHooks)?t.animationHooks:{},s=rt(t.canvasSpecs)?t.canvasSpecs:{},n=rt(t.observerSpecs)?t.observerSpecs:{},r=!tt(t.includeCanvas)||t.includeCanvas;return e&&e.id&&o[e.id]?Vs(e,s,i,n):Zs(e,s,i,n,r)},Vs=function(t,e,i,s){let n=o[t.id];if(!n)return!1;e.baseMatchesCanvasDimensions=!0,e.ignoreCanvasCssDimensions=!0,e.checkForResize=!0;let r=n.addCanvas(e);n.elementComputedStyles=window.getComputedStyle(t),i.name=`${n.name}-animation`,i.target=r;let a=Gs(i),l=vt(a,n,s);return{element:n,canvas:r,animation:a,demolish:()=>{l(),a.kill(),r.demolish(),n.demolish(!0)}}},Zs=function(t,e,i,s,n){if(!t||["AREA","BASE","BR","COL","EMBED","HR","IMG","INPUT","KEYGEN","LINK","META","PARAM","SOURCE","TRACK","WBR"].indexOf(t.tagName)>=0)return{};let r,o=t.id;var a;o&&F[o]?r=F[o]:r=!!(a=t)&&new UnstackedElement(a),e.baseMatchesCanvasDimensions=!0,e.checkForResize=!0;let l=!!n&&r.addCanvas(e);i.name=`${r.name}-animation`,l?(i.afterClear||(i.afterClear=()=>r.updateCanvas()),i.target=l):i.noTarget=!0;let h=Gs(i),c=vt(h,r,s);return{element:r,canvas:l,animation:h,demolish:()=>{c(),h.kill(),l&&l.demolish(),r.demolish(!0)}}},_s=["artefact","group","animation","animationtickers","world","tween","styles","filter"],Us=t=>{if(t&&t.substring){let e;return!!_s.some((i=>(e=I[i][t],e)))&&e}return!1};function Ks(t=q){t.defs=at(t.defs,{order:1,ticker:"",targets:null,time:0,action:null,reverseOnCycleEnd:!1,reversed:!1}),t.kill=function(){let t,e=this.ticker;return e===`${this.name}_ticker`?(t=n[e],t&&t.kill()):e&&this.removeFromTicker(e),this.deregister(),!0};let e=t.getters,i=t.setters;return e.targets=function(){return[].concat(this.targets)},i.targets=function(t=[]){this.setTargets(t)},i.action=function(t){this.action=t,"function"!=typeof this.action&&(this.action=Z)},t.calculateEffectiveTime=function(t){let e,i=ft(t,this.time),s=z(i),r=s[1],o=s[0],a=0;return this.effectiveTime=0,"%"===o&&r<=100?this.ticker&&(e=n[this.ticker],e&&(a=e.effectiveDuration,this.effectiveTime=a*(r/100))):this.effectiveTime=r,this},t.addToTicker=function(t){let e;return ut(t)&&(this.ticker&&this.ticker!==t&&this.removeFromTicker(this.ticker),e=n[t],ut(e)&&(this.ticker=t,e.subscribe(this.name),this.calculateEffectiveTime())),this},t.removeFromTicker=function(t){let e;return(t=ut(t)?t:this.ticker)&&(e=n[t],ut(e)&&(this.ticker="",e.unsubscribe(this.name))),this},t.setTargets=function(t){t=[].concat(t);let e=[];return t.forEach((t=>{if(st(t))st(t.set)&&e.push(t);else if(rt(t)&&ut(t.name))e.push(t);else{let i=Us(t);i&&e.push(i)}})),this.targets=e,this},t.addToTargets=function(t){return(t=[].concat(t)).forEach((t=>{"function"==typeof t?"function"==typeof t.set&&this.targets.push(t):(result=Us(t),result&&this.targets.push(result))}),this),this},t.removeFromTargets=function(t){t=[].concat(t);let e=[],i=[].concat(this.targets);return i.forEach((t=>{let i=t.type||"unknown",s=t.name||"unnamed";"unknown"!==i&&"unnamed"!==s&&e.push(`${i}_${s}`)})),t.forEach((t=>{let s;if(s="function"==typeof t?t:Us(t),s){let t=s.type||"unknown",n=s.name||"unnamed";if("unknown"!==t&&"unnamed"!==n){let s=`${t}_${n}`,r=e.indexOf(s);r>=0&&(i[r]=!1)}}})),this.targets=[],i.forEach((t=>{t&&this.targets.push(t)}),this),this},t.checkForTarget=function(t){return!!t.substring&&this.targets.some((e=>e.name===t))},t.run=Z,t.isRunning=Z,t.halt=Z,t.reverse=Z,t.resume=Z,t.seekTo=Z,t.seekFor=Z,t}const Action=function(t=q){return this.makeName(t.name),this.register(),this.set(this.defs),this.action=Z,this.revert=Z,this.set(t),this.calculateEffectiveTime(),ut(t.ticker)&&this.addToTicker(t.ticker),this};let qs=Action.prototype=Object.create(Object.prototype);qs.type="Action",qs.lib="tween",qs.isArtefact=!1,qs.isAsset=!1,qs=me(qs),qs=Ks(qs);qs.defs=at(qs.defs,{revert:null}),qs.packetExclusions=ht(qs.packetExclusions,["targets"]),qs.packetFunctions=ht(qs.packetFunctions,["revert","action"]),qs.finalizePacketOut=function(t,e){return Array.isArray(this.targets)&&(t.targets=this.targets.map((t=>t.name))),t};let Qs=qs.setters;Qs.revert=function(t){this.revert=t,"function"!=typeof this.revert&&(this.revert=Z)},Qs.triggered=function(t){this.triggered!==t&&(t?this.action():this.revert(),this.triggered=t)},qs.set=function(t=q){const e=Object.keys(t),i=e.length;if(i){const s=this.setters,n=this.defs;let r,o,a,l;for(o=0;o=i?s||(this.action(),this.triggered=!0):s&&(this.revert(),this.triggered=!1):n>=i?s||(this.action(),this.triggered=!0):s&&(this.revert(),this.triggered=!1),o&&(this.triggered=!this.triggered),!0};const Js=function(t){return!!t&&new Action(t)};function tn(t=q){(t=Ii(t=Vi(t=Gi(t=Ni(t=Yi(t=Xi(t=ji(t)))))))).defs=at(t.defs,{method:"fill",pathObject:null,winding:"nonzero",flipReverse:!1,flipUpend:!1,scaleOutline:!0,lockFillStyleToEntity:!1,lockStrokeStyleToEntity:!1,onEnter:null,onLeave:null,onDown:null,onUp:null}),t.packetExclusions=ht(t.packetExclusions,["state"]),t.packetFunctions=ht(t.packetFunctions,["onEnter","onLeave","onDown","onUp"]),t.processEntityPacketOut=function(t,e,i){return this.processFactoryPacketOut(t,e,i)},t.processFactoryPacketOut=function(t,e,i){let s=!0;return i.indexOf(t)<0&&e===this.defs[t]&&(s=!1),s},t.finalizePacketOut=function(t,e){let i=JSON.parse(this.state.saveAsPacket(e))[3];return t=at(t,i),t=this.handlePacketAnchor(t,e)},t.postCloneAction=function(t,e){return this.onEnter&&(t.onEnter=this.onEnter),this.onLeave&&(t.onLeave=this.onLeave),this.onDown&&(t.onDown=this.onDown),this.onUp&&(t.onUp=this.onUp),e.sharedState&&(t.state=this.state),e.anchor&&(e.anchor.host=t,ut(e.anchor.focusAction)||(e.anchor.focusAction=this.anchor.focusAction),ut(e.anchor.blurAction)||(e.anchor.blurAction=this.anchor.blurAction),t.buildAnchor(e.anchor),e.anchor.clickAction||(t.anchor.clickAction=this.anchor.clickAction)),t};let e=t.getters,i=t.setters;return t.deltaSetters,e.group=function(){return this.group?this.group.name:""},i.lockStylesToEntity=function(t){this.lockFillStyleToEntity=t,this.lockStrokeStyleToEntity=t},t.get=function(t){const e=this.getters[t];if(e)return e.call(this);{let e,i=this.defs[t],s=this.state;return null!=i?(e=this[t],void 0!==e?e:i):(i=s.defs[t],null!=i?(e=s[t],void 0!==e?e:i):null)}},t.set=function(t=q){const e=Object.keys(t),i=e.length;if(i){const s=this.setters,n=this.defs,r=this.state,o=r?r.setters:q,a=r?r.defs:q;let l,h,c,u;for(h=0;h=0||this.lockTo.indexOf("particle")>=0)&&(this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtyStampHandlePositions&&this.cleanStampHandlePositions(),this.dirtyPathObject&&this.cleanPathObject(),this.dirtyPositionSubscribers&&this.updatePositionSubscribers(),this.anchor&&this.dirtyAnchorHold&&(this.dirtyAnchorHold=!1,this.buildAnchor(this.anchor))},t.cleanPathObject=Z,t.acceptableHosts=["Cell","CellFragment"],t.stamp=function(t=!1,e,i){let s=!(this.noFilters||!this.filters||!this.filters.length);return t?(e&&this.acceptableHosts.includes(e.type)&&(this.currentHost=e),i&&this.set(i),this.prepareStamp(),s?this.filteredStamp():this.regularStamp()):this.visibility?this.stashOutput||s?this.filteredStamp():this.regularStamp():void 0},t.regularStamp=function(){let t=this.currentHost;if(t){const e=t.engine,[i,s]=this.currentStampPosition;t.rotateDestination(e,i,s,this),this.noCanvasEngineUpdates||t.setEngine(this),this[this.method](e)}},t.filteredStamp=function(){const{dirtyFilters:t,currentHost:e,state:i}=this;!t&&this.currentFilters||this.cleanFilters();const{element:s,engine:n,currentDimensions:r}=e,o=hi(),{element:a,engine:l}=o;this.currentHost=o;const h=r?r[0]:s.width,c=r?r[1]:s.height;if(h&&c){o.w=a.width=h,o.h=a.height=c;const t=this.noCanvasEngineUpdates;if(this.noCanvasEngineUpdates=!1,this.regularStamp(),!this.noFilters&&this.filters&&this.filters.length){const t=this.currentFilters;this.isStencil&&(l.save(),l.globalCompositeOperation="source-in",l.globalAlpha=1,l.setTransform(1,0,0,1,0,0),l.drawImage(s,0,0),l.restore(),this.dirtyFilterIdentifier=!0),l.setTransform(1,0,0,1,0,0);const e=l.getImageData(0,0,h,c);this.preprocessFilters(t);const i=Ai.action({identifier:this.filterIdentifier,image:e,filters:t});i&&(l.globalCompositeOperation="source-over",l.globalAlpha=1,l.setTransform(1,0,0,1,0,0),l.putImageData(i,0,0))}if(n.save(),n.globalAlpha=i&&i.globalAlpha?i.globalAlpha:1,n.globalCompositeOperation=i&&i.globalCompositeOperation?i.globalCompositeOperation:"source-over",n.setTransform(1,0,0,1,0,0),n.drawImage(a,0,0),this.stashOutput){this.stashOutput=!1;const[t,e,i,s]=this.getCellCoverage(l.getImageData(0,0,a.width,a.height));if(this.stashedImageData=l.getImageData(t,e,i,s),this.stashOutputAsAsset){const t=this.stashOutputAsAsset.substring?this.stashOutputAsAsset:`${this.name}-image`;if(this.stashOutputAsAsset=!1,a.width=i,a.height=s,l.putImageData(this.stashedImageData,0,0),this.stashedImage)this.stashedImage.src=a.toDataURL();else{const e=this.stashedImage=document.createElement("img");e.id=t,e.onload=function(){zt.appendChild(e),Ri(`#${t}`)},e.src=a.toDataURL()}}}n.restore(),this.currentHost=e,this.noCanvasEngineUpdates=t}ci(o)},t.getCellCoverage=function(t){let e,i,s=t.width,n=t.height,r=t.data,o=0,a=0,l=s,h=n,c=3;for(let t=0,u=s*n;te&&(l=e),oi&&(h=i),a=1)return.9999;let e=this.unitPositions;if(e&&e.length){let e,i,s,n,r,o,a,l=this.length,h=this.unitProgression,c=this.unitPositions,u=t*l,d=-1;for(let t=0,e=h.length;t=0||this.lockTo.indexOf("particle")>=0)&&(this.dirtyStampPositions=!0),this.dirtyScale&&this.cleanScale(),this.dirtyStart&&this.cleanStart(),this.dirtyOffset&&this.cleanOffset(),this.dirtyRotation&&this.cleanRotation(),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtySpecies&&this.cleanSpecies(),this.dirtyPathObject&&this.cleanPathObject(),this.dirtyPositionSubscribers&&this.updatePositionSubscribers()},t.cleanDimensions=function(){this.dirtyDimensions=!1,this.dirtyStart=!0,this.dirtyHandle=!0,this.dirtyOffset=!0},t.cleanPathObject=function(){if(this.dirtyPathObject=!1,!this.noPathUpdates||!this.pathObject){this.dirtyDimensions&&(this.cleanSpecies(),this.pathCalculatedOnce=!1),this.calculateLocalPath(this.pathDefinition),this.dirtyDimensions&&this.cleanDimensions(),this.dirtyHandle&&this.cleanHandle(),this.dirtyStampHandlePositions&&this.cleanStampHandlePositions();let t=this.currentStampHandlePosition;this.pathObject=new Path2D(`m${-t[0]},${-t[1]}${this.localPath}`)}},t.calculateLocalPath=function(t,e){let i;if(this.pathCalculatedOnce||(i=function(t,e,i,s,n){let r,o,a,l,h=[],c=[],u="",d="",f=[],p=[],m=[],g=t.match(/([A-Za-z][0-9. ,\-]*)/g),y=0,b={},S=0,k=0,A=0,O=0,v=[],x=[],C=[],w=[],P=0,D=0,R=t=>{c.push({c:u.toLowerCase(),p:t||null,x:A,y:O,cx:S,cy:k,rx:P,ry:D}),s||(v.push(S),x.push(k)),A=S,O=k};for(r=0,o=g.length;r0&&c[r-1],{c:s,p:n,x:o,y:a,cx:l,cy:h,rx:u,ry:d}=e;if(n)switch(s){case"h":f[r]=["linear",o,a,n[0]+o,a];break;case"v":f[r]=["linear",o,a,o,n[0]+a];break;case"m":f[r]=["move",o,a];break;case"l":f[r]=["linear",o,a,n[0]+o,n[1]+a];break;case"t":i&&(i.rx||i.ry)?(rn(t,i.rx-l,i.ry-h),on(t,180),f[r]=["quadratic",o,a,t.x+l,t.y+h,n[0]+o,n[1]+a]):f[r]=["quadratic",o,a,o,a,n[0]+o,n[1]+a];break;case"q":f[r]=["quadratic",o,a,n[0]+o,n[1]+a,n[2]+o,n[3]+a];break;case"s":i&&(i.rx||i.ry)?(rn(t,i.rx-l,i.ry-h),on(t,180),f[r]=["bezier",o,a,t.x+l,t.y+h,n[0]+o,n[1]+a,n[2]+o,n[3]+a]):f[r]=["bezier",o,a,o,a,n[0]+o,n[1]+a,n[2]+o,n[3]+a];break;case"c":f[r]=["bezier",o,a,n[0]+o,n[1]+a,n[2]+o,n[3]+a,n[4]+o,n[5]+a];break;case"a":f[r]=["linear",o,a,n[5]+o,n[6]+a];break;case"z":isNaN(o)&&(o=0),isNaN(a)&&(a=0),f[r]=["close",o,a];break;default:isNaN(o)&&(o=0),isNaN(a)&&(a=0),f[r]=["unknown",o,a]}else f[r]=[`no-points-${s}`,o,a]}for(b.units=f,r=0,o=f.length;rt+e),0);let e=0;for(r=0,o=p.length;r{let e=o[t];e&&(e.currentPathData=!1,e.dirtyStart=!0,e.addPathHandle&&(e.dirtyHandle=!0),e.addPathOffset&&(e.dirtyOffset=!0),e.addPathRotation&&(e.dirtyRotation=!0),"Polyline"===e.type?e.dirtyPins=!0:"Line"!==e.type&&"Quadratic"!==e.type&&"Bezier"!==e.type||e.dirtyPins.push(this.name))}),this)},t.draw=function(t){t.stroke(this.pathObject),this.showBoundingBox&&this.drawBoundingBox(t)},t.fill=function(t){t.fill(this.pathObject,this.winding),this.showBoundingBox&&this.drawBoundingBox(t)},t.drawAndFill=function(t){let e=this.pathObject;t.stroke(e),this.currentHost.clearShadow(),t.fill(e,this.winding),this.showBoundingBox&&this.drawBoundingBox(t)},t.fillAndDraw=function(t){let e=this.pathObject;t.stroke(e),this.currentHost.clearShadow(),t.fill(e,this.winding),t.stroke(e),this.showBoundingBox&&this.drawBoundingBox(t)},t.drawThenFill=function(t){let e=this.pathObject;t.stroke(e),t.fill(e,this.winding),this.showBoundingBox&&this.drawBoundingBox(t)},t.fillThenDraw=function(t){let e=this.pathObject;t.fill(e,this.winding),t.stroke(e),this.showBoundingBox&&this.drawBoundingBox(t)},t.clear=function(t){let e=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",t.fill(this.pathObject,this.winding),t.globalCompositeOperation=e,this.showBoundingBox&&this.drawBoundingBox(t)},t.drawBoundingBox=function(t){t.save(),t.strokeStyle=this.boundingBoxColor,t.lineWidth=1,t.globalCompositeOperation="source-over",t.globalAlpha=1,t.shadowOffsetX=0,t.shadowOffsetY=0,t.shadowBlur=0,t.strokeRect(...this.getBoundingBox()),t.restore()},t.getBoundingBox=function(){let t=Math.floor,e=Math.ceil,i=this.minimumBoundingBoxDimensions,[s,n,r,o]=this.localBox,[a,l]=this.currentStampHandlePosition,[h,c]=this.currentStampPosition;return r"string"!=typeof t?"":t.charAt(0).toUpperCase()+t.slice(1);function un(t=q){t.defs=at(t.defs,{end:null,endPivot:"",endPivotCorner:"",addEndPivotHandle:!1,addEndPivotOffset:!1,endPath:"",endPathPosition:0,addEndPathHandle:!1,addEndPathOffset:!0,endParticle:"",endLockTo:"",useStartAsControlPoint:!1}),t.packetExclusions=ht(t.packetExclusions,["controlledLineOffset"]),t.packetExclusionsByRegex=ht(t.packetExclusionsByRegex,[]),t.packetCoordinates=ht(t.packetCoordinates,["end"]),t.packetObjects=ht(t.packetObjects,["endPivot","endPath"]),t.packetFunctions=ht(t.packetFunctions,[]),t.factoryKill=function(){Object.entries(o).forEach((([t,e])=>{e.name!==this.name&&(e.startControlPivot&&e.startControlPivot.name===this.name&&e.set({startControlPivot:!1}),e.controlPivot&&e.controlPivot.name===this.name&&e.set({controlPivot:!1}),e.endControlPivot&&e.endControlPivot.name===this.name&&e.set({endControlPivot:!1}),e.endPivot&&e.endPivot.name===this.name&&e.set({endPivot:!1}),e.startControlPath&&e.startControlPath.name===this.name&&e.set({startControlPath:!1}),e.controlPath&&e.controlPath.name===this.name&&e.set({controlPath:!1}),e.endControlPath&&e.endControlPath.name===this.name&&e.set({endControlPath:!1}),e.endPath&&e.endPath.name===this.name&&e.set({endPath:!1}))}))};let e=t.getters,i=t.setters,s=t.deltaSetters;return i.useStartAsControlPoint=function(t){if(this.useStartAsControlPoint=t,!t){let t=this.controlledLineOffset;t[0]=0,t[1]=0}this.updateDirty()},i.endPivot=function(t){this.setControlHelper(t,"endPivot","end"),this.updateDirty(),this.dirtyEnd=!0},i.endParticle=function(t){this.setControlHelper(t,"endParticle","end"),this.updateDirty(),this.dirtyEnd=!0},i.endPath=function(t){this.setControlHelper(t,"endPath","end"),this.updateDirty(),this.dirtyEnd=!0},i.endPathPosition=function(t){this.endPathPosition=t,this.dirtyEnd=!0,this.currentEndPathData=!1,this.dirtyFilterIdentifier=!0},s.endPathPosition=function(t){this.endPathPosition+=t,this.dirtyEnd=!0,this.currentEndPathData=!1,this.dirtyFilterIdentifier=!0},e.endPositionX=function(){return this.currentEnd[0]},e.endPositionY=function(){return this.currentEnd[1]},e.endPosition=function(){return[].concat(this.currentEnd)},i.endX=function(t){null!=t&&(this.end[0]=t,this.updateDirty(),this.dirtyEnd=!0,this.currentEndPathData=!1)},i.endY=function(t){null!=t&&(this.end[1]=t,this.updateDirty(),this.dirtyEnd=!0,this.currentEndPathData=!1)},i.end=function(t,e){this.setCoordinateHelper("end",t,e),this.updateDirty(),this.dirtyEnd=!0,this.currentEndPathData=!1},s.endX=function(t){let e=this.end;e[0]=G(e[0],t),this.updateDirty(),this.dirtyEnd=!0,this.currentEndPathData=!1},s.endY=function(t){let e=this.end;e[1]=G(e[1],t),this.updateDirty(),this.dirtyEnd=!0,this.currentEndPathData=!1},s.end=function(t,e){this.setDeltaCoordinateHelper("end",t,e),this.updateDirty(),this.dirtyEnd=!0,this.currentEndPathData=!1},i.endLockTo=function(t){this.endLockTo=t,this.updateDirty(),this.dirtyEndLock=!0,this.currentEndPathData=!1},t.curveInit=function(t){this.end=mi(),this.currentEnd=mi(),this.endLockTo="coord",this.dirtyEnd=!0,this.dirtyPins=[],this.controlledLineOffset=mi()},t.setControlHelper=function(t,e,i){if(tt(t)&&!t)this[e]=null,"startControl"===i?this.dirtyStartControlLock=!0:"control"===i?this.dirtyControlLock=!0:"endControl"===i?this.dirtyEndControlLock=!0:this.dirtyEndLock=!0;else if(t){let s=this[e],n=t.substring?o[t]:t;e.indexOf("Pivot")>0?n&&n.isArtefact&&(s&&s.isArtefact&&ct(s.pivoted,this.name),ht(n.pivoted,this.name),this[e]=n):e.indexOf("Path")>0?n&&n.isArtefact&&(s&&s.isArtefact&&ct(s.pathed,this.name),ht(n.pathed,this.name),this[e]=n):e.indexOf("Particle")>0&&(n=t.substring?b[t]:t,n||(this.updateDirty(),"startControl"===i?this.dirtyStartControl=!0:"control"===i?this.dirtyControl=!0:"endControl"===i?this.dirtyEndControl=!0:this.dirtyEnd=!0,this[e]=t))}},t.buildPathPositionObject=function(t,e){if(t){let i,s,[n,...r]=t;switch(n){case"linear":i=this.positionPointOnPath(this.getLinearXY(e,...r)),s=this.getLinearAngle(e,...r);break;case"quadratic":i=this.positionPointOnPath(this.getQuadraticXY(e,...r)),s=this.getQuadraticAngle(e,...r);break;case"bezier":i=this.positionPointOnPath(this.getBezierXY(e,...r)),s=this.getBezierAngle(e,...r)}let o=0;this.flipReverse&&o++,this.flipUpend&&o++,1===o&&(s=-s),s+=this.roll,this.currentStampPosition;let a=this.controlledLineOffset;return this.localBox,i.x+=a[0],i.y+=a[1],i.angle=s,i}return!1},t.prepareStamp=function(){this.dirtyHost&&(this.dirtyHost=!1),this.dirtyPins.length&&this.preparePinsForStamp(),this.dirtyLock&&this.cleanLock(),this.dirtyStartControlLock&&this.cleanControlLock("startControl"),this.dirtyEndControlLock&&this.cleanControlLock("endControl"),this.dirtyControlLock&&this.cleanControlLock("control"),this.dirtyEndLock&&this.cleanControlLock("end"),(this.dirtyScale||this.dirtySpecies||this.dirtyDimensions||this.dirtyStart||this.dirtyStartControl||this.dirtyEndControl||this.dirtyControl||this.dirtyEnd||this.dirtyHandle)&&(this.dirtyPathObject=!0,this.useStartAsControlPoint&&this.dirtyStart&&(this.dirtySpecies=!0,this.pathCalculatedOnce=!1),(this.dirtyScale||this.dirtySpecies||this.dirtyStartControl||this.dirtyEndControl||this.dirtyControl||this.dirtyEnd)&&(this.pathCalculatedOnce=!1)),(this.isBeingDragged||this.lockTo.indexOf("mouse")>=0||this.lockTo.indexOf("particle")>=0)&&(this.dirtyStampPositions=!0,this.useStartAsControlPoint&&(this.dirtySpecies=!0,this.dirtyPathObject=!0,this.pathCalculatedOnce=!1)),this.dirtyScale&&this.cleanScale(),this.dirtyStart&&this.cleanStart(),(this.dirtyStartControl||"particle"===this.startControlLockTo)&&this.cleanControl("startControl"),(this.dirtyEndControl||"particle"===this.endControlLockTo)&&this.cleanControl("endControl"),(this.dirtyControl||"particle"===this.controlLockTo)&&this.cleanControl("control"),(this.dirtyEnd||"particle"===this.endLockTo)&&this.cleanControl("end"),this.dirtyOffset&&this.cleanOffset(),this.dirtyRotation&&this.cleanRotation(),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtySpecies&&this.cleanSpecies(),this.dirtyPathObject&&this.cleanPathObject(),this.dirtyPositionSubscribers&&(this.updatePositionSubscribers(),this.updateControlPathSubscribers())},t.cleanControlLock=function(t){let e=cn(t);this[`dirty${e}Lock`]=!1,this[`dirty${e}`]=!0},t.cleanControl=function(t){let e=cn(t);this[`dirty${e}`]=!1;let i,s,n=`${t}Path`,r=`${t}Particle`,a=this[`${t}Pivot`],l=this[n],h=this[r];a&&a.substring&&(i=o[a],i&&(a=i)),l&&l.substring&&(i=o[l],i&&(l=i)),h&&h.substring&&(i=b[h],i&&(h=i));let c,u,d,f,p,m,g,y=this[`${t}LockTo`],S=this[t],k=this[`current${e}`];switch(("pivot"!==y||a&&!a.substring)&&("path"!==y||l&&!l.substring)&&("particle"!==y||h&&!h.substring)||(y="coord"),y){case"pivot":this.pivotCorner&&a.getCornerCoordinate?[c,u]=a.getCornerCoordinate(this[`${t}PivotCorner`]):[c,u]=a.currentStampPosition,this.addPivotOffset||([d,f]=a.currentOffset,c-=d,u-=f);break;case"path":s=this.getControlPathData(l,t,e),c=s.x,u=s.y,this.addPathOffset||(c-=l.currentOffset[0],u-=l.currentOffset[1]);break;case"particle":c=h.position.x,u=h.position.y,this.pathCalculatedOnce=!1;break;case"mouse":p=this.getHere(),c=p.x||0,u=p.y||0;break;default:c=u=0,m=this.getHost(),m&&(g=m.currentDimensions,g&&(this.cleanPosition(k,S,g),[c,u]=k))}k[0]=c,k[1]=u,this.dirtySpecies=!0,this.dirtyPathObject=!0,this.dirtyPositionSubscribers=!0},t.getControlPathData=function(t,e,i){let s=this[`current${i}PathData`];if(s)return s;let n=this[`${e}PathPosition`],r=n,o=t.getPathPositionData(n);if(n<0&&(n+=1),n>1&&(n%=1),n=parseFloat(n.toFixed(6)),n!==r&&(this[`${e}PathPosition`]=n),o)return this[`current${i}PathData`]=o,o;{let t=this.getHost();if(t){let s=t.currentDimensions;if(s){let t=this[`current${i}`];return this.cleanPosition(t,this[e],s),{x:t[0],y:t[1]}}}return{x:0,y:0}}},t.updateControlPathSubscribers=function(){[].concat(this.endSubscriber,this.endControlSubscriber,this.controlSubscriber,this.startControlSubscriber).forEach((t=>{let e=o[t];e&&("Line"!==e.type&&"Quadratic"!==e.type&&"Bezier"!==e.type||("Quadratic"===e.type?(e.dirtyControl=!0,e.currentControlPathData=!1):"Bezier"===e.type&&(e.dirtyStartControl=!0,e.dirtyEndControl=!0,e.currentStartControlPathData=!1,e.currentEndControlPathData=!1),e.currentEndPathData=!1,e.dirtyEnd=!0),e.currentPathData=!1,e.dirtyStart=!0)}))},t}const Bezier=function(t=q){return this.startControl=mi(),this.endControl=mi(),this.currentStartControl=mi(),this.currentEndControl=mi(),this.startControlLockTo="coord",this.endControlLockTo="coord",this.curveInit(t),this.shapeInit(t),this.dirtyStartControl=!0,this.dirtyEndControl=!0,this};let dn=Bezier.prototype=Object.create(Object.prototype);dn.type="Bezier",dn.lib="entity",dn.isArtefact=!0,dn.isAsset=!1,dn=me(dn),dn=hn(dn),dn=un(dn);dn.defs=at(dn.defs,{startControl:null,startControlPivot:"",startControlPivotCorner:"",addStartControlPivotHandle:!1,addStartControlPivotOffset:!1,startControlPath:"",startControlPathPosition:0,addStartControlPathHandle:!1,addStartControlPathOffset:!0,startControlParticle:"",endControl:null,endControlPivot:"",endControlPivotCorner:"",addEndControlPivotHandle:!1,addEndControlPivotOffset:!1,endControlPath:"",endControlPathPosition:0,addEndControlPathHandle:!1,addEndControlPathOffset:!0,endControlParticle:"",startControlLockTo:"",endControlLockTo:""}),dn.packetExclusions=ht(dn.packetExclusions,[]),dn.packetExclusionsByRegex=ht(dn.packetExclusionsByRegex,[]),dn.packetCoordinates=ht(dn.packetCoordinates,["startControl","endControl"]),dn.packetObjects=ht(dn.packetObjects,["startControlPivot","startControlPath","endControlPivot","endControlPath"]),dn.packetFunctions=ht(dn.packetFunctions,[]);let fn=dn.getters,pn=dn.setters,mn=dn.deltaSetters;pn.endControlPivot=function(t){this.setControlHelper(t,"endControlPivot","endControl"),this.updateDirty(),this.dirtyEndControl=!0},pn.endControlParticle=function(t){this.setControlHelper(t,"endControlParticle","endControl"),this.updateDirty(),this.dirtyEndControl=!0},pn.endControlPath=function(t){this.setControlHelper(t,"endControlPath","endControl"),this.updateDirty(),this.dirtyEndControl=!0,this.currentEndControlPathData=!1},pn.endControlPathPosition=function(t){this.endControlPathPosition=t,this.dirtyEndControl=!0,this.currentEndControlPathData=!1,this.dirtyFilterIdentifier=!0},mn.endControlPathPosition=function(t){this.endControlPathPosition+=t,this.dirtyEndControl=!0,this.currentEndControlPathData=!1,this.dirtyFilterIdentifier=!0},pn.startControlPivot=function(t){this.setControlHelper(t,"startControlPivot","startControl"),this.updateDirty(),this.dirtyStartControl=!0},pn.startControlParticle=function(t){this.setControlHelper(t,"startControlParticle","startControl"),this.updateDirty(),this.dirtyStartControl=!0},pn.startControlPath=function(t){this.setControlHelper(t,"startControlPath","startControl"),this.updateDirty(),this.dirtyStartControl=!0,this.currentStartControlPathData=!1},pn.startControlPathPosition=function(t){this.startControlPathPosition=t,this.dirtyStartControl=!0,this.currentStartControlPathData=!1,this.dirtyFilterIdentifier=!0},mn.startControlPathPosition=function(t){this.startControlPathPosition+=t,this.dirtyStartControl=!0,this.currentStartControlPathData=!1,this.dirtyFilterIdentifier=!0},fn.startControlPositionX=function(){return this.currentStartControl[0]},fn.startControlPositionY=function(){return this.currentStartControl[1]},fn.startControlPosition=function(){return[].concat(this.currentStartControl)},pn.startControlX=function(t){null!=t&&(this.startControl[0]=t,this.updateDirty(),this.dirtyStartControl=!0,this.currentStartControlPathData=!1)},pn.startControlY=function(t){null!=t&&(this.startControl[1]=t,this.updateDirty(),this.dirtyStartControl=!0,this.currentStartControlPathData=!1)},pn.startControl=function(t,e){this.setCoordinateHelper("startControl",t,e),this.updateDirty(),this.dirtyStartControl=!0,this.currentStartControlPathData=!1},mn.startControlX=function(t){let e=this.startControl;e[0]=G(e[0],t),this.updateDirty(),this.dirtyStartControl=!0,this.currentStartControlPathData=!1},mn.startControlY=function(t){let e=this.startControl;e[1]=G(e[1],t),this.updateDirty(),this.dirtyStartControl=!0,this.currentStartControlPathData=!1},mn.startControl=function(t,e){this.setDeltaCoordinateHelper("startControl",t,e),this.updateDirty(),this.dirtyStartControl=!0,this.currentStartControlPathData=!1},fn.endControlPositionX=function(){return this.currentEndControl[0]},fn.endControlPositionY=function(){return this.currentEndControl[1]},fn.endControlPosition=function(){return[].concat(this.currentEndControl)},pn.endControlX=function(t){null!=t&&(this.endControl[0]=t,this.updateDirty(),this.dirtyEndControl=!0,this.currentEndControlPathData=!1)},pn.endControlY=function(t){null!=t&&(this.endControl[1]=t,this.updateDirty(),this.dirtyEndControl=!0,this.currentEndControlPathData=!1)},pn.endControl=function(t,e){this.setCoordinateHelper("endControl",t,e),this.updateDirty(),this.dirtyEndControl=!0,this.currentEndControlPathData=!1},mn.endControlX=function(t){let e=this.endControl;e[0]=G(e[0],t),this.updateDirty(),this.dirtyEndControl=!0,this.currentEndControlPathData=!1},mn.endControlY=function(t){let e=this.endControl;e[1]=G(e[1],t),this.updateDirty(),this.dirtyEndControl=!0,this.currentEndControlPathData=!1},mn.endControl=function(t,e){this.setDeltaCoordinateHelper("endControl",t,e),this.updateDirty(),this.dirtyEndControl=!0,this.currentEndControlPathData=!1},pn.startControlLockTo=function(t){this.startControlLockTo=t,this.updateDirty(),this.dirtyStartControlLock=!0},pn.endControlLockTo=function(t){this.endControlLockTo=t,this.updateDirty(),this.dirtyEndControlLock=!0,this.currentEndControlPathData=!1},dn.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeBezierPath(),this.pathDefinition=t},dn.makeBezierPath=function(){let[t,e]=this.currentStampPosition,[i,s]=this.currentStartControl,[n,r]=this.currentEndControl,[o,a]=this.currentEnd;return`m0,0c${(i-t).toFixed(2)},${(s-e).toFixed(2)} ${(n-t).toFixed(2)},${(r-e).toFixed(2)} ${(o-t).toFixed(2)},${(a-e).toFixed(2)}`},dn.cleanDimensions=function(){this.dirtyDimensions=!1,this.dirtyHandle=!0,this.dirtyOffset=!0,this.dirtyStart=!0,this.dirtyStartControl=!0,this.dirtyEndControl=!0,this.dirtyEnd=!0,this.dirtyFilterIdentifier=!0},dn.preparePinsForStamp=function(){const t=this.dirtyPins,e=this.endPivot,i=this.endPath,s=this.startControlPivot,n=this.startControlPath,r=this.endControlPivot,o=this.endControlPath;for(let a,l=0,h=t.length;l=0?(this.curve=t,this.updateDirty()):(this.curve="bezier",this.updateDirty())},yn.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeCogPath(),this.pathDefinition=t},yn.makeCogPath=function(){let t,e,i,s,n,r,o,{points:a,twist:l,outerRadius:h,innerRadius:c,outerControlsDistance:u,innerControlsDistance:d,outerControlsOffset:f,innerControlsOffset:p,curve:m}=this,g=360/a,y=[],b="";if(h.substring||c.substring||u.substring||d.substring||f.substring||p.substring){let t=this.getHost();if(t){let[e,i]=t.currentDimensions;h=h.substring?parseFloat(h)/100*e:h,c=c.substring?parseFloat(c)/100*e:c,u=u.substring?parseFloat(u)/100*e:u,d=d.substring?parseFloat(d)/100*e:d,f=f.substring?parseFloat(f)/100*e:f,p=p.substring?parseFloat(p)/100*e:p}}let S=is({x:0,y:-h}),k=is({x:0,y:-c}),A=is({x:u+f,y:-h}),O=is({x:-d+p,y:-c}),v=is({x:d+p,y:-c}),x=is({x:-u+f,y:-h});if(O.rotate(-g/2),O.rotate(l),k.rotate(-g/2),k.rotate(l),v.rotate(-g/2),v.rotate(l),t=S.x,e=S.y,y.push(t),"bezier"==m)for(o=0;o{let[n,r]=t;n.toFixed&&r.substring&&(e.convert(r),i[`${n} `]=[...e[s]])})),this.colors=i,this.dirtyPalette=!0}},vn.easing=function(t){this.setEasingHelper(t)},vn.easingFunction=vn.easing,An.setEasing=function(t){return this.setEasingHelper(t),this},An.setEasingFunction=An.setEasing,An.setEasingHelper=function(t){st(t)?(this.easing="function",this.easingFunction=t):t.substring&&mt[t]?(this.easing=t,this.easingFunction=_):(this.easing="linear",this.easingFunction=_),this.dirtyPalette=!0},On.colorSpace=function(){return this.getColorSpace()},vn.colorSpace=function(t){if(t.substring){const e=t.toUpperCase(),i=t.toLowerCase();if(["RGB","HSL","HWB","XYZ","LAB","LCH","OKLAB","OKLCH"].includes(e)){const t=Object.assign({},this.colors),s=this.factory.colorSpace;this.factory.set({colorSpace:e});for(const[e,n]of Object.entries(t)){const t=this.factory.buildColorString(...n,s);this.factory.setColor(t),this.colors[e].length=0,this.colors[e].push(...this.factory[i])}this.dirtyPalette=!0}}},On.returnColorAs=function(){return this.getReturnColorAs()},vn.returnColorAs=function(t){this.factory.set({returnColorAs:t}),this.dirtyPalette=!0},vn.precision=function(t){t=parseInt(t,10),(isNaN(t)||t<0)&&(t=0),t>50&&(t=50),this.precision=t,this.dirtyPalette=!0},vn.stops=Z,An.getColorSpace=function(){return this.factory?this.factory.colorSpace:"RGB"},An.getReturnColorAs=function(){return this.factory?this.factory.returnColorAs:"RGB"},An.recalculateHold=[],An.recalculate=function(){this.dirtyPalette=!1;const{colors:t,stops:e,factory:i}=this;e.fill("rgba(0 0 0 / 0)");const{colorSpace:s}=i;let n=Object.keys(t);n=n.map((t=>parseInt(t,10))),n.sort(((t,e)=>t-e));let r,o,a,l,h=n[0],[c,u,d,f]=t[`${h} `];e[h]=i.returnColorFromValues(c,u,d,f);for(let c=0,u=n.length-1;c=0&&t<=999&&(i.convert(e),t+=" ",this.colors[t]=[...i[s]],this.dirtyPalette=!0)},An.removeColor=function(t){ut(t)&&(t=t.substring?parseInt(t,10):Math.floor(t))>=0&&t<=999&&(t+=" ",delete this.colors[t],this.dirtyPalette=!0)},An.addStopsToGradient=function(t,e,i,s){let n,r,o,a,l,h,{stops:c,easing:u,easingFunction:d,precision:f}=this,p=Object.keys(this.colors);if(t){p=p.map((t=>parseInt(t,10))),p.sort(((t,e)=>t-e)),dt(e,i)||(e=0,i=999);let m=d;"function"!==u&&mt[u]&&(m=mt[u]);const g=this.getColorSpace(),y=!(!f||"linear"===u&&"RGB"===g);if(e===i)return c[e]||"rgba(0 0 0 / 0)";if(e1?r-=1:r<0&&(r+=1)),r=m(r),r>0&&r<1&&t.addColorStop(r,c[o]);else for(o=0,a=p.length;oe&&l1?r-=1:r<0&&(r+=1)),r>0&&r<1&&t.addColorStop(r,c[l]));else if(s)if(t.addColorStop(0,c[e]),t.addColorStop(1,c[i]),h=999-e,n=h+i,y)for(o=0;o999&&(l-=999),r=m(o/n),r>0&&r<1&&t.addColorStop(r,c[l]);else for(o=0,a=p.length;oe)r=(l-e)/n;else if(0===l)r=(l+h+.01)/n;else{if(!(l1?r-=1:r<0&&(r+=1),r>0&&r<1&&t.addColorStop(r,c[l])}else if(t.addColorStop(0,c[e]),t.addColorStop(1,c[i]),n=e-i,y)for(o=i+1;oi&&(r=m(1-(o-i)/n),r>0&&r<1&&t.addColorStop(r,c[o]));else for(o=0,a=p.length;oi&&(r=1-(l-i)/n,r>0&&r<1&&t.addColorStop(r,c[l]));return t}return"rgba(0 0 0 / 0)"};H.Palette=Palette;const xn=["colors","cyclic","stops"];function Cn(t=q){t.defs=at(t.defs,{start:null,end:null,palette:null,paletteStart:0,paletteEnd:999,cyclePalette:!1,animateByDelta:!1}),t.finalizePacketOut=function(t,e){return e.colors?t.colors=e.colors:this.palette?t.colors=this.palette.get("colors"):t.colors=[[0,"rgba(0 0 0 / 1)"],[999,"rgba(255 255 255 / 1)"]],e.easing?t.easing=e.easing:this.palette&&this.palette.easing?t.easing=this.palette.easing:t.easing="linear",ut(e.precision)?t.precision=e.precision:this.palette&&ut(this.palette.precision)?t.precision=this.palette.precision:t.precision=0,e.colorSpace?t.colorSpace=e.colorSpace:this.palette?t.colorSpace=this.palette.getColorSpace():t.colorSpace="RGB",e.returnColorAs?t.returnColorAs=e.returnColorAs:this.palette?t.returnColorAs=this.palette.getReturnColorAs():t.returnColorAs="RGB",t},t.kill=function(){let t=this.name;return this.palette&&this.palette.kill&&this.palette.kill(),Object.entries(f).forEach((([e,i])=>{let s=i.state;if(s){let e=s.fillStyle,i=s.strokeStyle;rt(e)&&e.name===t&&(s.fillStyle=s.defs.fillStyle),rt(i)&&i.name===t&&(s.strokeStyle=s.defs.strokeStyle)}})),this.deregister(),this};let e=t.getters,i=t.setters,s=t.deltaSetters;return e.startX=function(){return this.currentStart[0]},e.startY=function(){return this.currentStart[1]},i.startX=function(t){null!=t&&(this.start[0]=t,this.dirtyStart=!0)},i.startY=function(t){null!=t&&(this.start[1]=t,this.dirtyStart=!0)},i.start=function(t,e){this.setCoordinateHelper("start",t,e),this.dirtyStart=!0},s.startX=function(t){let e=this.start;e[0]=G(e[0],t),this.dirtyStart=!0},s.startY=function(t){let e=this.start;e[1]=G(e[1],t),this.dirtyStart=!0},s.start=function(t,e){this.setDeltaCoordinateHelper("start",t,e),this.dirtyStart=!0},e.endX=function(){return this.currentEnd[0]},e.endY=function(){return this.currentEnd[1]},i.endX=function(t){null!=t&&(this.end[0]=t,this.dirtyEnd=!0)},i.endY=function(t){null!=t&&(this.end[1]=t,this.dirtyEnd=!0)},i.end=function(t,e){this.setCoordinateHelper("end",t,e),this.dirtyEnd=!0},s.endX=function(t){let e=this.end;e[0]=G(e[0],t),this.dirtyEnd=!0},s.endY=function(t){let e=this.end;e[1]=G(e[1],t),this.dirtyEnd=!0},s.end=function(t,e){this.setDeltaCoordinateHelper("end",t,e),this.dirtyEnd=!0},i.palette=function(t=q){"Palette"===t.type&&(this.palette=t)},i.paletteStart=function(t){t.toFixed&&(this.paletteStart=t,(t<0||t>999)&&(this.paletteStart=t>500?999:0))},s.paletteStart=function(t){let e;t.toFixed&&(e=this.paletteStart+t,(e<0||e>999)&&(e=this.cyclePalette?e>500?e-1e3:e+1e3:t>500?999:0),this.paletteStart=e)},i.paletteEnd=function(t){t.toFixed&&(this.paletteEnd=t,(t<0||t>999)&&(this.paletteEnd=t>500?999:0))},s.paletteEnd=function(t){let e;t.toFixed&&(e=this.paletteEnd+t,(e<0||e>999)&&(e=this.cyclePalette?e>500?e-1e3:e+1e3:t>500?999:0),this.paletteEnd=e)},i.colors=function(t){Array.isArray(t)&&this.palette&&this.palette.set({colors:t})},i.easing=function(t){this.palette&&this.palette.set({easing:t})},i.easingFunction=i.easing,i.colorSpace=function(t){this.palette&&this.palette.set({colorSpace:t})},i.returnColorAs=function(t){this.palette&&this.palette.set({returnColorAs:t})},i.precision=function(t){this.palette&&this.palette.set({precision:t})},i.delta=function(t=q){t&&(this.delta=lt(this.delta,t))},t.get=function(t){let e=this.getters[t];if(e)return e.call(this);{let e,i=this.defs[t],s=this.palette;return void 0!==i?(e=this[t],void 0!==e?e:i):(i=s.defs[t],void 0!==i?(e=s[t],void 0!==e?e:i):undef)}},t.set=function(t=q){let e=Object.keys(t),i=e.length;if(i){const s=this.setters,n=this.defs,r=this.palette;let o,a,l,h,c,u;for(r&&(o=r.setters||q,a=r.defs||q),h=0;h{R.forEach((t=>{const e=D[t];e&&e.animateByDelta&&e.updateByDelta()}))}});const ConicGradient=function(t=q){return this.stylesInit(t),this};let wn=ConicGradient.prototype=Object.create(Object.prototype);wn.type="ConicGradient",wn.lib="styles",wn.isArtefact=!1,wn.isAsset=!1,wn=me(wn),wn=Cn(wn);wn.defs=at(wn.defs,{angle:0}),wn.packetObjects=ht(wn.packetObjects,["palette"]),wn.buildStyle=function(t){if(t){let e=t.engine;if(e){if(!e.createConicGradient)return"rgb(0 0 0 / 0)";let t=e.createConicGradient(...this.gradientArgs);return this.addStopsToGradient(t,this.paletteStart,this.paletteEnd,this.cyclePalette)}}return"rgb(0 0 0 / 0)"},wn.updateGradientArgs=function(t,e){let i=this.gradientArgs,s=this.currentStart,n=this.angle*gt,r=s[0]+t,o=s[1]+e;i.length=0,i.push(n,r,o)};const Pn=function(t){return!!t&&new ConicGradient(t)};H.ConicGradient=ConicGradient;const Crescent=function(t=q){return pt(t.dimensions,t.width,t.height,t.radius)||(t.radius=5),this.entityInit(t),this};let Dn=Crescent.prototype=Object.create(Object.prototype);Dn.type="Crescent",Dn.lib="entity",Dn.isArtefact=!0,Dn.isAsset=!1,Dn=me(Dn),Dn=tn(Dn);Dn.defs=at(Dn.defs,{outerRadius:20,innerRadius:10,displacement:0,displayIntersect:!1}),Dn.getters;let Rn=Dn.setters,Fn=Dn.deltaSetters;Rn.outerRadius=function(t){null!=t&&(this.outerRadius=t,this.dirtyDimensions=!0,this.dirtyFilterIdentifier=!0)},Fn.outerRadius=function(t){null!=t&&(this.outerRadius=addStrings(this.outerRadius,t),this.dirtyDimensions=!0,this.dirtyFilterIdentifier=!0)},Rn.innerRadius=function(t){null!=t&&(this.innerRadius=t,this.dirtyDimensions=!0,this.dirtyFilterIdentifier=!0)},Fn.innerRadius=function(t){null!=t&&(this.innerRadius=addStrings(this.innerRadius,t),this.dirtyDimensions=!0,this.dirtyFilterIdentifier=!0)},Rn.width=Rn.outerRadius,Fn.width=Fn.outerRadius,Rn.height=Rn.innerRadius,Fn.height=Fn.innerRadius,Rn.displacement=function(t){if(null!=t&&t.toFixed&&t>=0){let e=t;e<0&&(e=0),this.displacement=e,this.dirtyDimensions=!0,this.dirtyFilterIdentifier=!0}},Fn.displacement=function(t){if(null!=t&&t.toFixed){let e=addStrings(this.displacement,t);e.toFixed&&e<0&&(e=0),this.displacement=e,this.dirtyDimensions=!0,this.dirtyFilterIdentifier=!0}},Rn.displayIntersect=function(t){this.displayIntersect=t,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},Dn.cleanDimensionsAdditionalActions=function(){const{outerRadius:t,innerRadius:e,displacement:i}=this;let s,n=this.getHost();s=n?n.currentDimensions?n.currentDimensions:[n.w,n.h]:[300,150];let[r,o]=s;this.currentOuterRadius=t.substring?parseFloat(t)/100*r:t,this.currentInnerRadius=e.substring?parseFloat(e)/100*o:e,this.currentDisplacement=i.substring?parseFloat(i)/100*r:i,this.currentDimensions[0]=this.currentDimensions[1]=2*this.currentOuterRadius,this.dirtyPathObject=!0},Dn.calculateInterception=function(){dt(this.currentOuterRadius,this.currentInnerRadius,this.currentDisplacement)||this.cleanDimensionsAdditionalActions();const{currentOuterRadius:t,currentInnerRadius:e,currentDisplacement:i}=this;this.outerCircleStart=0,this.outerCircleEnd=360*gt,this.innerCircleStart=0,this.innerCircleEnd=360*gt,this.drawOuterCircle=!1,this.drawDonut=!1;let s=t+e,n=t-e;if(!n&&!i)this.drawOuterCircle=!0;else if(i>=s)this.drawOuterCircle=!0;else if(in){let s,n,r=hi(),{engine:o,element:a}=r,l=fi();for(a.width=a.width,o.fillStyle="black",o.save(),o.beginPath(),o.arc(0,0,t,0,2*Math.PI),l.setFromArray([e,0]),s=0;s<360&&(l.rotate(.5),!o.isPointInPath(l[0]+i,l[1]));s+=.5);for(o.restore(),o.save(),o.beginPath(),o.arc(i,0,e,0,2*Math.PI),l.setFromArray([t,0]),n=0;n<360&&(l.rotate(.5),o.isPointInPath(...l));n+=.5);o.restore(),this.outerCircleStart=-n*gt,this.outerCircleEnd=n*gt,this.innerCircleStart=s*gt,this.innerCircleEnd=-s*gt,pi(l),ci(r)}else this.drawDonut=!0},Dn.cleanPathObject=function(){if(this.dirtyPathObject=!1,!this.noPathUpdates||!this.pathObject){this.calculateInterception();let{currentStampHandlePosition:t,currentScale:e,currentOuterRadius:i,currentInnerRadius:s,outerCircleStart:n,outerCircleEnd:r,innerCircleStart:o,innerCircleEnd:a,drawOuterCircle:l,currentDisplacement:h,displayIntersect:c}=this,u=this.pathObject=new Path2D;i*=e,s*=e,h*=e;let d=i-t[0]*e,f=i-t[1]*e;if(l)u.arc(d,f,i,n,r),u.closePath(),this.pathObjectOuter=!1,this.pathObjectInner=!1;else{let t=this.pathObjectOuter=new Path2D,e=this.pathObjectInner=new Path2D;c?u.arc(d,f,i,n,r):u.arc(d,f,i,n,r,!0),u.arc(d+h,f,s,o,a),u.closePath(),t.arc(d,f,i,n,r,!0),t.closePath(),e.arc(d+h,f,s,o,a),e.closePath()}}},Dn.draw=function(t){this.drawDonut?(t.stroke(this.pathObjectOuter),t.stroke(this.pathObjectInner)):t.stroke(this.pathObject)},Dn.fill=function(t){t.fill(this.pathObject,this.winding)},Dn.drawAndFill=function(t){if(this.drawDonut){let e=this.pathObject,i=this.pathObjectOuter,s=this.pathObjectInner;t.stroke(i),t.stroke(s),t.fill(e,this.winding),this.currentHost.clearShadow(),t.stroke(i),t.stroke(s),t.fill(e,this.winding)}else{let e=this.pathObject;t.stroke(e),t.fill(e,this.winding),this.currentHost.clearShadow(),t.stroke(e),t.fill(e,this.winding)}},Dn.fillAndDraw=function(t){if(this.drawDonut){let e=this.pathObject,i=this.pathObjectOuter,s=this.pathObjectInner;t.fill(e,this.winding),t.stroke(i),t.stroke(s),this.currentHost.clearShadow(),t.fill(e,this.winding),t.stroke(i),t.stroke(s)}else{let e=this.pathObject;t.fill(e,this.winding),t.stroke(e),this.currentHost.clearShadow(),t.fill(e,this.winding),t.stroke(e)}},Dn.drawThenFill=function(t){if(this.drawDonut){let e=this.pathObject,i=this.pathObjectOuter,s=this.pathObjectInner;t.stroke(i),t.stroke(s),t.fill(e,this.winding)}else{let e=this.pathObject;t.stroke(e),t.fill(e,this.winding)}},Dn.fillThenDraw=function(t){if(this.drawDonut){let e=this.pathObject,i=this.pathObjectOuter,s=this.pathObjectInner;t.fill(e,this.winding),t.stroke(i),t.stroke(s)}else{let e=this.pathObject;t.fill(e,this.winding),t.stroke(e)}},Dn.clip=function(t){t.clip(this.pathObject,this.winding)},Dn.clear=function(t){let e=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",t.fill(this.pathObject,this.winding),t.globalCompositeOperation=e};const En=function(t){return!!t&&new Crescent(t)};H.Crescent=Crescent;const Mn={},Hn=function(t=q){const e=(t=q)=>{if(t&&t.target){let e=t.target,s="";for(;!s&&(Mn[e.id]&&(s=e.id),"BODY"!==e.tagName);)e=e.parentElement;const r=Mn[s];if(r)for(let e=0,s=r.length;e{i(t)};let n=Z;const r=(t=q)=>{n(t),i=Z,n=Z},o=function(t=q,e,i){let{zone:s,coordinateSource:n,collisionGroup:r,startOn:o,endOn:a,updateOnStart:l,updateOnEnd:h,updateWhileMoving:c,updateOnShiftStart:u,updateOnShiftEnd:d,updateWhileShiftMoving:f,updateOnPrematureExit:p,exposeCurrentArtefact:m,preventTouchDefaultWhenDragging:y,resetCoordsToZeroOnTouchEnd:b,processingOrder:S}=t;if(!s)return new Error("dragZone constructor - no zone supplied");if(s.substring&&(s=artefact[s]),!s||["Canvas","Stack"].indexOf(s.type)<0)return new Error("dragZone constructor - zone object is not a Stack or Canvas wrapper");let k=s.domElement;if(!k)return new Error("dragZone constructor - zone does not contain a target DOM element");if(r?r.substring&&(r=g[r]):r="Canvas"===s.type?g[s.base.name]:g[s.name],!r||"Group"!==r.type)return new Error("dragZone constructor - unable to recover collisionGroup group");if(n?n.here?n=n.here:dt(n.x,n.y)||(n=!1):n="Canvas"===s.type?s.base.here:s.here,!n)return new Error("dragZone constructor - unable to discover a usable coordinateSource object");Array.isArray(o)||(o=["down"]),Array.isArray(a)||(a=["up"]),null==m&&(m=!1),null==y&&(y=!1),null==b&&(b=!0),rt(l)&&(l=function(){A.artefact.set(t.updateOnStart)}),st(l)||(l=Z),rt(u)&&(u=function(){A.artefact.set(t.updateOnShiftStart)}),st(u)||(u=l),rt(h)&&(h=function(){A.artefact.set(t.updateOnEnd)}),st(h)||(h=Z),rt(d)&&(d=function(){A.artefact.set(t.updateOnShiftEnd)}),st(d)||(d=h),st(c)||(c=Z),st(f)||(f=c),st(p)||(p=Z),tt(m)||(m=!1),null==S&&(S=0);let A=!1;const O=function(t){t&&t.cancelable&&(y&&A?(t.preventDefault(),t.returnValue=!1):y||(t.preventDefault(),t.returnValue=!1))},v=function(t=q){A&&(O(t),"touchmove"===t.type&&touchAction(t),t.shiftKey?f(t):c(t))},x=function(t=q){A&&(O(t),"touchend"===t.type&&touchAction(t,b),A.artefact.dropArtefact(),t.shiftKey?d(t):h(t),A=!1)};Mn[s.name]||(Mn[s.name]=[],e(o,a,k));const C=function(){const t=`${s.name}_${r.name}_${S}`;Mn[s.name]=Mn[s.name].filter((e=>e.name!==t)),Mn[s.name].length||(i(o,a,k),delete Mn[s.name])},w=function(t){if(!t)return A;"exit"===t||"drop"===t?(x(),p()):C()},P={name:`${s.name}_${r.name}_${S}`,exposeCurrentArtefact:m,target:k,processingOrder:S,pickup:function(t=q){O(t);let e=t.type;return"touchstart"!==e&&"touchcancel"!==e||touchAction(t,b),A=r.getArtefactAt(n),A&&(A.artefact.pickupArtefact(n),t.shiftKey?u(t):l(t)),{current:A,move:v,drop:x}},move:v,drop:x,kill:C,getCurrent:w};return Mn[s.name].push(P),Mn[s.name].sort(((t,e)=>t.processingOrder-e.processingOrder)),{exposeCurrentArtefact:m,getCurrent:w,kill:C,zone:s}}(t,((t,i,n)=>{xt(t,e,n),xt("move",s,n),xt(i,r,n)}),((t,i,n)=>{Ct(t,e,n),Ct("move",s,n),Ct(i,r,n)}));return o.exposeCurrentArtefact?o.getCurrent:o.kill},ParticleHistory=function(t){let e=[];return Object.setPrototypeOf(e,ParticleHistory.prototype),t&&e.set(t),e};let In=ParticleHistory.prototype=Object.create(Array.prototype);In.constructor=ParticleHistory,In.type="ParticleHistory";const Bn=[],Tn=function(t){t&&"ParticleHistory"===t.type&&(t.length=0,Bn.push(t),Bn.length>100&&(Bn.length=0))};H.ParticleHistory=ParticleHistory;const Particle=function(t=q){return this.makeName(t.name),this.register(),this.set(this.defs),this.initializePositions(),this.set(t),this};let Ln=Particle.prototype=Object.create(Object.prototype);Ln.type="Particle",Ln.lib="particle",Ln.isArtefact=!1,Ln.isAsset=!1,Ln=me(Ln);Ln.defs=at(Ln.defs,{position:null,velocity:null,load:null,history:null,historyLength:1,engine:"euler",forces:null,mass:1,fill:"#000000",stroke:"#000000"}),Ln.packetExclusions=ht(Ln.packetExclusions,[]),Ln.packetExclusionsByRegex=ht(Ln.packetExclusionsByRegex,["^(local|dirty|current)"]),Ln.packetCoordinates=ht(Ln.packetCoordinates,[]),Ln.packetObjects=ht(Ln.packetObjects,["position","velocity","acceleration"]),Ln.packetFunctions=ht(Ln.packetFunctions,[]),Ln.factoryKill=function(){this.history.forEach((t=>Tn(t)));O.forEach((t=>{let e=A[t];e.particleFrom&&e.particleFrom.name===this.name||e.particleTo&&(e.particleTo.name,this.name)})),[].forEach((t=>t.kill()))};let $n=Ln.getters,jn=Ln.setters,Xn=Ln.deltaSetters;$n.positionX=function(){return this.position.x},$n.positionY=function(){return this.position.y},$n.positionZ=function(){return this.position.z},$n.position=function(){let t=this.position;return[t.x,t.y,t.z]},jn.positionX=function(t){this.position.x=t},jn.positionY=function(t){this.position.y=t},jn.positionZ=function(t){this.position.z=t},jn.position=function(t){this.position.set(t)},Xn.positionX=function(t){this.position.x+=t},Xn.positionY=function(t){this.position.y+=t},Xn.positionZ=function(t){this.position.z+=t},Xn.position=Z,$n.velocityX=function(){return this.velocity.x},$n.velocityY=function(){return this.velocity.y},$n.velocityZ=function(){return this.velocity.z},$n.velocity=function(){let t=this.velocity;return[t.x,t.y,t.z]},jn.velocityX=function(t){this.velocity.x=t},jn.velocityY=function(t){this.velocity.y=t},jn.velocityZ=function(t){this.velocity.z=t},jn.velocity=function(t,e,i){this.velocity.set(t,e,i)},Xn.velocityX=function(t){this.velocity.x+=t},Xn.velocityY=function(t){this.velocity.y+=t},Xn.velocityZ=function(t){this.velocity.z+=t},Xn.velocity=Z,jn.forces=function(t){t&&(Array.isArray(t)?(this.forces.length=0,this.forces=this.forces.concat(t)):this.forces.push(t))},jn.load=Z,jn.history=Z,Xn.load=Z,Ln.initializePositions=function(){this.initialPosition=ns(),this.position=ns(),this.velocity=ns(),this.load=ns(),this.forces=[],this.history=[],this.isRunning=!1},Ln.applyForces=function(t,e){this.load.zero(),this.isBeingDragged||this.forces.forEach((i=>{let s=S[i];s&&s.action&&s.action(this,t,e)}))},Ln.update=function(t,e){this.isBeingDragged?this.position.setFromVector(this.isBeingDragged).vectorAdd(this.dragOffset):Wn[this.engine].call(this,t*e.tickMultiplier)},Ln.manageHistory=function(t,e){let{history:i,remainingTime:s,position:n,historyLength:r,hasLifetime:o,distanceLimit:a,initialPosition:l,killBeyondCanvas:h}=this,c=!0,u=0;if(o)if(u=s-t,u<=0){let t=i.pop();Tn(t),c=!1,i.length||(this.isRunning=!1)}else this.remainingTime=u;let d=i[i.length-1];if(d){let[t,i,s,n]=d;if(h){let t=e.element.width,i=e.element.height;(s<0||n<0||s>t||n>i)&&(c=!1,this.isRunning=!1)}if(a){let t=is(l);t.vectorSubtractArray([s,n,i]),t.getMagnitude()>a&&(c=!1,this.isRunning=!1),ss(t)}}if(c){let{x:t,y:e,z:s}=n,o=(Bn.length||Bn.push(new ParticleHistory),Bn.shift());if(o.push(u,s,t,e),i.unshift(o),i.length>r){i.splice(r).forEach((t=>Tn(t)))}}},Ln.run=function(t,e,i){this.hasLifetime=!1,t&&(this.remainingTime=t,this.hasLifetime=!0),this.distanceLimit=0,e&&(this.initialPosition.set(this.position),this.distanceLimit=e),this.killBeyondCanvas=i,this.isRunning=!0};const Yn=function(t){return!!t&&new Particle(t)};H.Particle=Particle;const Nn=[],Gn=function(t){Nn.length||Nn.push(new Particle);let e=Nn.shift();return e.set(t),e},zn=function(t){if(t&&"Particle"===t.type&&(t.history.forEach((t=>Tn(t))),t.history.length=0,t.set(t.defs),Nn.push(t),Nn.length>50)){let t=[].concat(Nn);Nn.length=0,t.forEach((t=>t.kill()))}},Wn={euler:function(t){let{position:e,velocity:i,load:s,mass:n}=this,r=is(),o=is(i);r.setFromVector(s).scalarDivide(n),o.vectorAdd(r.scalarMultiply(t)),i.setFromVector(o),e.vectorAdd(o.scalarMultiply(t)),ss(r)},"improved-euler":function(t){let{position:e,velocity:i,load:s,mass:n}=this,r=is(),o=is(),a=is(),l=is(i);r.setFromVector(s).scalarDivide(n).scalarMultiply(t),o.setFromVector(s).vectorAdd(r).scalarDivide(n).scalarMultiply(t),a.setFromVector(r).vectorAdd(o).scalarDivide(2),l.vectorAdd(a),i.setFromVector(l),e.vectorAdd(l.scalarMultiply(t)),ss(r)},"runge-kutta":function(t){let{position:e,velocity:i,load:s,mass:n}=this,r=is(),o=is(),a=is(),l=is(),h=is(),c=is(i);r.setFromVector(s).scalarDivide(n).scalarMultiply(t).scalarDivide(2),o.setFromVector(s).vectorAdd(r).scalarDivide(n).scalarMultiply(t).scalarDivide(2),a.setFromVector(s).vectorAdd(o).scalarDivide(n).scalarMultiply(t).scalarDivide(2),l.setFromVector(s).vectorAdd(a).scalarDivide(n).scalarMultiply(t).scalarDivide(2),o.scalarMultiply(2),a.scalarMultiply(2),h.setFromVector(r).vectorAdd(o).vectorAdd(a).vectorAdd(l).scalarDivide(6),c.vectorAdd(h),i.setFromVector(c),e.vectorAdd(c.scalarMultiply(t)),ss(r)}},Emitter=function(t=q){return this.makeName(t.name),this.register(),this.initializePositions(),this.set(this.defs),this.onEnter=Z,this.onLeave=Z,this.onDown=Z,this.onUp=Z,this.fillColorFactory=Ue({name:`${this.name}-fillColorFactory`}),this.strokeColorFactory=Ue({name:`${this.name}-strokeColorFactory`}),this.range=ns(),this.rangeFrom=ns(),this.preAction=Z,this.stampAction=Z,this.postAction=Z,this.particleStore=[],this.deadParticles=[],this.liveParticles=[],t.group||(t.group=ks),this.set(t),this.purge&&this.purgeArtefact(this.purge),this};let Vn=Emitter.prototype=Object.create(Object.prototype);Vn.type="Emitter",Vn.lib="entity",Vn.isArtefact=!0,Vn.isAsset=!1,Vn=me(Vn),Vn=tn(Vn);Vn.defs=at(Vn.defs,{world:null,artefact:null,range:null,rangeFrom:null,generationRate:0,particleCount:0,generateAlongPath:null,generateInArea:null,generateFromExistingParticles:!1,generateFromExistingParticleHistories:!1,limitDirectionToAngleMultiples:0,generationChoke:15,killAfterTime:0,killAfterTimeVariation:0,killRadius:0,killRadiusVariation:0,killBeyondCanvas:!1,historyLength:1,forces:null,mass:1,massVariation:0,engine:"euler",hitRadius:10,showHitRadius:!1,hitRadiusColor:"#000000",resetAfterBlur:3}),Vn.packetExclusions=ht(Vn.packetExclusions,["forces","particleStore","deadParticles","liveParticles","fillColorFactory","strokeColorFactory"]),Vn.packetExclusionsByRegex=ht(Vn.packetExclusionsByRegex,[]),Vn.packetCoordinates=ht(Vn.packetCoordinates,[]),Vn.packetObjects=ht(Vn.packetObjects,["world","artefact","generateInArea","generateAlongPath"]),Vn.packetFunctions=ht(Vn.packetFunctions,["preAction","stampAction","postAction"]),Vn.finalizePacketOut=function(t,e){let i=e.forces||this.forces||!1;if(i){let e=[];i.forEach((t=>{t.substring?e.push(t):rt(t)&&t.name&&e.push(t.name)})),t.forces=e}let s=[];return this.particleStore.forEach((t=>s.push(t.saveAsPacket()))),t.particleStore=s,t},Vn.postCloneAction=function(t,e){return t},Vn.factoryKill=function(t,e){this.isRunning=!1,t&&this.artefact.kill(),e&&this.world.kill(),this.fillColorFactory.kill(),this.strokeColorFactory.kill(),this.deadParticles.forEach((t=>t.kill())),this.liveParticles.forEach((t=>t.kill())),this.particleStore.forEach((t=>t.kill()))},Vn.getters;let Zn=Vn.setters,_n=Vn.deltaSetters;Zn.rangeX=function(t){this.range.x=t},Zn.rangeY=function(t){this.range.y=t},Zn.rangeZ=function(t){this.range.z=t},Zn.range=function(t){this.range.set(t)},Zn.rangeFromX=function(t){this.rangeFrom.x=t},Zn.rangeFromY=function(t){this.rangeFrom.y=t},Zn.rangeFromZ=function(t){this.rangeFrom.z=t},Zn.rangeFrom=function(t){this.rangeFrom.set(t)},Zn.preAction=function(t){st(t)&&(this.preAction=t,this.dirtyFilterIdentifier=!0)},Zn.stampAction=function(t){st(t)&&(this.stampAction=t,this.dirtyFilterIdentifier=!0)},Zn.postAction=function(t){st(t)&&(this.postAction=t,this.dirtyFilterIdentifier=!0)},Zn.world=function(t){let e;t.substring?e=v[t]:rt(t)&&"World"===t.type&&(e=t),e&&(this.world=e)},Zn.artefact=function(t){let e;t.substring?e=o[t]:rt(t)&&t.isArtefact&&(e=t),e&&(this.artefact=e,this.dirtyFilterIdentifier=!0)},Zn.generateAlongPath=function(t){let e;t.substring?e=o[t]:rt(t)&&t.isArtefact&&(e=t),e&&e.useAsPath?this.generateAlongPath=e:this.generateAlongPath=!1,this.dirtyFilterIdentifier=!0},Zn.generateInArea=function(t){let e;t.substring?e=o[t]:rt(t)&&t.isArtefact&&(e=t),this.generateInArea=e||!1,this.dirtyFilterIdentifier=!0},Zn.fillColor=function(t){this.fillColorFactory.set({color:t}),this.dirtyFilterIdentifier=!0},Zn.fillMinimumColor=function(t){this.fillColorFactory.set({minimumColor:t}),this.dirtyFilterIdentifier=!0},Zn.fillMaximumColor=function(t){this.fillColorFactory.set({maximumColor:t}),this.dirtyFilterIdentifier=!0},Zn.strokeColor=function(t){this.strokeColorFactory.set({color:t}),this.dirtyFilterIdentifier=!0},Zn.strokeMinimumColor=function(t){this.strokeColorFactory.set({minimumColor:t}),this.dirtyFilterIdentifier=!0},Zn.strokeMaximumColor=function(t){this.strokeColorFactory.set({maximumColor:t}),this.dirtyFilterIdentifier=!0},Zn.hitRadius=function(t){t.toFixed&&(this.hitRadius=t,this.width=this.height=2*t)},_n.hitRadius=function(t){t.toFixed&&(this.hitRadius+=t,this.width=this.height=2*this.hitRadius)},Zn.width=function(t){t.toFixed&&(this.hitRadius=t/2,this.width=this.height=t)},_n.width=function(t){t.toFixed&&(this.hitRadius=t/2,this.width=this.height=t)},Zn.height=Zn.width,_n.height=_n.width,Vn.prepareStamp=function(){this.dirtyHost&&(this.dirtyHost=!1,this.dirtyDimensions=!0),(this.dirtyScale||this.dirtyDimensions||this.dirtyStart||this.dirtyOffset||this.dirtyHandle)&&(this.dirtyPathObject=!0),this.dirtyScale&&this.cleanScale(),this.dirtyDimensions&&this.cleanDimensions(),this.dirtyLock&&this.cleanLock(),this.dirtyStart&&this.cleanStart(),this.dirtyOffset&&this.cleanOffset(),this.dirtyHandle&&this.cleanHandle(),this.dirtyRotation&&this.cleanRotation(),(this.lockTo.indexOf("mouse")>=0||this.lockTo.indexOf("particle")>=0)&&(this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtyStampHandlePositions&&this.cleanStampHandlePositions();let t=Date.now(),{particleStore:e,deadParticles:i,liveParticles:s,particleCount:n,generationRate:r,generatorChoke:o,resetAfterBlur:a}=this;o||(this.generatorChoke=o=t),e.forEach((t=>{t.isRunning?s.push(t):i.push(t)})),e.length=0,i.forEach((t=>zn(t))),i.length=0,e.push(...s),s.length=0;let l=t-o;if(l/1e3>a&&(l=0,this.generatorChoke=t),l>0&&r){let i=Math.floor(r/1e3*l);if(n){let t=n-e.length;t<=0?i=0:tD.isPointInPath(F,...t,$);w.rotateDestination(D,o,a,P);t:for(n=0;n1?([l,g,...y]=a[Math.floor(Math.random()*a.length)],y?P.setFromArray(y):P.setFromVector(o.position)):P.setFromVector(o.position)):P.setFromArray(b),r=Gn(),r.set({positionX:P.x,positionY:P.y,positionZ:P.z,historyLength:h,engine:c,forces:u,mass:i(d,f),fill:p.getRangeColor(Math.random()),stroke:m.getRangeColor(Math.random())}),F?(P.zero(),e=Math.floor(360/F),P.x=s(B,M),P.rotate(Math.floor(Math.random()*e)*F),r.set({velocityX:P.x,velocityY:P.y,velocityZ:s(L,I)})):r.set({velocityX:s(B,M),velocityY:s(T,H),velocityZ:s(L,I)}),ss(P),r.velocity.rotate(C);let t=Math.abs(i(k,A)),n=Math.abs(i(O,v));r.run(t,n,x),S.push(r)}}else if(D){let e,o,a=S.length,l=is();for(n=0;na&&(i.forEach((t=>zn(t))),i.length=0,f=.016),i.forEach((e=>e.applyForces(t,d))),i.forEach((e=>e.update(f,t))),s.call(this,d),i.forEach((t=>{t.manageHistory(f,d),n.call(this,e,t,d)})),r.call(this,d),l){const t=d.engine;t.save(),t.lineWidth=1,t.strokeStyle=c,t.setTransform(1,0,0,1,0,0),t.beginPath(),t.arc(u[0],u[1],h,0,2*Math.PI),t.stroke(),t.restore()}this.lastUpdated=p},Vn.checkHit=function(t=[],e){if(this.noUserInteraction)return!1;let i,s,n=Array.isArray(t)?t:[t],r=this.currentStampPosition,o=!1;if(n.some((t=>{if(Array.isArray(t))i=t[0],s=t[1];else{if(!dt(t,t.x,t.y))return!1;i=t.x,s=t.y}if(!i.toFixed||!s.toFixed||isNaN(i)||isNaN(s))return!1;let e=is(r).vectorSubtract(t);return e.getMagnitude(){let s=i.filters;s&&s.indexOf(t)>=0&&ct(s,t)})),Object.entries(g).forEach((([e,i])=>{let s=i.filters;s&&s.indexOf(t)>=0&&ct(s,t)})),Object.entries(u).forEach((([e,i])=>{let s=i.filters;s&&s.indexOf(t)>=0&&ct(s,t)})),this.deregister(),this};let Jn=Qn.setters;Qn.deltaSetters,Qn.set=function(t=q){const e=Object.keys(t),i=e.length;if(i){const s=this.setters,n=this.defs;let r,o,a,l;for(o=0;o{6===t.length?e.push(t):2===t.length&&(t[0].substring&&t[1].substring&&(i.length=0,t.forEach((t=>{let[e,s,n]=yi.extractRGBfromColor(t);i.push(e,s,n)}))),e.push(i))})),t.actions=[{action:"chroma",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,ranges:e}]},chromakey:function(t){let e=null!=t.red?t.red:0,i=null!=t.green?t.green:255,s=null!=t.blue?t.blue:0;null!=t.reference&&([e,i,s]=yi.extractRGBfromColor(t.reference),t.red=e,t.green=i,t.blue=s,delete t.reference),t.actions=[{action:"colors-to-alpha",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,red:e,green:i,blue:s,transparentAt:null!=t.transparentAt?t.transparentAt:0,opaqueAt:null!=t.opaqueAt?t.opaqueAt:1}]},clampChannels:function(t){let e=null!=t.lowRed?t.lowRed:0,i=null!=t.lowGreen?t.lowGreen:0,s=null!=t.lowBlue?t.lowBlue:0,n=null!=t.highRed?t.highRed:255,r=null!=t.highGreen?t.highGreen:255,o=null!=t.highBlue?t.highBlue:255;null!=t.lowColor&&([e,i,s]=yi.extractRGBfromColor(t.lowColor),t.lowRed=e,t.lowGreen=i,t.lowBlue=s,delete t.lowColor),null!=t.highColor&&([n,r,o]=yi.extractRGBfromColor(t.highColor),t.highRed=n,t.highGreen=r,t.highBlue=o,delete t.highColor),t.actions=[{action:"clamp-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,lowRed:e,lowGreen:i,lowBlue:s,highRed:n,highGreen:r,highBlue:o}]},compose:function(t){t.actions=[{action:"compose",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",lineMix:null!=t.lineMix?t.lineMix:"",compose:null!=t.compose?t.compose:"source-over",offsetX:null!=t.offsetX?t.offsetX:0,offsetY:null!=t.offsetY?t.offsetY:0,opacity:null!=t.opacity?t.opacity:1}]},corrode:function(t){t.actions=[{action:"corrode",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",width:null!=t.width?t.width:3,height:null!=t.height?t.height:3,offsetX:null!=t.offsetX?t.offsetX:1,offsetY:null!=t.offsetY?t.offsetY:1,includeRed:null!=t.includeRed&&t.includeRed,includeGreen:null!=t.includeGreen&&t.includeGreen,includeBlue:null!=t.includeBlue&&t.includeBlue,includeAlpha:null==t.includeAlpha||t.includeAlpha,operation:null!=t.operation?t.operation:"mean",opacity:null!=t.opacity?t.opacity:1}]},curveWeights:function(t){t.actions=[{action:"vary-channels-by-weights",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,weights:null!=t.weights&&t.weights,useMixedChannel:null==t.useMixedChannel||t.useMixedChannel}]},cyan:function(t){t.actions=[{action:"average-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,includeGreen:!0,includeBlue:!0,excludeRed:!0}]},displace:function(t){t.actions=[{action:"displace",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",lineMix:null!=t.lineMix?t.lineMix:"",opacity:null!=t.opacity?t.opacity:1,channelX:null!=t.channelX?t.channelX:"red",channelY:null!=t.channelY?t.channelY:"green",offsetX:null!=t.offsetX?t.offsetX:0,offsetY:null!=t.offsetY?t.offsetY:0,scaleX:null!=t.scaleX?t.scaleX:1,scaleY:null!=t.scaleY?t.scaleY:1,transparentEdges:null!=t.transparentEdges&&t.transparentEdges}]},edgeDetect:function(t){t.actions=[{action:"matrix",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,width:3,height:3,offsetX:1,offsetY:1,includeRed:!0,includeGreen:!0,includeBlue:!0,includeAlpha:!1,weights:[0,1,0,1,-4,1,0,1,0]}]},emboss:function(t){const e=[];t.useNaturalGrayscale?e.push({action:"grayscale",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:"emboss-work"}):e.push({action:"average-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:"emboss-work",includeRed:!0,includeGreen:!0,includeBlue:!0}),t.clamp&&e.push({action:"clamp-channels",lineIn:"emboss-work",lineOut:"emboss-work",lowRed:0+t.clamp,lowGreen:0+t.clamp,lowBlue:0+t.clamp,highRed:255-t.clamp,highGreen:255-t.clamp,highBlue:255-t.clamp}),t.smoothing&&e.push({action:"gaussian-blur",lineIn:"emboss-work",lineOut:"emboss-work",radius:t.smoothing}),e.push({action:"emboss",lineIn:"emboss-work",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,angle:null!=t.angle?t.angle:0,strength:null!=t.strength?t.strength:1,tolerance:null!=t.tolerance?t.tolerance:0,keepOnlyChangedAreas:null!=t.keepOnlyChangedAreas&&t.keepOnlyChangedAreas,postProcessResults:null==t.postProcessResults||t.postProcessResults}),t.actions=e},flood:function(t){let e=null!=t.red?t.red:0,i=null!=t.green?t.green:0,s=null!=t.blue?t.blue:0,n=null!=t.alpha?t.alpha:255,r=null!=t.excludeAlpha&&t.excludeAlpha;null!=t.reference&&([e,i,s,n]=yi.extractRGBfromColor(t.reference),n=Math.round(255*n),t.red=e,t.green=i,t.blue=s,t.alpha=n,delete t.reference),t.actions=[{action:"flood",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,red:e,green:i,blue:s,alpha:n,excludeAlpha:r}]},gaussianBlur:function(t){t.actions=[{action:"gaussian-blur",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,radius:null!=t.radius?t.radius:1}]},glitch:function(t){t.actions=[{action:"glitch",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,useMixedChannel:null==t.useMixedChannel||t.useMixedChannel,seed:null!=t.seed?t.seed:"some-random-string-or-other",step:null!=t.step?t.step:1,offsetMin:null!=t.offsetMin?t.offsetMin:0,offsetMax:null!=t.offsetMax?t.offsetMax:0,offsetRedMin:null!=t.offsetRedMin?t.offsetRedMin:0,offsetRedMax:null!=t.offsetRedMax?t.offsetRedMax:0,offsetGreenMin:null!=t.offsetGreenMin?t.offsetGreenMin:0,offsetGreenMax:null!=t.offsetGreenMax?t.offsetGreenMax:0,offsetBlueMin:null!=t.offsetBlueMin?t.offsetBlueMin:0,offsetBlueMax:null!=t.offsetBlueMax?t.offsetBlueMax:0,offsetAlphaMin:null!=t.offsetAlphaMin?t.offsetAlphaMin:0,offsetAlphaMax:null!=t.offsetAlphaMax?t.offsetAlphaMax:0,transparentEdges:null!=t.transparentEdges&&t.transparentEdges,level:null!=t.level?t.level:0}]},gray:function(t){t.actions=[{action:"average-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,includeRed:!0,includeGreen:!0,includeBlue:!0}]},grayscale:function(t){t.actions=[{action:"grayscale",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1}]},green:function(t){t.actions=[{action:"average-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,excludeRed:!0,excludeBlue:!0}]},image:function(t){t.actions=[{action:"process-image",lineOut:null!=t.lineOut?t.lineOut:"",asset:null!=t.asset?t.asset:"",width:null!=t.width?t.width:1,height:null!=t.height?t.height:1,copyWidth:null!=t.copyWidth?t.copyWidth:1,copyHeight:null!=t.copyHeight?t.copyHeight:1,copyX:null!=t.copyX?t.copyX:0,copyY:null!=t.copyY?t.copyY:0}]},invert:function(t){t.actions=[{action:"invert-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,includeRed:!0,includeGreen:!0,includeBlue:!0}]},magenta:function(t){t.actions=[{action:"average-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,includeRed:!0,includeBlue:!0,excludeGreen:!0}]},mapToGradient:function(t){t.gradient&&t.gradient.substring&&(t.gradient=D[t.gradient]),t.actions=[{action:"map-to-gradient",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,useNaturalGrayscale:null!=t.useNaturalGrayscale&&t.useNaturalGrayscale,gradient:t.gradient||qn()}]},matrix:function(t){t.actions=[{action:"matrix",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,width:3,height:3,offsetX:1,offsetY:1,includeRed:null==t.includeRed||t.includeRed,includeGreen:null==t.includeGreen||t.includeGreen,includeBlue:null==t.includeBlue||t.includeBlue,includeAlpha:null!=t.includeAlpha&&t.includeAlpha,weights:null!=t.weights?t.weights:[0,0,0,0,1,0,0,0,0]}]},matrix5:function(t){t.actions=[{action:"matrix",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,width:5,height:5,offsetX:2,offsetY:2,includeRed:null==t.includeRed||t.includeRed,includeGreen:null==t.includeGreen||t.includeGreen,includeBlue:null==t.includeBlue||t.includeBlue,includeAlpha:null!=t.includeAlpha&&t.includeAlpha,weights:null!=t.weights?t.weights:[0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0]}]},newsprint:function(t){t.actions=[{action:"newsprint",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,width:null!=t.width?t.width:1}]},notblue:function(t){t.actions=[{action:"set-channel-to-level",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,includeBlue:!0,level:0}]},notgreen:function(t){t.actions=[{action:"set-channel-to-level",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,includeGreen:!0,level:0}]},notred:function(t){t.actions=[{action:"set-channel-to-level",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,includeRed:!0,level:0}]},offset:function(t){t.actions=[{action:"offset",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,offsetRedX:null!=t.offsetX?t.offsetX:0,offsetRedY:null!=t.offsetY?t.offsetY:0,offsetGreenX:null!=t.offsetX?t.offsetX:0,offsetGreenY:null!=t.offsetY?t.offsetY:0,offsetBlueX:null!=t.offsetX?t.offsetX:0,offsetBlueY:null!=t.offsetY?t.offsetY:0,offsetAlphaX:null!=t.offsetX?t.offsetX:0,offsetAlphaY:null!=t.offsetY?t.offsetY:0}]},offsetChannels:function(t){t.actions=[{action:"offset",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,offsetRedX:null!=t.offsetRedX?t.offsetRedX:0,offsetRedY:null!=t.offsetRedY?t.offsetRedY:0,offsetGreenX:null!=t.offsetGreenX?t.offsetGreenX:0,offsetGreenY:null!=t.offsetGreenY?t.offsetGreenY:0,offsetBlueX:null!=t.offsetBlueX?t.offsetBlueX:0,offsetBlueY:null!=t.offsetBlueY?t.offsetBlueY:0,offsetAlphaX:null!=t.offsetAlphaX?t.offsetAlphaX:0,offsetAlphaY:null!=t.offsetAlphaY?t.offsetAlphaY:0}]},pixelate:function(t){t.actions=[{action:"pixelate",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,tileWidth:null!=t.tileWidth?t.tileWidth:1,tileHeight:null!=t.tileHeight?t.tileHeight:1,offsetX:null!=t.offsetX?t.offsetX:0,offsetY:null!=t.offsetY?t.offsetY:0,includeRed:null==t.includeRed||t.includeRed,includeGreen:null==t.includeGreen||t.includeGreen,includeBlue:null==t.includeBlue||t.includeBlue,includeAlpha:null!=t.includeAlpha&&t.includeAlpha}]},randomNoise:function(t){const e=["random","ordered","bluenoise"].includes(t.noiseType)?t.noiseType:"random";t.actions=[{action:"random-noise",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,width:null!=t.width?t.width:1,height:null!=t.height?t.height:1,seed:null!=t.seed?t.seed:"some-random-string-or-other",noiseType:e,level:null!=t.level?t.level:0,noWrap:null!=t.noWrap&&t.noWrap,includeRed:null==t.includeRed||t.includeRed,includeGreen:null==t.includeGreen||t.includeGreen,includeBlue:null==t.includeBlue||t.includeBlue,includeAlpha:null==t.includeAlpha||t.includeAlpha,excludeTransparentPixels:null==t.excludeTransparentPixels||t.excludeTransparentPixels}]},red:function(t){t.actions=[{action:"average-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,excludeGreen:!0,excludeBlue:!0}]},reducePalette:function(t){let e=null!=t.palette?t.palette:"black-white";t.actions=[],e.substring&&e.includes(",")&&(e=e.split(","),e.forEach((t=>t.trim())));let i=t.useBluenoise?"bluenoise":t.noiseType||"random";["random","ordered","bluenoise"].includes(i)||(i="random"),t.actions.push({action:"reduce-palette",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",seed:null!=t.seed?t.seed:"some-random-string-or-other",minimumColorDistance:null!=t.minimumColorDistance?t.minimumColorDistance:1e3,useLabForPaletteDistance:null!=t.useLabForPaletteDistance&&t.useLabForPaletteDistance,palette:e,noiseType:i,opacity:null!=t.opacity?t.opacity:1})},saturation:function(t){let e=null!=t.level?t.level:1;t.actions=[{action:"modulate-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,red:e,green:e,blue:e,saturation:!0}]},sepia:function(t){t.actions=[{action:"tint-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,redInRed:.393,redInGreen:.349,redInBlue:.272,greenInRed:.769,greenInGreen:.686,greenInBlue:.534,blueInRed:.189,blueInGreen:.168,blueInBlue:.131}]},sharpen:function(t){t.actions=[{action:"matrix",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,width:3,height:3,offsetX:1,offsetY:1,includeRed:!0,includeGreen:!0,includeBlue:!0,includeAlpha:!1,weights:[0,-1,0,-1,5,-1,0,-1,0]}]},swirl:function(t){let e=null!=t.startX?t.startX:"50%",i=null!=t.startY?t.startY:"50%",s=null!=t.innerRadius?t.innerRadius:0,n=null!=t.outerRadius?t.outerRadius:"30%",r=null!=t.angle?t.angle:0,o=null!=t.easing?t.easing:"linear";const a=[...null!=t.staticSwirls?t.staticSwirls:[]];a.push([e,i,s,n,r,o]),t.actions=[{action:"swirl",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,swirls:a}]},threshold:function(t){let e=null!=t.lowRed?t.lowRed:0,i=null!=t.lowGreen?t.lowGreen:0,s=null!=t.lowBlue?t.lowBlue:0,n=null!=t.lowAlpha?t.lowAlpha:255,r=null!=t.highRed?t.highRed:255,o=null!=t.highGreen?t.highGreen:255,a=null!=t.highBlue?t.highBlue:255,l=null!=t.highAlpha?t.highAlpha:255;null!=t.lowColor&&([e,i,s,n]=yi.extractRGBfromColor(t.lowColor),n=Math.round(255*n),t.lowRed=e,t.lowGreen=i,t.lowBlue=s,t.lowAlpha=n,t.low=[e,i,s,n],delete t.lowColor),null!=t.highColor&&([r,o,a,l]=yi.extractRGBfromColor(t.highColor),l=Math.round(255*l),t.highRed=r,t.highGreen=o,t.highBlue=a,t.highAlpha=l,t.high=[r,o,a,l],delete t.highColor);let h=null!=t.low?t.low:[e,i,s,n],c=null!=t.high?t.high:[r,o,a,l];t.actions=[{action:"threshold",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,level:null!=t.level?t.level:128,red:null!=t.red?t.red:128,green:null!=t.green?t.green:128,blue:null!=t.blue?t.blue:128,alpha:null!=t.alpha?t.alpha:128,low:h,high:c,includeRed:null==t.includeRed||t.includeRed,includeGreen:null==t.includeGreen||t.includeGreen,includeBlue:null==t.includeBlue||t.includeBlue,includeAlpha:null!=t.includeAlpha&&t.includeAlpha,useMixedChannel:null==t.useMixedChannel||t.useMixedChannel}]},tiles:function(t){t.actions=[{action:"tiles",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,tileWidth:null!=t.tileWidth?t.tileWidth:1,tileHeight:null!=t.tileHeight?t.tileHeight:1,tileRadius:null!=t.tileRadius?t.tileRadius:1,offsetX:null!=t.offsetX?t.offsetX:0,offsetY:null!=t.offsetY?t.offsetY:0,angle:null!=t.angle?t.angle:0,points:null!=t.points?t.points:"rect-grid",seed:null!=t.seed?t.seed:"some-random-string-or-other",includeRed:null==t.includeRed||t.includeRed,includeGreen:null==t.includeGreen||t.includeGreen,includeBlue:null==t.includeBlue||t.includeBlue,includeAlpha:null!=t.includeAlpha&&t.includeAlpha}]},tint:function(t){let e=null!=t.redInRed?t.redInRed:1,i=null!=t.redInGreen?t.redInGreen:0,s=null!=t.redInBlue?t.redInBlue:0,n=null!=t.greenInRed?t.greenInRed:0,r=null!=t.greenInGreen?t.greenInGreen:1,o=null!=t.greenInBlue?t.greenInBlue:0,a=null!=t.blueInRed?t.blueInRed:0,l=null!=t.blueInGreen?t.blueInGreen:0,h=null!=t.blueInBlue?t.blueInBlue:1;null!=t.redColor&&([e,n,a]=yi.extractRGBfromColor(t.redColor),e/=255,n/=255,a/=255,t.redInRed=e,t.greenInRed=n,t.blueInRed=a,delete t.redColor),null!=t.greenColor&&([i,r,l]=yi.extractRGBfromColor(t.greenColor),i/=255,r/=255,l/=255,t.redInGreen=i,t.greenInGreen=r,t.blueInGreen=l,delete t.greenColor),null!=t.blueColor&&([s,o,h]=yi.extractRGBfromColor(t.blueColor),s/=255,o/=255,h/=255,t.redInBlue=s,t.greenInBlue=o,t.blueInBlue=h,delete t.blueColor),t.actions=[{action:"tint-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,redInRed:e,redInGreen:i,redInBlue:s,greenInRed:n,greenInGreen:r,greenInBlue:o,blueInRed:a,blueInGreen:l,blueInBlue:h}]},userDefined:function(t){t.actions=[{action:"user-defined-legacy",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1}]},yellow:function(t){t.actions=[{action:"average-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,includeRed:!0,includeGreen:!0,excludeBlue:!0}]}},er=function(t){return!!t&&new Filter(t)};H.Filter=Filter;const Force=function(t=q){return this.makeName(t.name),this.register(),this.set(this.defs),this.set(t),this.action||(this.action=Z),this};let ir=Force.prototype=Object.create(Object.prototype);ir.type="Force",ir.lib="force",ir.isArtefact=!1,ir.isAsset=!1,ir=me(ir);ir.defs=at(ir.defs,{action:null}),ir.packetFunctions=ht(ir.packetFunctions,["action"]),ir.kill=function(){return this.deregister(),!0},ir.setters.action=function(t){st(t)?this.action=t:this.action=Z};const sr=function(t){return!!t&&new Force(t)};H.Force=Force,sr({name:"gravity",action:(t,e,i)=>{let{mass:s,load:n}=t,r=is();r.setFromVector(e.gravity).scalarMultiply(s),n.vectorAdd(r),ss(r)}});const Grid=function(t=q){return this.tileFill=[],this.tileSources=[],this.entityInit(t),t.tileSources||(this.tileSources=[].concat([{type:"color",source:"#000000"},{type:"color",source:"#ffffff"}])),t.tileFill?Array.isArray(t.tileFill)&&this.tileFill.length===t.tileFill.length&&(this.tileFill=t.tileFill):(this.tileFill.length=this.columns*this.rows,this.tileFill.fill(0)),this.tilePaths=[],this.tileRealCoordinates=[],this.tileVirtualCoordinates=[],t.dimensions||(t.width||(this.currentDimensions[0]=this.dimensions[0]=20),t.height||(this.currentDimensions[1]=this.dimensions[1]=20)),this};let nr=Grid.prototype=Object.create(Object.prototype);nr.type="Grid",nr.lib="entity",nr.isArtefact=!0,nr.isAsset=!1,nr=me(nr),nr=tn(nr);nr.defs=at(nr.defs,{columns:2,rows:2,columnGutterWidth:1,rowGutterWidth:1,tileSources:null,tileFill:null,gutterColor:"#808080"}),nr.packetExclusions=ht(nr.packetExclusions,["tileSources"]),nr.finalizePacketOut=function(t,e){let i=t.tileSources=[];this.tileSources.forEach((t=>{i.push({type:t.type,source:rt(t.source)?t.source.name:t.source})})),rt(t.gutterColor)&&(t.gutterColor=t.gutterColor.name);let s=JSON.parse(this.state.saveAsPacket(e))[3];return t=at(t,s),t=this.handlePacketAnchor(t,e)},nr.getters;let rr=nr.setters,or=nr.deltaSetters;rr.columns=function(t){if(nt(t)&&(Number.isInteger(t)||(t=parseInt(t,10)),t!==this.columns)){let e,i,s,n=this.tileFill,r=this.columns,o=[];for(this.columns=t,e=0,i=this.rows;e{nt(t)&&(i[t]=e)})),this.dirtyFilterIdentifier=!0),this},nr.setTileSourceTo=function(t,e){return nt(t)&&rt(e)&&e.type&&e.source&&(this.tileSources[t]=e),this},nr.removeTileSource=function(t){return nt(t)&&t&&(this.tileSources[t]=null,this.tileFill=this.tileFill.map((e=>e===t?0:e))),this},nr.getTileSource=function(t,e){if(nt(t))return nt(e)?this.tileFill[t*this.rows+e]:this.tileFill[t]},nr.getTilesUsingSource=function(t){let e=[];return nt(t)&&this.tileFill.forEach(((i,s)=>i==t&&e.push(s))),e},nr.cleanPathObject=function(){if(this.dirtyPathObject=!1,!this.noPathUpdates||!this.pathObject){let t=this.pathObject=new Path2D,e=new Path2D,i=new Path2D,s=this.currentStampHandlePosition,n=this.currentScale,r=this.currentDimensions,o=-s[0]*n,a=-s[1]*n,l=r[0]*n,h=r[1]*n;t.rect(o,a,l,h);let c,u,d,f,p=this.columns,m=this.rows,g=l/p,y=h/m,b=this.tilePaths,S=this.tileRealCoordinates,k=this.tileVirtualCoordinates;for(e.moveTo(o,a),e.lineTo(o+l,a),c=1;c<=m;c++){let t=a+c*y;e.moveTo(o,t),e.lineTo(o+l,t)}for(this.rowLines=e,i.moveTo(o,a),i.lineTo(o,a+h),u=1;u<=p;u++){let t=o+u*g;i.moveTo(t,a),i.lineTo(t,a+h)}for(this.columnLines=i,b.length=0,S.length=0,k.length=0,c=0;c{if(r&&r.type)switch(r.type){case"color":t.fillStyle=r.source;break;case"cellGradient":this.lockFillStyleToEntity=!1,t.fillStyle=r.source.getData(this,this.currentHost);break;case"gridGradient":this.lockFillStyleToEntity=!0,t.fillStyle=r.source.getData(this,this.currentHost)}let y=o.map((t=>t===g));if(y.length)switch(r.type){case"gridPicture":e=r.source.substring?f[r.source]:r.source,e.simpleStamp&&(n.width=m[0]*p,n.height=m[1]*p,s.globalCompositeOperation="source-over",s.fillStyle="#000000",y.forEach(((t,e)=>{t&&s.fillRect(h[e][0],h[e][1],u,d)})),s.globalCompositeOperation="source-in",e.simpleStamp(i,{startX:0,startY:0,width:m[0]*p,height:m[1]*p,method:"fill"}),t.drawImage(n,l[0][0],l[0][1]));break;case"tilePicture":e=r.source.substring?f[r.source]:r.source,e.simpleStamp&&(n.width=u,n.height=d,s.globalCompositeOperation="source-over",e.simpleStamp(i,{startX:0,startY:0,width:u,height:d,method:"fill"}),y.forEach(((e,i)=>e&&t.drawImage(n,l[i][0],l[i][1]))));break;default:y.forEach(((e,i)=>e&&t.fill(a[i],c)))}}));let g,y=this.gutterColor,b=this.rowGutterWidth,S=this.columnGutterWidth;if(ut(y)){switch(y.substring?g={type:"color",source:this.gutterColor}:rt(y)?g=y:nt(y)&&rt(r[y])&&(g=r[y]),g.type){case"cellGradient":this.lockFillStyleToEntity=!1,t.strokeStyle=g.source.getData(this,this.currentHost);break;case"gridGradient":this.lockFillStyleToEntity=!0,t.strokeStyle=g.source.getData(this,this.currentHost);break;case"color":t.strokeStyle=g.source}switch(g.type){case"gridPicture":case"tilePicture":if((b||S)&&(e=g.source.substring?f[g.source]:g.source,e.simpleStamp)){let r=this.currentStampHandlePosition,o=this.currentScale,a=r[0]*o,h=r[1]*o;n.width=m[0]*o,n.height=m[1]*o,s.globalCompositeOperation="source-over",s.strokeStyle="#000000",s.translate(a,h),b&&(s.lineWidth=b,s.stroke(this.rowLines)),S&&(s.lineWidth=S,s.stroke(this.columnLines)),s.globalCompositeOperation="source-in",e.simpleStamp(i,{startX:0,startY:0,width:m[0]*o,height:m[1]*o,method:"fill"}),t.drawImage(n,l[0][0],l[0][1]),s.translate(0,0)}break;default:b&&(t.lineWidth=b,t.stroke(this.rowLines)),S&&(t.lineWidth=S,t.stroke(this.columnLines))}}ci(i),t.restore()},nr.fill=function(t){this.performFill(t)},nr.drawAndFill=function(t){let e=this.pathObject;t.stroke(e),this.currentHost.clearShadow(),this.performFill(t)},nr.fillAndDraw=function(t){let e=this.pathObject;t.stroke(e),this.currentHost.clearShadow(),this.performFill(t),t.stroke(e)},nr.drawThenFill=function(t){let e=this.pathObject;t.stroke(e),this.performFill(t)},nr.fillThenDraw=function(t){let e=this.pathObject;this.performFill(t),t.stroke(e)},nr.checkHit=function(t=[],e){if(this.noUserInteraction)return!1;this.pathObject&&!this.dirtyPathObject||this.cleanPathObject();let i=Array.isArray(t)?t:[t],s=!1;e||(e=hi(),s=!0);let n,r,o,a=e.engine,l=this.currentStampPosition,h=l[0],c=l[1],u=new Set,d=this.tilePaths;const f=t=>{let e,i;if(Array.isArray(t))e=t[0],i=t[1];else{if(!dt(t,t.x,t.y))return[!1];e=t.x,i=t.y}return!e.toFixed||!i.toFixed||isNaN(e)||isNaN(i)?[!1]:[!0,e,i]};return e.rotateDestination(a,h,c,this),i.some((t=>([n,r,o]=f(t),!!n&&a.isPointInPath(this.pathObject,r,o,this.winding))),this)?(i.forEach((t=>{[n,r,o]=f(t),n&&d.some(((t,e)=>!!a.isPointInPath(t,r,o,this.winding)&&(u.add(e),!0)))})),s&&ci(e),{x:r,y:o,tiles:[...u],artefact:this}):(s&&ci(e),!1)};const ar=function(t){return!!t&&new Grid(t)};H.Grid=Grid;const lr={},hr=function(t=q){const e=(t=q)=>{if(t&&t.target){let e=t.target,s="";for(;!s&&(lr[e.id]&&(s=e.id),"BODY"!==e.tagName);)e=e.parentElement;const n=lr[s];n?(n.onKeyDown(t),i=n.onKeyUp):i=Z}};let i=Z;const s=t=>{i(t)};return function(t=q,e,i){let{zone:s}=t;if(!s)return new Error("keyboardZone constructor - no zone supplied");if(s.substring&&(s=artefact[s]),!s||["Canvas","Stack"].indexOf(s.type)<0)return new Error("keyboardZone constructor - zone object is not a Stack or Canvas wrapper");let n=s.domElement;if(!n)return new Error("keyboardZone constructor - zone does not contain a target DOM element");let r=lr[s.name];r||(lr[s.name]={},r=lr[s.name],e(n)),r.extraKeys||(r.extraKeys={Shift:!1,Control:!1,Alt:!1,Meta:!1});const o=["none","shiftOnly","altOnly","ctrlOnly","metaOnly","shiftAlt","shiftCtrl","shiftMeta","altCtrl","altMeta","ctrlMeta","shiftAltCtrl","shiftAltMeta","shiftCtrlMeta","altCtrlMeta","all"];if(!r.keyGroups){const t={};o.forEach((e=>t[e]={})),r.keyGroups=t}const a=r.keyGroups;return o.forEach((e=>{const i=t[e];null!=i&<(a[e],i)})),r.onKeyDown||(r.onKeyDown=(t=q)=>{if(t&&t.key){t.preventDefault();const{extraKeys:e,keyGroups:i}=r,{key:s}=t;if("Tab"===s||"Escape"===s)return void n.blur();if(null!=e[s])return void(e[s]=!0);const{Shift:o,Control:a,Alt:l,Meta:h}=e;let c=i.none;(o||a||l||h)&&(c=o?l?a?h?i.all:i.shiftAltCtrl:h?i.shiftAltMeta:i.shiftAlt:a?h?i.shiftCtrlMeta:i.shiftCtrl:h?i.shiftMeta:i.shiftOnly:l?a?h?i.altCtrlMeta:i.altCtrl:h?i.altMeta:i.altOnly:a?h?i.ctrlMeta:i.ctrlOnly:h?i.altOnly:i.none),c[s]&&c[s]()}}),r.onKeyUp||(r.onKeyUp=(t=q)=>{if(t&&t.key){t.preventDefault();const{extraKeys:e}=r,{key:i}=t;null!=e[i]&&(e[i]=!1)}}),r.kill||(r.kill=function(){delete lr[s.name],i(n)}),{kill:r.kill,getMappedKeys:(t="none")=>null!=r.keyGroups[t]?Object.keys(r.keyGroups[t]):[]}}(t,(t=>{Rt("keydown",e,t),Rt("keyup",s,t)}),(t=>{Ft("keydown",e,t),Ft("keyup",s,t)}))},Line=function(t=q){return this.curveInit(t),this.shapeInit(t),this};let cr=Line.prototype=Object.create(Object.prototype);cr.type="Line",cr.lib="entity",cr.isArtefact=!0,cr.isAsset=!1,cr=me(cr),cr=hn(cr),cr=un(cr),cr.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeLinePath(),this.pathDefinition=t},cr.makeLinePath=function(){let[t,e]=this.currentStampPosition,[i,s]=this.currentEnd;return`m0,0l${(i-t).toFixed(2)},${(s-e).toFixed(2)}`},cr.cleanDimensions=function(){this.dirtyDimensions=!1,this.dirtyHandle=!0,this.dirtyOffset=!0,this.dirtyStart=!0,this.dirtyEnd=!0},cr.preparePinsForStamp=function(){const t=this.dirtyPins,e=this.endPivot,i=this.endPath;for(let s,n=0,r=t.length;n1)&&(this.fromPathStart=t-e(t)),t=this.fromPathEnd,(t<0||t>1)&&(this.fromPathEnd=t-e(t)),t=this.toPathStart,(t<0||t>1)&&(this.toPathStart=t-e(t)),t=this.toPathEnd,(t<0||t>1)&&(this.toPathEnd=t-e(t))}this.dirtyOutput=!0},br.fromPathStart=function(t){this.loopPathCursors&&(t<0||t>1)&&(t-=Math.floor(t)),this.fromPathStart=t,this.synchronizePathCursors&&(this.toPathStart=t),this.dirtyPathData=!0},Sr.fromPathStart=function(t){let e=this.fromPathStart+=t;this.loopPathCursors&&(e<0||e>1)&&(e-=Math.floor(e)),this.fromPathStart=e,this.synchronizePathCursors&&(this.toPathStart=e),this.dirtyPathData=!0},br.fromPathEnd=function(t){this.loopPathCursors&&(t<0||t>1)&&(t-=Math.floor(t)),this.fromPathEnd=t,this.synchronizePathCursors&&(this.toPathEnd=t),this.dirtyPathData=!0},Sr.fromPathEnd=function(t){let e=this.fromPathEnd+=t;this.loopPathCursors&&(e<0||e>1)&&(e-=Math.floor(e)),this.fromPathEnd=e,this.synchronizePathCursors&&(this.toPathEnd=e),this.dirtyPathData=!0},br.toPathStart=function(t){this.loopPathCursors&&(t<0||t>1)&&(t-=Math.floor(t)),this.toPathStart=t,this.synchronizePathCursors&&(this.fromPathStart=t),this.dirtyPathData=!0},Sr.toPathStart=function(t){let e=this.toPathStart+=t;this.loopPathCursors&&(e<0||e>1)&&(e-=Math.floor(e)),this.toPathStart=e,this.synchronizePathCursors&&(this.fromPathStart=e),this.dirtyPathData=!0},br.toPathEnd=function(t){this.loopPathCursors&&(t<0||t>1)&&(t-=Math.floor(t)),this.toPathEnd=t,this.synchronizePathCursors&&(this.fromPathEnd=t),this.dirtyPathData=!0},Sr.toPathEnd=function(t){let e=this.toPathEnd+=t;this.loopPathCursors&&(e<0||e>1)&&(e-=Math.floor(e)),this.toPathEnd=e,this.synchronizePathCursors&&(this.fromPathEnd=e),this.dirtyPathData=!0},gr.getHost=function(){if(this.currentHost)return this.currentHost;if(this.host){let t=o[this.host];if(t)return this.currentHost=t,this.dirtyHost=!0,this.currentHost}return currentCorePosition},gr.midInitActions=Z,gr.update=function(){this.dirtyInput=!0,this.dirtyOutput=!0},gr.prepareStamp=function(){let t=this.fromPath,e=this.toPath,[i,s,n,r]=this.getBoundingBox();if(!this.dirtyPathData){let{x:i,y:s}=t.getPathPositionData(0),{x:n,y:r}=t.getPathPositionData(1),{x:o,y:a}=e.getPathPositionData(0),{x:l,y:h}=e.getPathPositionData(1),c=[i,s,n,r,o,a,l,h];this.pathTests&&!this.pathTests.some(((t,e)=>t!==c[e]))||(this.pathTests=c,this.dirtyPathData=!0)}if(this.dirtyPathData||!this.fromPathData.length){this.dirtyPathData=!1,this.watchIndex=-1,this.engineInstructions.length=0,this.engineDeltaLengths.length=0;let n=Math.ceil,r=Math.max,o=Math.min,a=this.fromPathData;a.length=0;let l=this.toPathData;if(l.length=0,t&&e){let h,c,u,d,f=n(t.length),p=n(e.length);h=this.setSourceDimension(r(f,p));let m,g,y,b=this.fromPathStart,S=this.fromPathEnd,k=this.toPathStart,A=this.toPathEnd,O=this.constantPathSpeed;m=b=0&&x>=0?([i,s]=S[p(O)],[n,r]=k[p(x)],o=n-i,a=r-s,l=f(o,a),D?(h=-g(o,a)+w,c=y(h),u=b(h),M.push([c,u,-u,c,i,s]),H.push(l)):(h=-g(o,a)+P,c=y(h),u=b(h),M.push([c,u,-u,c,i,s,l]),H.push(l))):(M.push(!1),H.push(!1)),O+=v,x+=C,R&&(O>=A&&(O-=A),x>=A&&(x-=A));E<0&&(E=0),this.watchIndex=E}if(D)for(let e=0;e=t&&(E=0);else for(let e=0;e=t&&(E=0);let z=this.interferenceFactor,W=this.interferenceLoops,V=m(T*z),Z=m(L*z);X.width=V,X.height=Z,N.setTransform(1,0,0,1,0,0),j.setTransform(1,0,0,1,0,0);for(let t=0;t{if(Array.isArray(o))e=o[0],i=o[1];else{if(!dt(o,o.x,o.y))return!1;e=o.x,i=o.y}return!(!e.toFixed||!i.toFixed||isNaN(e)||isNaN(i))&&(s=e-t,n=i-l,!(s<0||s>h||n<0||n>c)&&(r=4*(n*h+s)+3,!!a&&a[r]>0))}),this))return{x:e,y:i,artefact:this}}return!1};const kr=function(t){return!!t&&new Loom(t)};H.Loom=Loom;const Mesh=function(t=q){return this.makeName(t.name),this.register(),this.set(this.defs),this.state=Je(),t.group||(t.group=ks),this.onEnter=Z,this.onLeave=Z,this.onDown=Z,this.onUp=Z,this.delta={},this.set(t),this.fromPathData=[],this.toPathData=[],this.watchFromPath=null,this.watchIndex=-1,this.engineInstructions=[],this.engineDeltaLengths=[],this};let Ar=Mesh.prototype=Object.create(Object.prototype);Ar.type="Mesh",Ar.lib="entity",Ar.isArtefact=!0,Ar.isAsset=!1,Ar=me(Ar),Ar=Xi(Ar),Ar=Vi(Ar);Ar.defs=at(Ar.defs,{net:null,isHorizontalCopy:!0,source:null,sourceIsVideoOrSprite:!1,interferenceLoops:2,interferenceFactor:1.03,visibility:!0,calculateOrder:0,stampOrder:0,delta:null,host:null,group:null,anchor:null,noCanvasEngineUpdates:!1,noDeltaUpdates:!1,onEnter:null,onLeave:null,onDown:null,onUp:null,noUserInteraction:!1,method:"fill"}),Ar.packetExclusions=ht(Ar.packetExclusions,["pathObject","state"]),Ar.packetExclusionsByRegex=ht(Ar.packetExclusionsByRegex,["^(local|dirty|current)","Subscriber$"]),Ar.packetCoordinates=ht(Ar.packetCoordinates,[]),Ar.packetObjects=ht(Ar.packetObjects,["group","net","source"]),Ar.packetFunctions=ht(Ar.packetFunctions,["onEnter","onLeave","onDown","onUp"]),Ar.processPacketOut=function(t,e,i){let s=!0;return i.indexOf(t)<0&&e===this.defs[t]&&(s=!1),s},Ar.finalizePacketOut=function(t,e){let i=JSON.parse(this.state.saveAsPacket(e))[3];return t=at(t,i),t=this.handlePacketAnchor(t,e)},Ar.handlePacketAnchor=function(t,e){if(this.anchor){let i=JSON.parse(this.anchor.saveAsPacket(e))[3];t.anchor=i}return t},Ar.clone=U;let Or=Ar.getters,vr=Ar.setters;Ar.deltaSetters,Ar.get=function(t){const e=this.getters[t];if(e)return e.call(this);{let e,i=this.defs[t],s=this.state;return void 0!==i?(e=this[t],void 0!==e?e:i):(i=s.defs[t],void 0!==i?(e=s[t],void 0!==e?e:i):null)}},Ar.set=function(t=q){const e=Object.keys(t),i=e.length;if(i){const s=this.setters,n=this.defs,r=this.state,o=r?r.setters:q,a=r?r.defs:q;let l,h,c,u;for(h=0;h3){let{rows:i,columns:s,particleStore:n}=t;if(i&&s){this.badNet=!1,this.rows=i,this.columns=s,e||(e=[]);let t=[];n.forEach((e=>{let i=e.position,{x:s,y:n}=i;t.push([s,n])}));let r=t.join(",");e.join(",")!==r&&(this.particlePositions=t,this.dirtyInput=!0),this.sourceIsVideoOrSprite&&(this.dirtyInput=!0)}}},Ar.setSourceDimension=function(){if(!this.badNet){const{columns:t,rows:e,particlePositions:i}=this,s=[],n=[],r=[],o=[],a=[],l=[],h=[],c=[],u=[];let d,f,p,m,g,y,b,S,k,A,O,v,x,C,w,P,D,R;for(p=0;pt&&(this.sourceDimension=t)}for(w=0,P=n.length;w0){let[a,l,h,c]=o;h+=a,c+=l;const u=hi(),d=u.engine,f=u.element;f.width=e,f.height=e,d.setTransform(1,0,0,1,0,0),d.putImageData(i,0,0);const p=hi(),m=p.engine,g=p.element;g.width=h,g.height=c,m.globalAlpha=this.state.globalAlpha,m.setTransform(1,0,0,1,0,0);const y=parseFloat((e/(n-1)).toFixed(4)),b=parseFloat((e/(s-1)).toFixed(4));let S,k,A,O,v,x,C,w,P,D,R,F,E,M,H,I,B,T,L,$,j,X,Y;for(j=0,X=n-1;je?e-M:y;m.drawImage(f,E,M,1,n,0,0,1,B)}}let N=this.interferenceFactor,G=this.interferenceLoops,z=Math.ceil(h*N),W=Math.ceil(c*N);f.width=z,f.height=W,m.setTransform(1,0,0,1,0,0),d.setTransform(1,0,0,1,0,0);for(let t=0;t{if(Array.isArray(t))n=t[0],r=t[1];else{if(!dt(t,t.x,t.y))return!1;n=t.x,r=t.y}return!(!n.toFixed||!r.toFixed||isNaN(n)||isNaN(r))&&o.isPointInPath(this.pathObject,n,r,this.winding)}),this)){let t={x:n,y:r,artefact:this};return s&&ci(e),t}return s&&ci(e),!1};const xr=function(t){return!!t&&new Mesh(t)};H.Mesh=Mesh;const Spring=function(t=q){return this.makeName(t.name),this.register(),this.set(this.defs),this.set(t),this.action||(this.action=Z),this};let Cr=Spring.prototype=Object.create(Object.prototype);Cr.type="Spring",Cr.lib="spring",Cr.isArtefact=!1,Cr.isAsset=!1,Cr=me(Cr);Cr.defs=at(Cr.defs,{particleFrom:null,particleFromIsStatic:!1,particleTo:null,particleToIsStatic:!1,springConstant:50,damperConstant:10,restLength:1}),Cr.packetObjects=ht(Cr.packetObjects,["particleFrom","particleTo"]),Cr.kill=function(){return this.deregister(),!0};let wr=Cr.setters;wr.particleFrom=function(t){t.substring&&(t=b[t]),t&&"Particle"===t.type&&(this.particleFrom=t)},wr.particleTo=function(t){t.substring&&(t=b[t]),t&&"Particle"===t.type&&(this.particleTo=t)},Cr.applySpring=function(){let{particleFrom:t,particleTo:e,particleFromIsStatic:i,particleToIsStatic:s,springConstant:n,damperConstant:r,restLength:o}=this;if(t&&e){let{position:a,velocity:l,load:h}=t,{position:c,velocity:u,load:d}=e,f=is(u).vectorSubtract(l),p=is(c).vectorSubtract(a),m=is(p).normalize(),g=is(m);m.scalarMultiply(n*(p.getMagnitude()-o)),f.vectorMultiply(g).scalarMultiply(r).vectorMultiply(g);let y=is(m).vectorAdd(f);i||h.vectorAdd(y),s||d.vectorSubtract(y),ss(f)}};const Pr=function(t){return!!t&&new Spring(t)};H.Spring=Spring;const Net=function(t=q){return this.makeName(t.name),this.register(),this.initializePositions(),this.set(this.defs),this.onEnter=Z,this.onLeave=Z,this.onDown=Z,this.onUp=Z,this.generate=Z,this.postGenerate=Z,this.stampAction=Z,this.particleStore=[],this.springs=[],t.group||(t.group=ks),this.set(t),this.purge&&this.purgeArtefact(this.purge),this};let Dr=Net.prototype=Object.create(Object.prototype);Dr.type="Net",Dr.lib="entity",Dr.isArtefact=!0,Dr.isAsset=!1,Dr=me(Dr),Dr=tn(Dr);Dr.defs=at(Dr.defs,{world:null,artefact:null,historyLength:1,forces:null,mass:1,engine:"euler",springConstant:50,damperConstant:10,restLength:1,showSprings:!1,showSpringsColor:"#000000",rows:0,columns:0,rowDistance:0,columnDistance:0,shapeTemplate:null,precision:20,joinTemplateEnds:!1,particlesAreDraggable:!1,hitRadius:10,showHitRadius:!1,hitRadiusColor:"#000000",resetAfterBlur:3}),Dr.packetExclusions=ht(Dr.packetExclusions,["forces","springs","particleStore"]),Dr.packetExclusionsByRegex=ht(Dr.packetExclusionsByRegex,[]),Dr.packetCoordinates=ht(Dr.packetCoordinates,[]),Dr.packetObjects=ht(Dr.packetObjects,["world","artefact","shapeTemplate"]),Dr.packetFunctions=ht(Dr.packetFunctions,["generate","postGenerate","stampAction"]),Dr.finalizePacketOut=function(t,e){let i=e.forces||this.forces||!1;if(i){let e=[];i.forEach((t=>{t.substring?e.push(t):rt(t)&&t.name&&e.push(t.name)})),t.forces=e}let s=[];return this.particleStore.forEach((t=>s.push(t.saveAsPacket()))),t.particleStore=s,t},Dr.postCloneAction=function(t,e){return t},Dr.factoryKill=function(t,e){this.isRunning=!1,t&&(this.artefact.kill(),this.shapeTemplate&&this.shapeTemplate.kill()),e&&this.world.kill(),this.purgeParticlesFromLibrary()},Dr.purgeParticlesFromLibrary=function(){let{particleStore:t,springs:e}=this;a.forEach((t=>{let e=o[t];e&&(e.particle&&!e.particle.substring&&e.particle.name&&(e.particle=e.particle.name),"Polyline"===e.type&&e.useParticlesAsPins&&e.pins.forEach(((t,i)=>{rt(t)&&"Particle"===t.type&&(e.pins[i]=t.name,e.dirtyPins=!0)})))})),t.forEach((t=>t.kill())),t.length=0,e.forEach((t=>t.kill())),e.length=0},Dr.getters;let Rr=Dr.setters;Dr.deltaSetters,Rr.generate=function(t){st(t)?this.generate=t:t.substring&&Fr[t]&&(this.generate=Fr[t])},Rr.postGenerate=function(t){st(t)&&(this.postGenerate=t)},Rr.stampAction=function(t){st(t)&&(this.stampAction=t)},Rr.world=function(t){let e;t.substring?e=v[t]:rt(t)&&"World"===t.type&&(e=t),e&&(this.world=e)},Rr.artefact=function(t){let e;t.substring?e=o[t]:rt(t)&&t.isArtefact&&(e=t),e&&(this.artefact=e),this.dirtyFilterIdentifier=!0},Rr.shapeTemplate=function(t){let e;t.substring?e=f[t]:rt(t)&&t.isArtefact&&ut(t.species)&&(e=t),e&&(this.shapeTemplate=e),this.dirtyFilterIdentifier=!0},Dr.regularStamp=function(){let{world:t,artefact:e,particleStore:i,springs:s,generate:n,postGenerate:r,stampAction:o,lastUpdated:a,resetAfterBlur:l,showSprings:h,showSpringsColor:c,showHitRadius:u,hitRadius:d,hitRadiusColor:f}=this,p=1,m="source-over";this.state&&(p=this.state.globalAlpha,m=this.state.globalCompositeOperation);let g=this.currentHost,y=.016,b=Date.now();if(a&&(y=(b-a)/1e3),y>l&&(this.purgeParticlesFromLibrary(),y=.016),i.length||(n.call(this,g),r.call(this)),i.forEach((e=>e.applyForces(t,g))),s.forEach((t=>t.applySpring())),i.forEach((e=>e.update(y,t))),h){let t=g.engine;t.save(),t.globalAlpha=p,t.globalCompositeOperation=m,t.strokeStyle=c,t.shadowOffsetX=0,t.shadowOffsetY=0,t.shadowBlur=0,t.shadowColor="rgb(0 0 0 / 0)",t.lineWidth=1,t.setTransform(1,0,0,1,0,0),t.beginPath(),s.forEach((e=>{let{particleFrom:i,particleTo:s}=e;t.moveTo(i.position.x,i.position.y),t.lineTo(s.position.x,s.position.y)})),t.stroke(),t.restore()}if(i.forEach((t=>{t.manageHistory(y,g),o.call(this,e,t,g)})),u){let t=g.engine;t.save(),t.globalAlpha=p,t.globalCompositeOperation=m,t.lineWidth=1,t.strokeStyle=f,t.shadowOffsetX=0,t.shadowOffsetY=0,t.shadowBlur=0,t.shadowColor="rgb(0 0 0 / 0)",t.setTransform(1,0,0,1,0,0),t.beginPath(),i.forEach((e=>{t.moveTo(e.position.x,e.position.y),t.arc(e.position.x,e.position.y,d,0,2*Math.PI)})),t.stroke(),t.restore()}this.lastUpdated=b},Dr.restart=function(){return this.purgeParticlesFromLibrary(),this.lastUpdated=Date.now(),this},Dr.checkHit=function(t=[],e){if(this.lastHitParticle=null,!this.particlesAreDraggable)return!1;if(this.noUserInteraction)return!1;let i,s,n,r,o,a=Array.isArray(t)?t:[t],l=this.particleStore,h=!1;if(a.some((t=>{if(Array.isArray(t))i=t[0],s=t[1];else{if(!dt(t,t.x,t.y))return!1;i=t.x,s=t.y}if(!i.toFixed||!s.toFixed||isNaN(i)||isNaN(s))return!1;let e=is();for(n=0,r=l.length;n0&&h>0){let d,f,S,k,A,[O,v]=this.currentStampPosition,[x,C]=t.currentDimensions,w=c.substring?parseFloat(c)/100*C:c,P=u.substring?parseFloat(u)/100*C:u;for(k=0;k0&&h>0){let d,f,S,k,A,[O,v]=this.currentStampPosition,[x,C]=t.currentDimensions,w=c.substring?parseFloat(c)/100*C:c,P=u.substring?parseFloat(u)/100*C:u;for(k=0;k0;A--)R=b[`${p}-${A}-${k}`],F=b[`${p}-${A-1}-${k+1}`],D(R,F,`${p}-${A}-${k}~${p}-${A-1}-${k+1}`)}},"weak-shape":function(t){let{particleStore:e,artefact:i,historyLength:s,engine:n,forces:r,springs:o,mass:a,showSprings:l,showSpringsColor:h,name:c,springConstant:u,damperConstant:d,restLength:f,shapeTemplate:p,precision:m,joinTemplateEnds:g}=this;const y=function(t,e,i){let s,n,r;s=is(t.position).vectorSubtract(e.position),n=s.getMagnitude(),r=Pr({name:i,particleFrom:t,particleTo:e,springConstant:u,damperConstant:d,restLength:n*f}),o.push(r),ss(s)};let S,k,A,O;if(p&&m){for(S=0;S=0){for(S=0;S=0||t.type;let[x,C]=e.get("position");v=Yn({name:`${d}-hub`,positionX:x,positionY:C,positionZ:0,velocityX:0,velocityY:0,velocityZ:0,historyLength:r,engine:o,forces:a,mass:h,fill:n.get("fillStyle"),stroke:n.get("strokeStyle")}),v.run(0,0,!1),s.forEach(((t,e)=>y(t,v,`${d}-${e}-hub`))),s.push(v)}}},Er=function(t){return!!t&&new Net(t)};function Mr(t=q){t.defs=at(t.defs,{choke:15});const e=t.setters,i=t.deltaSetters;return e.paletteStart=function(t){this.gradient&&this.gradient.set({paletteStart:t})},i.paletteStart=function(t){this.gradient&&this.gradient.setDelta({paletteStart:t})},e.paletteEnd=function(t){this.gradient&&this.gradient.set({paletteEnd:t})},i.paletteEnd=function(t){this.gradient&&this.gradient.setDelta({paletteEnd:t})},e.colors=function(t){this.gradient&&this.gradient.set({colors:t})},e.precision=function(t){this.gradient&&this.gradient.set({precision:t})},e.easing=function(t){this.gradient&&this.gradient.set({easing:t})},e.easingFunction=e.easing,e.colorSpace=function(t){this.gradient&&this.gradient.set({colorSpace:t})},e.returnColorAs=function(t){this.gradient&&this.gradient.set({returnColorAs:t})},e.cyclePalette=function(t){this.gradient&&this.gradient.set({cyclePalette:t})},e.delta=function(t=q){this.gradient&&this.gradient.set({delta:t})},t.installElement=function(t){const e=document.createElement("canvas");e.id=t,this.element=e,this.engine=this.element.getContext("2d",{willReadFrequently:!0});const i=document.createElement("canvas");return i.id=`${t}-color`,i.width=256,i.height=1,this.colorElement=i,this.colorEngine=this.colorElement.getContext("2d",{willReadFrequently:!0}),this.gradient=qn({name:`${t}-gradient`,endX:"100%",delta:{paletteStart:0,paletteEnd:0},cyclePalette:!1}),this.gradientLastUpdated=0,this},t.checkSource=function(t,e){this.notifySubscribers()},t.getData=function(t,e){return this.notifySubscribers(),this.buildStyle(e)},t.update=function(){this.dirtyOutput=!0},t.notifySubscribers=function(){this.dirtyOutput&&this.cleanOutput(),this.subscribers.forEach((t=>this.notifySubscriber(t)),this)},t.notifySubscriber=function(t){t.sourceNaturalWidth=this.width,t.sourceNaturalHeight=this.height,t.sourceLoaded=!0,t.source=this.element,t.dirtyImage=!0,t.dirtyCopyStart=!0,t.dirtyCopyDimensions=!0,t.dirtyImageSubscribers=!0},t.paintCanvas=function(){if(this.checkOutputValuesExist()&&this.dirtyOutput){this.dirtyOutput=!1;const{element:t,engine:e,width:i,height:s,colorElement:n,colorEngine:r,gradient:o,choke:a,gradientLastUpdated:l}=this,h=o.palette;t.width=i,t.height=s;const c=e.getImageData(0,0,i,s),u=c.data,d=i*s;let f,p,m;const g=Date.now();l+a=0&&(this.worleyOutput=t,this.dirtyNoise=!0,this.dirtyOutput=!0)},Hr.cleanOutput=function(){this.dirtyNoise&&this.cleanNoise(),this.dirtyOutput&&this.paintCanvas()},Hr.cleanNoise=function(){if(this.dirtyNoise){this.dirtyNoise=!1;let{noiseEngine:t,seed:e,width:i,height:s,element:n,engine:r,octaves:o,lacunarity:a,persistence:l,scale:h,octaveFunction:c,sumFunction:u}=this;if(t&&t.init){this.rndEngine=si(e),this.generatePermutationTable(),t.init.call(this);let n,r,d,f,p,m,g,y,b=[];for(r=0;r=0)for(r=0;rm&&(k=1,A=0),b=h[g+k+l[y+A]],S+=i(p-k+n,m-A+n,b),.5+35*S}},value:{name:"value",init:function(){const{values:t,size:e,rndEngine:i}=this;t.length=0;for(let s=0;s1?i=1:i<0&&(i=0),i}},Hr.wXorshift=function(t){let e=t^t>>12;return e^=e<<25,e^=e>>27,2*e},Hr.wHash=function(t,e,i){return 16777619*(16777619*(16777619*(2166136261^t)^e)^i)&4294967295},Hr.worleyDistanceFunctions={"euclidian-distance":function(t,e){return function(t,e){return[t.x-e.x,t.y-e.y,t.z-e.z]}(t,e).reduce(((t,e)=>t+e*e),0)},"manhattan-distance":function(t,e){return function(t,e){return[t.x-e.x,t.y-e.y,t.z-e.z]}(t,e).reduce(((t,e)=>t+Math.abs(e)),0)}},Hr.wProbLookup=function(t){return(t&=4294967295)<393325350?1:t<1022645910?2:t<1861739990?3:t<2700834071?4:t<3372109335?5:t<3819626178?6:t<4075350088?7:t<4203212043?8:9},Hr.wInsert=function(t,e){let i;for(let s=t.length-1;s>=0&&!(e>t[s]);s--)i=t[s],t[s]=e,s+1t<0?0:t>1?1:t)))};const Br=function(t){return!!t&&new NoiseAsset(t)},Tr=Br;H.NoiseAsset=NoiseAsset;const Lr=function(t=q){if(!dt(t.event,t.origin,t.updates))return!1;let e=t.target.substring&&t.targetLibrarySection?I[t.targetLibrarySection][t.target]:t.target;if(!e)return!1;let i=t.event,s=t.origin,n=t.useNativeListener?Rt:xt,r=t.useNativeListener?Ft:Ct,o=Z;t.preventDefault&&(o=t=>{t.preventDefault(),t.returnValue=!1});let a=st(t.setup)?t.setup:Z,l=st(t.callback)?t.callback:Z,h=function(i){o(i);let s=!(!i||!i.target)&&i.target.id;if(s){let n=t.updates[s];if(n){a();let t,s=n[0],r=n[1],o=i.target.value,h=!0;switch(r){case"float":t=parseFloat(o);break;case"int":t=parseInt(o,10);break;case"round":t=Math.round(o);break;case"roundDown":t=Math.floor(o);break;case"roundUp":t=Math.ceil(o);break;case"raw":t=o;break;case"string":t=`${o}`;break;case"boolean":t=!!ut(o)&&(o.substring?"true"===o.toLowerCase()||"false"!==o.toLowerCase()&&!!parseFloat(o):!!o);break;default:r.substring?t=`${parseFloat(o)}${r}`:h=!1}h&&("Group"===e.type?e.setArtefacts({[s]:t}):e.set({[s]:t}),l())}}};return n(i,h,s),function(){r(i,h,s)}},$r=(t=q)=>Lr(t),Oval=function(t=q){return this.shapeInit(t),this};let jr=Oval.prototype=Object.create(Object.prototype);jr.type="Oval",jr.lib="entity",jr.isArtefact=!0,jr.isAsset=!1,jr=me(jr),jr=hn(jr);jr.defs=at(jr.defs,{radiusX:5,radiusY:5,intersectX:.5,intersectY:.5,offshootA:.55,offshootB:0});let Xr=jr.setters,Yr=jr.deltaSetters;Xr.radius=function(t){this.setRectHelper(t,["radiusX","radiusY"])},Xr.radiusX=function(t){this.setRectHelper(t,["radiusX"])},Xr.radiusY=function(t){this.setRectHelper(t,["radiusY"])},Yr.radius=function(t){this.deltaRectHelper(t,["radiusX","radiusY"])},Yr.radiusX=function(t){this.deltaRectHelper(t,["radiusX"])},Yr.radiusY=function(t){this.deltaRectHelper(t,["radiusY"])},Xr.offshootA=function(t){this.offshootA=t,this.updateDirty()},Xr.offshootB=function(t){this.offshootB=t,this.updateDirty()},Yr.offshootA=function(t){t.toFixed&&(this.offshootA+=t,this.updateDirty())},Yr.offshootB=function(t){t.toFixed&&(this.offshootB+=t,this.updateDirty())},Xr.intersectA=function(t){this.intersectA=t,this.updateDirty()},Xr.intersectB=function(t){this.intersectB=t,this.updateDirty()},Yr.intersectA=function(t){t.toFixed&&(this.intersectA+=t,this.updateDirty())},Yr.intersectB=function(t){t.toFixed&&(this.intersectB+=t,this.updateDirty())},jr.setRectHelper=function(t,e){this.updateDirty(),e.forEach((e=>{this[e]=t}),this)},jr.deltaRectHelper=function(t,e){this.updateDirty(),e.forEach((e=>{this[e]=addStrings(this[e],t)}),this)},jr.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeOvalPath(),this.pathDefinition=t},jr.makeOvalPath=function(){let t,e,i=parseFloat(this.offshootA.toFixed(6)),s=parseFloat(this.offshootB.toFixed(6)),n=this.radiusX,r=this.radiusY;if(n.substring||r.substring){let i=this.getHost();if(i){let[s,o]=i.currentDimensions;t=2*(n.substring?parseFloat(n)/100*s:n),e=2*(r.substring?parseFloat(r)/100*o:r)}}else t=2*n,e=2*r;let o=parseFloat((t*this.intersectX).toFixed(2)),a=parseFloat((t-o).toFixed(2)),l=parseFloat((e*this.intersectY).toFixed(2)),h=parseFloat((e-l).toFixed(2)),c="m0,0";return c+=`c${a*i},${l*s} ${a-a*s},${l-l*i}, ${a},${l} `,c+=`${-a*s},${h*i} ${a*i-a},${h-h*s} ${-a},${h} `,c+=`${-o*i},${-h*s} ${o*s-o},${h*i-h} ${-o},${-h} `,c+=`${o*s},${-l*i} ${o-o*i},${l*s-l} ${o},${-l}z`,c},jr.calculateLocalPathAdditionalActions=function(){let[t,e,i,s]=this.localBox;this.pathDefinition=this.pathDefinition.replace("m0,0",`m${-t},${-e}`),this.pathCalculatedOnce=!1,this.calculateLocalPath(this.pathDefinition,!0)};const Nr=function(t){return!!t&&(t.species="oval",new Oval(t))};H.Oval=Oval;const VideoAsset=function(t=q){return this.assetConstructor(t)};let Gr=VideoAsset.prototype=Object.create(Object.prototype);Gr.type="Video",Gr.lib="asset",Gr.isArtefact=!1,Gr.isAsset=!0,Gr=me(Gr),Gr=Oi(Gr),Gr.saveAsPacket=function(){return[this.name,this.type,this.lib,{}]},Gr.stringifyFunction=Z,Gr.processPacketOut=Z,Gr.finalizePacketOut=Z,Gr.clone=U,Gr.getters;let zr=Gr.setters;Gr.deltaSetters,zr.source=function(t){t&&("VIDEO"===t.tagName.toUpperCase()&&(this.source=t,this.sourceNaturalWidth=t.videoWidth||0,this.sourceNaturalHeight=t.videoHeight||0,this.sourceLoaded=t.readyState>2),this.sourceLoaded&&this.notifySubscribers())},Gr.checkSource=function(t,e){let i=this.source;i&&i.readyState>2?(this.sourceLoaded=!0,this.sourceNaturalWidth===i.videoWidth&&this.sourceNaturalHeight===i.videoHeight&&this.sourceNaturalWidth===t&&this.sourceNaturalHeight===e||(this.sourceNaturalWidth=i.videoWidth,this.sourceNaturalHeight=i.videoHeight,this.notifySubscribers())):this.sourceLoaded=!1},Gr.addTextTrack=function(t,e,i){let s=this.source;s&&s.addTextTrack&&s.addTextTrack(t,e,i)},Gr.captureStream=function(){let t=this.source;return!(!t||!t.captureStream)&&t.captureStream()},Gr.canPlayType=function(t){let e=this.source;return e?e.canPlayType(t):"maybe"},Gr.fastSeek=function(t){let e=this.source;e&&e.fastSeek&&e.fastSeek(t)},Gr.load=function(){let t=this.source;t&&t.load()},Gr.pause=function(){let t=this.source;t&&t.pause()},Gr.play=function(){let t=this.source;return t?t.play().catch((t=>console.log(t.code,t.name,t.message))):Promise.reject("Source not defined")},Gr.setMediaKeys=function(t){let e=this.source;return e?e.setMediaKeys?e.setMediaKeys(t):Promise.reject("setMediaKeys not supported"):Promise.reject("Source not defined")},Gr.setSinkId=function(){let t=this.source;return t?t.setSinkId?t.setSinkId():Promise.reject("setSinkId not supported"):Promise.reject("Source not defined")};const Wr=["video_audioTracks","video_autoPlay","video_buffered","video_controller","video_controls","video_controlsList","video_crossOrigin","video_currentSrc","video_currentTime","video_defaultMuted","video_defaultPlaybackRate","video_disableRemotePlayback","video_duration","video_ended","video_error","video_loop","video_mediaGroup","video_mediaKeys","video_muted","video_networkState","video_paused","video_playbackRate","video_readyState","video_seekable","video_seeking","video_sinkId","video_src","video_srcObject","video_textTracks","video_videoTracks","video_volume"],Vr=["video_autoPlay","video_controller","video_controls","video_crossOrigin","video_currentTime","video_defaultMuted","video_defaultPlaybackRate","video_disableRemotePlayback","video_loop","video_mediaGroup","video_muted","video_playbackRate","video_src","video_srcObject","video_volume"],Zr=function(t){let e=/.*\/(.*?)\./;document.querySelectorAll(t).forEach((t=>{let i;if("VIDEO"===t.tagName.toUpperCase()){if(t.id||t.name)i=t.id||t.name;else{let s=e.exec(t.src);i=s&&s[1]?s[1]:""}let s=Kr({name:i,source:t});t.readyState<=2&&(t.oncanplay=()=>{s.set({source:t})})}}))},_r=function(t=q){let e={};e.audio=!ut(t.audio)||t.audio,e.video={};let i=e.video.width={};t.minWidth&&(i.min=t.minWidth),t.maxWidth&&(i.max=t.maxWidth),i.ideal=t.width?t.width:1280;let s=e.video.height={};t.minHeight&&(s.min=t.minHeight),t.maxHeight&&(s.max=t.maxHeight),s.ideal=t.height?t.height:720,t.facing&&(e.video.facingMode=t.facing);let n=t.name||Q(),r=document.createElement("video"),o=Kr({name:n,source:r});return new Promise(((t,i)=>{navigator&&navigator.mediaDevices?navigator.mediaDevices.getUserMedia(e).then((e=>{let i,s=e.getVideoTracks();Array.isArray(s)&&s[0]&&(i=s[0].getConstraints()),r.id=o.name,i&&(r.width=i.width,r.height=i.height),r.srcObject=e,r.onloadedmetadata=function(t){r.play()},t(o)})).catch((e=>{console.log(e.message),t(o)})):i("Navigator.mediaDevices object not found")}))},Ur=function(...t){let e=/.*\/(.*?)\./,i="";if(t.length){let s,n,r,o,a,l,h=!1,c=t[0];if(c.substring){let i=e.exec(c);s=i&&i[1]?i[1]:"",a=[...t],n="",r=!1,o=null,l="auto",h=!0}else c&&c.src&&(s=c.name||"",a=[...c.src],n=c.className||"",r=c.visibility||!1,o=document.querySelector(o),l=c.preload||"auto",h=!0);let u=Kr({name:s});if(h){let t=document.createElement("video");t.name=s,t.className=n,t.style.display=r?"block":"none",t.crossOrigin="anonymous",t.preload=l,a.forEach((e=>{let i=document.createElement("source");i.src=e,t.appendChild(i)})),t.onload=()=>{u.set({source:t}),o&&o.appendChild(t)},u.set({source:t}),i=s}}return i},Kr=function(t){return!!t&&new VideoAsset(t)};H.VideoAsset=VideoAsset;const SpriteAsset=function(t=q){return this.assetConstructor(t),this};let qr=SpriteAsset.prototype=Object.create(Object.prototype);qr.type="Sprite",qr.lib="asset",qr.isArtefact=!1,qr.isAsset=!0,qr=me(qr),qr=Oi(qr);qr.defs=at(qr.defs,{manifest:null}),qr.saveAsPacket=function(){return[this.name,this.type,this.lib,{}]},qr.stringifyFunction=Z,qr.processPacketOut=Z,qr.finalizePacketOut=Z,qr.clone=U,qr.getters;let Qr=qr.setters;qr.deltaSetters,Qr.source=function(t=[]){if(t&&t[0]){this.sourceHold||(this.sourceHold={});let e=this.sourceHold;t.forEach((t=>{let i=t.id||t.name;i&&(e[i]=t)})),this.source=t[0],this.sourceNaturalWidth=t[0].naturalWidth,this.sourceNaturalHeight=t[0].naturalHeight,this.sourceLoaded=t[0].complete}},qr.checkSource=Z;const Jr=function(...t){let e=/.*\/(.*?)\./,i=/\.(jpeg|jpg|png|gif|webp|svg|JPEG|JPG|PNG|GIF|WEBP|SVG)/,s=[];return t.forEach((t=>{let n,r,o,a,l,h=!1,c=!1;if(t.substring){let s=e.exec(t);n=s&&s[1]?s[1]:"",r=[t],o="",a=!1,l=t.replace(i,".json"),c=!0}else rt(t)&&t.imageSrc&&t.manifestSrc?(n=t.name||"",r=Array.isArray(t.imageSrc)?t.imageSrc:[t.imageSrc],l=t.manifestSrc,o=t.className||"",a=t.visibility||!1,h=document.querySelector(t.parent),c=!0):s.push(!1);if(c){let t=to({name:n});rt(l)?t.manifest=l:fetch(l).then((t=>{if(200!==t.status)throw new Error("Failed to load manifest");return t.json()})).then((e=>t.manifest=e)).catch((t=>console.log(t.message)));let c=[];r.forEach((t=>{let s,r,l=document.createElement("img");i.test(t)&&(r=e.exec(t),s=r&&r[1]?r[1]:""),l.name=s||n,l.className=o,l.crossorigin="anonymous",l.style.display=a?"block":"none",h&&h.appendChild(l),l.src=t,c.push(l)})),t.set({source:c}),s.push(n)}else s.push(!1)})),s},to=function(t){return!!t&&new SpriteAsset(t)};function eo(t=q){t.defs=at(t.defs,{asset:null,removeAssetOnKill:!1,spriteIsRunning:!1,spriteLastFrameChange:0,spriteCurrentFrame:0,spriteTrack:"default",spriteForward:!0,spriteFrameDuration:100,spriteWillLoop:!0});const e=t.getters,i=t.setters;return e.sourceDimensions=function(){return[this.sourceNaturalWidth,this.sourceNaturalHeight]},i.asset=function(t){const e=this.asset,i=t&&t.name?t.name:t;e&&!e.substring&&e.unsubscribe(this),this.asset=i,this.dirtyAsset=!0},i.imageSource=function(t){const e=Di(t);if(e){const t=l[e[0]];if(t){const e=this.asset;e&&e.unsubscribe&&e.unsubscribe(this),t.subscribe(this)}}},i.videoSource=function(t){const e=Ur(t);if(e){const t=l[e];if(t){const e=this.asset;e&&e.unsubscribe&&e.unsubscribe(this),t.subscribe(this)}}},i.spriteSource=function(t){const e=Jr(t);if(e){const t=l[e];if(t){const e=this.asset;e&&e.unsubscribe&&e.unsubscribe(this),t.subscribe(this)}}},t.cleanAsset=function(){const t=this.asset;if(t&&t.substring){const e=l[t];e&&(this.dirtyAsset=!1,e.subscribe(this))}},t.videoAction=function(t,...e){const i=this.asset;if(i&&"Video"===i.type)return i[t](...e)},t.videoPromiseAction=function(t,...e){const i=this.asset;return i&&"Video"===i.type?i[t](...e):Promise.reject("Asset not a video")},t.videoAddTextTrack=function(t,e,i){return this.videoAction("addTextTrack",t,e,i)},t.videoCaptureStream=function(){return this.videoAction("captureStream")},t.videoCanPlayType=function(t){return this.videoAction("canPlayType",t)},t.videoFastSeek=function(t){return this.videoAction("fastSeek",t)},t.videoLoad=function(){return this.videoAction("load")},t.videoPause=function(){return this.videoAction("pause")},t.videoPlay=function(){return this.videoPromiseAction("play")},t.videoSetMediaKeys=function(t){return this.videoPromiseAction("setMediaKeys",t)},t.videoSetSinkId=function(){return this.videoPromiseAction("setSinkId")},t.checkSpriteFrame=function(){const t=this.asset;if(t&&"Sprite"===t.type&&t.manifest){const e=this.copyArray;if(this.spriteIsRunning){const i=this.spriteLastFrameChange,s=this.spriteFrameDuration,n=Date.now();if(n>i+s){const i=t.manifest;if(i){const s=i[this.spriteTrack],r=s.length,o=this.spriteWillLoop;let a=this.spriteCurrentFrame;a=this.spriteForward?a+1:a-1,a<0&&(a=o?r-1:0),a>=r&&(a=o?0:r-1);const[l,h,c,u,d]=s[a];e.length=0,e.push(h,c,u,d),this.dirtyCopyStart=!1,this.dirtyCopyDimensions=!1;if(l!==(this.source.id||this.source.name)){const e=t.sourceHold[l];e&&(this.source=e)}this.spriteCurrentFrame=a,this.spriteLastFrameChange=n}}}else{const[i,s,n,r,o]=t.manifest[this.spriteTrack][this.spriteCurrentFrame],[a,l,h,c]=e;a===s&&l===n&&h===r&&c===o||(e.length=0,e.push(s,n,r,o),this.dirtyCopyStart=!1,this.dirtyCopyDimensions=!1)}}},t.playSprite=function(t,e,i,s,n){ut(t)&&(this.spriteFrameDuration=t),ut(e)&&(this.spriteWillLoop=e),ut(i)&&(this.spriteTrack=i),ut(s)&&(this.spriteForward=s),ut(n)&&(this.spriteCurrentFrame=n),this.spriteLastFrameChange=Date.now(),this.spriteIsRunning=!0},t.haltSprite=function(t,e,i,s,n){ut(t)&&(this.spriteFrameDuration=t),ut(e)&&(this.spriteWillLoop=e),ut(i)&&(this.spriteTrack=i),ut(s)&&(this.spriteForward=s),ut(n)&&(this.spriteCurrentFrame=n),this.spriteIsRunning=!1},t}H.SpriteAsset=SpriteAsset;const Pattern=function(t=q){return this.makeName(t.name),this.register(),this.set(this.defs),this.set(t),this};let io=Pattern.prototype=Object.create(Object.prototype);io.type="Pattern",io.lib="styles",io.isArtefact=!1,io.isAsset=!1,io=me(io),io=_i(io),io=eo(io);io.defs=at(io.defs,{}),io.packetObjects=ht(io.packetObjects,["asset"]),io.finalizePacketOut=function(t,e){if(Array.isArray(e.patternMatrix))t.patternMatrix=e.patternMatrix;else{let e=this.patternMatrix;e&&(t.patternMatrix=[e.a,e.b,e.c,e.d,e.e,e.f])}return t},io.kill=function(){let{name:t,asset:e,removeAssetOnKill:i}=this;return rt(e)&&e.unsubscribe(this),Object.entries(f).forEach((([e,i])=>{let s=i.state;if(s){let e=s.fillStyle,i=s.strokeStyle;rt(e)&&e.name===t&&(s.fillStyle=s.defs.fillStyle),rt(i)&&i.name===t&&(s.strokeStyle=s.defs.strokeStyle)}})),i&&(i.substring?e.kill(!0):e.kill()),this.deregister(),this},io.get=function(t){let e=this.source;if(0!==t.indexOf("video_")&&0!==t.indexOf("image_")||!e){let e=this.getters[t];if(e)return e.call(this);{let e,i=this.defs[t];return void 0!==i?(e=this[t],void 0!==e?e:i):undef}}return Wr.indexOf(t)>=0||wi.indexOf(t)>=0?e[t.substring(6)]:void 0},io.set=function(t=q){const e=Object.keys(t),i=e.length;if(i){const s=this.setters,n=this.source,r=this.defs;let o,a,l,h;for(a=0;a=0||Pi.indexOf(l)>=0)&&(n[l.substring(6)]=h);this.dirtyFilterIdentifier=!0}return this},io.getData=function(t,e){return this.dirtyAsset&&this.cleanAsset(),this.asset.checkSource(this.sourceNaturalWidth,this.sourceNaturalHeight),this.buildStyle(e)};const so=function(t){return!!t&&new Pattern(t)};H.Pattern=Pattern;const FontAttributes=function(t=q){return this.makeName(t.name),this.set(this.defs),this.set(t),this};let no=FontAttributes.prototype=Object.create(Object.prototype);no.type="FontAttributes",no.lib="fontattribute",no=me(no);no.defs=at(no.defs,{style:"normal",variant:"normal",weight:"normal",stretch:"normal",sizeValue:12,sizeMetric:"px",family:"sans-serif"});let ro=no.getters,oo=no.setters;no.deltaSetters,ro.size=function(){return this.sizeValue?`${this.sizeValue}${this.sizeMetric}`:this.sizeMetric},oo.size=function(t){if(ut(t)){let e,i,s,n=0,r="medium";t.indexOf("xx-small")>=0?r="xx-small":t.indexOf("x-small")>=0?r="x-small":t.indexOf("smaller")>=0?r="smaller":t.indexOf("small")>=0?r="small":t.indexOf("medium")>=0?r="medium":t.indexOf("xxx-large")>=0?r="xxx-large":t.indexOf("xx-large")>=0?r="xx-large":t.indexOf("x-large")>=0?r="x-large":t.indexOf("larger")>=0?r="larger":t.indexOf("large")>=0?r="large":(n=12,r="px");let o=t.match(/(\d+\.\d+|\d+|\.\d+)(rem|em|rlh|lh|ex|cap|ch|ic|%|vw|vh|vmax|vmin|vi|vb|in|cm|mm|Q|pc|pt|px)?/i);Array.isArray(o)?([e,i,s]=o,i&&s&&"."!=i&&(n=i,r=s)):(o=t.match(/\/(\d+\.\d+|\d+|\.\d+)(rem|em|rlh|lh|ex|cap|ch|ic|%|vw|vh|vmax|vmin|vi|vb|in|cm|mm|Q|pc|pt|px)?/i),Array.isArray(o)&&([e,i,s]=o,i&&s&&"."!=i&&(n=i,r=s))),n!==this.sizeValue&&(this.sizeValue=n,this.dirtyFont=!0),r!==this.sizeMetric&&(this.sizeMetric=r,this.dirtyFont=!0)}},oo.sizeValue=function(t){ut(t)&&t!==this.sizeValue&&(this.sizeValue=t,this.dirtyFont=!0)},oo.sizeMetric=function(t){ut(t)&&t!==this.sizeMetric&&(this.sizeMetric=t,this.dirtyFont=!0)},oo.font=function(t){ut(t)&&(oo.style.call(this,t),oo.variant.call(this,t),oo.weight.call(this,t),oo.stretch.call(this,t),oo.size.call(this,t),oo.family.call(this,t))},oo.style=function(t){if(ut(t)){let e="normal";e=t.indexOf("italic")>=0?"italic":e,e=t.indexOf("oblique")>=0?"oblique":e,e!==this.style&&(this.style=e,this.dirtyFont=!0)}},oo.variant=function(t){if(ut(t)){let e="normal";e=t.indexOf("small-caps")>=0?"small-caps":e,e!==this.variant&&(this.variant=e,this.dirtyFont=!0)}},oo.weight=function(t){if(ut(t)){let e="normal";t.toFixed?e=t:(e=t.indexOf("bold")>=0?"bold":e,e=t.indexOf("lighter")>=0?"lighter":e,e=t.indexOf("bolder")>=0?"bolder":e,e=t.indexOf(" 100 ")>=0?"100":e,e=t.indexOf(" 200 ")>=0?"200":e,e=t.indexOf(" 300 ")>=0?"300":e,e=t.indexOf(" 400 ")>=0?"400":e,e=t.indexOf(" 500 ")>=0?"500":e,e=t.indexOf(" 600 ")>=0?"600":e,e=t.indexOf(" 700 ")>=0?"700":e,e=t.indexOf(" 800 ")>=0?"800":e,e=t.indexOf(" 900 ")>=0?"900":e,e=/^\d00$/.test(t)?t:e),e!==this.weight&&(this.weight=e,this.dirtyFont=!0)}},oo.stretch=function(t){if(ut(t)){let e="normal";e=t.indexOf("semi-condensed")>=0?"semi-condensed":e,e=t.indexOf("condensed")>=0?"condensed":e,e=t.indexOf("extra-condensed")>=0?"extra-condensed":e,e=t.indexOf("ultra-condensed")>=0?"ultra-condensed":e,e=t.indexOf("semi-expanded")>=0?"semi-expanded":e,e=t.indexOf("expanded")>=0?"expanded":e,e=t.indexOf("extra-expanded")>=0?"extra-expanded":e,e=t.indexOf("ultra-expanded")>=0?"ultra-expanded":e,e!==this.stretch&&(this.stretch=e,this.dirtyFont=!0)}},no.rfsTestArray1=["italic","oblique","small-caps","normal","bold","lighter","bolder","ultra-condensed","extra-condensed","semi-condensed","condensed","ultra-expanded","extra-expanded","semi-expanded","expanded","xx-small","x-small","small","medium","xxx-large","xx-large","x-large","large"],no.rfsTestArray2=["0","1","2","3","4","5","6","7","8","9"],oo.family=function(t){if(ut(t)){let e="sans-serif",i=t.split(" "),s=i.length;1===s&&(e=t);let n=0,r=!0;for(;r;)if(n===s)r=!1;else{let t=i[n];t.length?this.rfsTestArray1.indexOf(t)>=0||this.rfsTestArray2.indexOf(t[0])>=0?n++:r=!1:n++}n0&&t!==this.scale&&(this.scale=t,this.dirtyFont=!0),e&&e.toFixed&&e>0&&e!==this.lineHeight&&(this.lineHeight=e,this.dirtyFont=!0);let s=this.host&&this.host.type&&"Cell"===this.host.type?this.host.name:"";i&&i.type&&"Cell"===i.type&&i.name!==s&&(this.host=i,this.dirtyFont=!0)},no.calculateSize=function(){if(this.host){let t,e,i,s,{scale:n,lineHeight:r,host:o,sizeValue:a,sizeMetric:l}=this;if(o.getComputedFontSizes())[t,e,i,s]=o.getComputedFontSizes();else if(["in","cm","mm","Q","pc","pt","px"].indexOf(l)<0)return this.dirtyFont=!0,"12px";isNaN(a)&&(a=12);let h=t;switch(l){case"rem":h=e*a;break;case"em":case"cap":case"ch":case"ic":h=t*a;break;case"rlh":h=e*r*a;break;case"lh":h=t*r*a;break;case"ex":h=t/2*a;break;case"%":h=t/100*a;break;case"vw":case"vi":h=i/100*a;break;case"vh":case"vb":h=s/100*a;break;case"vmax":h=Math.max(i,s)/100*a;break;case"vmin":h=Math.min(i,s)/100*a;break;case"in":h=96*a;break;case"cm":h=37.8*a;break;case"mm":h=3.78*a;break;case"Q":h=.95*a;break;case"pc":h=16*a;break;case"pt":h=1.33*a;break;case"px":h=a;break;case"xx-small":h=.6*t;break;case"x-small":h=.75*t;break;case"smaller":h=.8*t;break;case"small":h=.89*t;break;case"xxx-large":h=3*t;break;case"xx-large":h=2*t;break;case"x-large":h=1.5*t;break;case"larger":h=1.3*t;break;case"large":h=1.2*t}return h*n+"px"}return"12px"},no.buildFont=function(){this.dirtyFont=!1;let t="";"normal"!==this.style&&(t+=`${this.style} `),"normal"!==this.variant&&(t+=`${this.variant} `),"normal"!==this.weight&&(t+=`${this.weight} `),"normal"!==this.stretch&&(t+=`${this.stretch} `),t+=`${this.calculateSize()} `,t+=`${this.family}`;let e=hi();return e.engine.font=t,t=e.engine.font,ci(e),this.temperedFontString=t,t},no.update=function(t){return t&&this.set(t),this.getFontString()};H.FontAttributes=FontAttributes;const ao=document.createElement("div");ao.style.padding=0,ao.style.border=0,ao.style.margin=0,ao.style.height="auto",ao.style.lineHeight=1,ao.style.boxSizing="border-box",ao.innerHTML="|/}ÁÅþ§¶¿∑ƒ⌈⌊qwertyd0123456789QWERTY",ao.setAttribute("aria-hidden","true"),zt.appendChild(ao);const lo=document.createElement("textarea"),ho=(t,e)=>(t=parseFloat(t),nt(t)||(t=0),nt(e)||(e=0),parseFloat(t.toFixed(e))),co=(t,e)=>(t=parseFloat(t),nt(t)||(t=0),nt(e)||(e=0),Math.abs(parseFloat(t.toFixed(e)))),Phrase=function(t=q){return this.fontAttributes=function(t){return!!t&&new FontAttributes(t)}(q),this.entityInit(t),this.dirtyDimensions=!0,this.dirtyText=!0,this.dirtyFont=!0,this.dirtyPathObject=!0,this};let uo=Phrase.prototype=Object.create(Object.prototype);uo.type="Phrase",uo.lib="entity",uo.isArtefact=!0,uo.isAsset=!1,uo=me(uo),uo=tn(uo),uo.midInitActions=function(t){this.sectionStyles=[],this.sectionClasses=M};uo.defs=at(uo.defs,{text:"",width:"auto",exposeText:!0,lineHeight:1.15,letterSpacing:0,justify:"left",sectionClassMarker:"[§<>]",sectionClasses:null,overlinePosition:-.1,overlineStyle:"rgb(250 0 0)",overlineWidth:1,noOverlineGlyphs:"",underlinePosition:.6,underlineStyle:"rgb(250 0 0)",underlineWidth:1,noUnderlineGlyphs:"",highlightStyle:"rgb(250 218 94 / 0.4)",boundingBoxColor:"rgb(0 0 0 / 0.5)",showBoundingBox:!1,textPath:"",textPathPosition:0,textPathLoop:!0,addTextPathRoll:!0,textPathDirection:"ltr",treatWordAsGlyph:!1}),uo.packetExclusions=ht(uo.packetExclusions,["textPositions","textLines","textLineWidths","textLineWords","textGlyphs","textGlyphWidths","fontAttributes"]),uo.finalizePacketOut=function(t,e){let i=JSON.parse(this.state.saveAsPacket(e))[3];t=at(t,i);let s=JSON.parse(this.fontAttributes.saveAsPacket(e))[3];return delete s.name,t=at(t,s),t=this.handlePacketAnchor(t,e)},uo.factoryKill=function(){this.exposedTextHold&&this.exposedTextHold.remove()};let fo=uo.getters,po=uo.setters,mo=uo.deltaSetters;po.handleX=function(t){null!=t&&(this.handle[0]=t,this.dirtyHandle=!0,this.dirtyText=!0,this.dirtyPathObject=!0)},po.handleY=function(t){null!=t&&(this.handle[1]=t,this.dirtyHandle=!0,this.dirtyText=!0,this.dirtyPathObject=!0)},po.handle=function(t,e){this.setCoordinateHelper("handle",t,e),this.dirtyHandle=!0,this.dirtyText=!0,this.dirtyPathObject=!0},mo.handleX=function(t){let e=this.handle;e[0]=addStrings(e[0],t),this.dirtyHandle=!0,this.dirtyText=!0,this.dirtyPathObject=!0},mo.handleY=function(t){let e=this.handle;e[1]=addStrings(e[1],t),this.dirtyHandle=!0,this.dirtyText=!0,this.dirtyPathObject=!0},mo.handle=function(t,e){this.setDeltaCoordinateHelper("handle",t,e),this.dirtyHandle=!0,this.dirtyText=!0,this.dirtyPathObject=!0},fo.text=function(){return this.currentText||this.text||""},po.text=function(t){var e;this.text=(e=t).substring?e:e.toString,this.dirtyText=!0,this.dirtyPathObject=!0,this.dirtyDimensions=!0,this.dirtyFilterIdentifier=!0},uo.permittedJustifications=["left","right","center","full"],po.justify=function(t){this.permittedJustifications.indexOf(t)>=0&&(this.justify=t),this.dirtyText=!0,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},po.width=function(t){this.dimensions[0]=t,this.dirtyDimensions=!0,this.dirtyHandle=!0,this.dirtyPathObject=!0,this.dirtyText=!0},mo.width=function(t){let e=this.dimensions;e[0]=addStrings(e[0],t),this.dirtyDimensions=!0,this.dirtyHandle=!0,this.dirtyPathObject=!0,this.dirtyText=!0},po.scale=function(t){this.scale=t,this.dirtyDimensions=!0,this.dirtyHandle=!0,this.dirtyFont=!0,this.dirtyPathObject=!0,this.dirtyScale=!0},mo.scale=function(t){this.scale+=t,this.dirtyDimensions=!0,this.dirtyHandle=!0,this.dirtyFont=!0,this.dirtyPathObject=!0,this.dirtyScale=!0},po.lineHeight=function(t){this.lineHeight=co(t,3),this.lineHeight<.5&&(this.lineHeight=.5),this.dirtyPathObject=!0,this.dirtyText=!0,this.dirtyFilterIdentifier=!0},mo.lineHeight=function(t){this.lineHeight+=ho(t,3),this.lineHeight<.5&&(this.lineHeight=.5),this.dirtyPathObject=!0,this.dirtyText=!0,this.dirtyFilterIdentifier=!0},po.letterSpacing=function(t){this.letterSpacing=co(t,3),this.dirtyPathObject=!0,this.dirtyText=!0,this.dirtyFilterIdentifier=!0},mo.letterSpacing=function(t){this.letterSpacing+=ho(t,3),this.letterSpacing<0&&(this.letterSpacing=0),this.dirtyPathObject=!0,this.dirtyText=!0,this.dirtyFilterIdentifier=!0},po.overlinePosition=function(t){this.overlinePosition=ho(t,3),this.dirtyPathObject=!0,this.dirtyText=!0,this.dirtyFilterIdentifier=!0},mo.overlinePosition=function(t){this.overlinePosition+=ho(t,3),this.dirtyPathObject=!0,this.dirtyText=!0,this.dirtyFilterIdentifier=!0},po.noOverlineGlyphs=function(t){t.substring&&(this.noOverlineGlyphs=t)},po.underlinePosition=function(t){this.underlinePosition=ho(t,3),this.dirtyPathObject=!0,this.dirtyText=!0,this.dirtyFilterIdentifier=!0},mo.underlinePosition=function(t){this.underlinePosition+=ho(t,3),this.dirtyPathObject=!0,this.dirtyText=!0,this.dirtyFilterIdentifier=!0},po.noUnderlineGlyphs=function(t){t.substring&&(this.noUnderlineGlyphs=t)},po.textPath=function(t){this.textPath=t,this.dirtyHandle=!0,this.dirtyText=!0,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},po.textPathPosition=function(t){this.textPathLoop?(t<0&&(t=Math.abs(t)),t>1&&(t%=1),this.textPathPosition=parseFloat(t.toFixed(6))):this.textPathPosition=t,this.dirtyFilterIdentifier=!0},mo.textPathPosition=function(t){let e=this.textPathPosition+t;this.textPathLoop?(e<0&&(e+=1),e>1&&(e%=1),this.textPathPosition=parseFloat(e.toFixed(6))):this.textPathPosition=e,this.dirtyFilterIdentifier=!0},fo.font=function(){return this.fontAttributes.getFontString()},po.font=function(t){this.fontAttributes.set({font:t}),this.dirtyFont=!0,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},fo.style=function(){return this.fontAttributes.get("style")},po.style=function(t){this.fontAttributes.set({style:t}),this.dirtyFont=!0,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},fo.variant=function(){return this.fontAttributes.get("variant")},po.variant=function(t){this.fontAttributes.set({variant:t}),this.dirtyFont=!0,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},fo.weight=function(){return this.fontAttributes.get("weight")},po.weight=function(t){this.fontAttributes.set({weight:t}),this.dirtyFont=!0,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},fo.stretch=function(){return this.fontAttributes.get("stretch")},po.stretch=function(t){this.fontAttributes.set({stretch:t}),this.dirtyFont=!0,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},fo.size=function(){return this.fontAttributes.get("size")},po.size=function(t){this.fontAttributes.set({size:t}),this.dirtyFont=!0,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},fo.sizeValue=function(){return this.fontAttributes.get("sizeValue")},po.sizeValue=function(t){this.fontAttributes.set({sizeValue:t}),this.dirtyFont=!0,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},mo.sizeValue=function(t){this.fontAttributes.deltaSet({sizeValue:t}),this.dirtyFont=!0,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},fo.sizeMetric=function(){return this.fontAttributes.get("sizeMetric")},po.sizeMetric=function(t){this.fontAttributes.set({sizeMetric:t}),this.dirtyFont=!0,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},fo.family=function(){return this.fontAttributes.get("family")},po.family=function(t){this.fontAttributes.set({family:t}),this.dirtyFont=!0,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},uo.cleanDimensionsAdditionalActions=function(){if(this.fontAttributes.dirtyFont=!0,this.fontAttributes.updateMetadata(this.scale,this.lineHeight,this.getHost()),"auto"===this.dimensions[0]){this.buildText();let t=hi(),e=t.engine;e.font=this.fontAttributes.getFontString(),this.currentDimensions[0]=Math.ceil(e.measureText(this.currentText).width/this.scale),ci(t)}this.textLines?this.currentDimensions[1]=Math.ceil(this.textHeight*this.textLines.length*this.lineHeight/this.scale):this.dirtyDimensions=!0},uo.setSectionStyles=function(t){let e,i,s,n=new RegExp(this.sectionClassMarker),r=t.split(n),o=this.sectionStyles,a=this.sectionClasses,l="";return o.length=0,r.forEach((t=>{e=a[t],e?(i=l.length,s=o[i],s?Object.assign(s,e):o[i]=Object.assign({},e)):ut(t)&&(l+=t)})),l},uo.addSectionClass=function(t,e){return dt(t,e)&&t.substring&&rt(e)&&(this.sectionClasses[t]=e),this.dirtyText=!0,this.dirtyPathObject=!0,this},uo.removeSectionClass=function(t){return delete this.sectionClasses[t],this.dirtyText=!0,this.dirtyPathObject=!0,this},uo.getTextPath=function(){let t=this.textPath;return t&&t.substring&&(t=this.textPath=o[this.textPath],"Shape"===t.type&&t.useAsPath?t.pathed.push(this.name):t=this.path=!1),t},uo.cleanPathObject=function(){if(this.dirtyPathObject=!1,!this.noPathUpdates||!this.pathObject){this.dirtyFont&&this.fontAttributes&&(this.dirtyFont=!1,this.dirtyText=!0,this.dirtyMimicDimensions=!0,this.dirtyPositionSubscribers=!0),this.dirtyText&&this.buildText(),this.dirtyHandle&&this.cleanHandle();let t=this.pathObject=new Path2D,e=this.currentHandle,i=this.currentDimensions,s=this.currentScale,n=-e[0]*s,r=-e[1]*s,o=i[0]*s,a=i[1]*s;this.boxStartValues=[n,r],t.rect(n,r,o,a)}},uo.buildText=function(){this.dirtyText=!1;let t=this.convertTextEntityCharacters(this.text);if(t=this.setSectionStyles(t),this.currentText=t,isNaN(this.currentDimensions[0]))this.dirtyText=!0;else if(this.calculateTextPositions(t),this.exposeText){if(!this.exposedTextHold){let t=document.createElement("div");t.id=`${this.name}-text-hold`,t.setAttribute("aria-live","polite"),this.exposedTextHold=t,this.exposedTextHoldAttached=!1}if(this.exposedTextHold.textContent=t,!this.exposedTextHoldAttached&&this.currentHost){let t=this.getCanvasTextHold(this.currentHost);t&&t.textHold&&(t.textHold.appendChild(this.exposedTextHold),this.exposedTextHoldAttached=!0)}}},uo.getCanvasTextHold=function(t){return t&&"Cell"===t.type&&t.controller&&"Canvas"===t.controller.type&&t.controller.textHold?t.controller:!(!t||"Cell"!==t.type||!t.currentHost)&&this.getCanvasTextHold(t.currentHost)},uo.convertTextEntityCharacters=function(t){let e=t.trim();return e=e.replace(/[\s\uFEFF\xA0]+/g," "),lo.innerHTML=e,lo.value},uo.calculateTextPositions=function(t){const e=function(t){if(!H)return M.dirtyPathObject=!0,M.dirtyText=!0,"black";if(t.substring){let e=!1;if(R.indexOf(t)>=0?e=D[t]:d.indexOf(t)>=0&&(e=u[t]),e)return e}return t};let i,s,n,r,o,a,l,h,c,f,p,m,g,y,b,S,k,A,O,v,x,C,w,P,F=hi(),E=F.engine,M=this,H=!(!this.group||!this.group.getHost)&&this.group.getHost(),I=[],B=[],T=[],L=[],$=[],j=[],X=[],Y=this.getTextPath(),N=this.fontAttributes,G=N.clone({}),z=this.sectionStyles,W=this.state,V={},Z=[],_=this.currentScale,U=this.currentDimensions,K=U[0]*_,q=this.treatWordAsGlyph,Q=this.lineHeight,J=this.justify;N.updateMetadata(_,Q,H),G.updateMetadata(_,Q,H);let tt=N.getFontString(),et=e(W.fillStyle),it=e(W.strokeStyle),st=this.letterSpacing*_,nt=tt,rt=et,ot=it,at=st;this.highlightStyle&&e(this.highlightStyle);let lt=!1;this.underlineStyle&&e(this.underlineStyle),this.underlinePosition;let ht=!1;this.overlineStyle&&e(this.overlineStyle),this.overlinePosition;let ct=!1,dt=0;for(i=q?t.split(" "):t.split(""),Z.push(nt),f=0,p=i.length;f{E.font=t;let e=E.measureText("|/}ÁÅþ§¶¿∑ƒ⌈⌊qwertyd0123456789QWERTY");null!=e.actualBoundingBoxAscent&&null!=e.actualBoundingBoxDescent?V[t]=Math.ceil(e.actualBoundingBoxAscent+e.actualBoundingBoxDescent):(ao.style.font=t,r=ao.clientHeight,V[t]=r)})),E.restore(),dt=Math.max(...Object.values(V)),x=v=o=a=0,f=0,p=$.length;fk&&!n[0]&&(j[f]-=b-k));for(f=0,p=$.length;f=K&&ot+e),0),T.push(b),v-=b,o=a+1),f+1===p&&(v===x?(y=t,B.push(y),L.push(q?y.split(" ").length-1:y.split(" ").length),T.push(x)):(y=i.slice(o).join(""),B.push(y),b=q?y.split(" ").length-1:y.split(" ").length,L.push(b),b=I.slice(o).reduce(((t,e)=>t+e),0),T.push(b))),ut(S[3])&&(lt=S[3]),ut(S[4])&&(ht=S[4]),ut(S[5])&&(ct=S[5]),S[3]=lt,S[4]=ht,S[5]=ct;if(_<=0&&(_=1),U[1]=Math.ceil(dt*B.length*Q/_),this.cleanHandle(),this.dirtyHandle=!1,C=this.currentHandle,w=-C[0]*_,P=-C[1]*_,!Y)if("full"===J)for(l=0,h=P,f=0,p=T.length;f1?(K-T[f])/(L[f]-1):0,m=0,g=B[f].length;m1||n<0)&&(n=n>.5?n-1:n+1),t[10]=n<=1&&n>=0&&r.getPathPositionData(n,f),t[9]=s,h?c+=s/o:c-=s/o,d&&(c>1||c<0)&&(c=c>.5?c-1:c+1)}},uo.preStamper=function(t,e,i,s){const n=function(e){return e.getData?e.getData(i,t):e};let[r,o,a,l,h,c,...u]=s;if(r&&(e.font=r),l||h||c){let{highlightStyle:t,textHeight:s,underlineStyle:r,underlineWidth:o,underlinePosition:a,noUnderlineGlyphs:d,overlineStyle:f,overlineWidth:p,overlinePosition:m,noOverlineGlyphs:g}=i;e.save(),l&&(e.fillStyle=n(t),e.fillRect(u[1],u[2],u[3],s)),h&&d.indexOf(u[0])<0&&(e.fillStyle=n(r),e.fillRect(u[1],u[2]+s*a,u[3],o)),c&&(e.fillStyle=n(f),e.fillRect(u[1],u[2]+s*m,u[3],p)),e.restore()}return o&&(e.strokeStyle=n(o)),a&&(e.fillStyle=n(a)),u},uo.stamper={draw:function(t,e,i){t.strokeText(...i)},fill:function(t,e,i){t.fillText(...i)},drawAndFill:function(t,e,i){t.strokeText(...i),t.fillText(...i),e.currentHost.clearShadow(),t.strokeText(...i),t.fillText(...i),e.currentHost.restoreShadow(e)},fillAndDraw:function(t,e,i){t.fillText(...i),t.strokeText(...i),e.currentHost.clearShadow(),t.fillText(...i),t.strokeText(...i),e.currentHost.restoreShadow(e)},drawThenFill:function(t,e,i){t.strokeText(...i),t.fillText(...i)},fillThenDraw:function(t,e,i){t.fillText(...i),t.strokeText(...i)},clear:function(t,e,i){let s=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",t.fillText(...i),t.globalCompositeOperation=s}},uo.drawBoundingBox=function(t){t.save(),t.strokeStyle=this.boundingBoxColor,t.lineWidth=1,t.globalCompositeOperation="source-over",t.globalAlpha=1,t.shadowOffsetX=0,t.shadowOffsetY=0,t.shadowBlur=0,t.stroke(this.pathObject),t.restore()},uo.performRotation=function(t){let e=this.currentHost;if(e){let[i,s]=this.currentStampPosition;e.rotateDestination(t,i,s,this)}};const go=function(t){return!!t&&new Phrase(t)};H.Phrase=Phrase;const Picture=function(t=q){return this.copyStart=mi(),this.currentCopyStart=mi(),this.copyDimensions=mi(),this.currentCopyDimensions=mi(),this.copyArray=[],this.pasteArray=[],this.entityInit(t),t.copyStart||(t.copyStartX||(this.copyStart[0]=0),t.copyStartY||(this.copyStart[1]=0)),t.copyDimensions||(t.copyWidth||(this.copyDimensions[0]=1),t.copyHeight||(this.copyDimensions[1]=1)),this.imageSubscribers=[],this.dirtyCopyStart=!0,this.dirtyCopyDimensions=!0,this.dirtyImage=!0,this};let yo=Picture.prototype=Object.create(Object.prototype);yo.type="Picture",yo.lib="entity",yo.isArtefact=!0,yo.isAsset=!1,yo=me(yo),yo=tn(yo),yo=eo(yo);yo.defs=at(yo.defs,{copyStart:null,copyDimensions:null,checkHitIgnoreTransparency:!1}),yo.packetCoordinates=ht(yo.packetCoordinates,["copyStart","copyDimensions"]),yo.packetObjects=ht(yo.packetObjects,["asset"]),yo.factoryKill=function(t=!1){let{asset:e,removeAssetOnKill:i}=this;rt(e)&&(e.unsubscribe(this),i&&e.kill(!0))};let bo=yo.getters,So=yo.setters,ko=yo.deltaSetters;bo.copyStart=function(){return[].concat(this.currentCopyStart)},bo.copyStartX=function(){return this.currentCopyStart[0]},bo.copyStartY=function(){return this.currentCopyStart[1]},So.copyStartX=function(t){null!=t&&(this.copyStart[0]=t,this.dirtyCopyStart=!0,this.dirtyImageSubscribers=!0,this.dirtyFilterIdentifier=!0)},So.copyStartY=function(t){null!=t&&(this.copyStart[1]=t,this.dirtyCopyStart=!0,this.dirtyImageSubscribers=!0,this.dirtyFilterIdentifier=!0)},So.copyStart=function(t,e){this.setCoordinateHelper("copyStart",t,e),this.dirtyCopyStart=!0,this.dirtyImageSubscribers=!0,this.dirtyFilterIdentifier=!0},ko.copyStartX=function(t){let e=this.copyStart;e[0]=G(e[0],t),this.dirtyCopyStart=!0,this.dirtyImageSubscribers=!0,this.dirtyFilterIdentifier=!0},ko.copyStartY=function(t){let e=this.copyStart;e[1]=G(e[1],t),this.dirtyCopyStart=!0,this.dirtyFilterIdentifier=!0},ko.copyStart=function(t,e){this.setDeltaCoordinateHelper("copyStart",t,e),this.dirtyCopyStart=!0,this.dirtyImageSubscribers=!0,this.dirtyFilterIdentifier=!0},bo.copyWidth=function(){return this.currentCopyDimensions[0]},bo.copyHeight=function(){return this.currentCopyDimensions[1]},bo.copyDimensions=function(t,e){return[].concat(this.currentCopyDimensions)},So.copyWidth=function(t){null!=t&&(this.copyDimensions[0]=t,this.dirtyCopyDimensions=!0,this.dirtyImageSubscribers=!0,this.dirtyFilterIdentifier=!0)},So.copyHeight=function(t){null!=t&&(this.copyDimensions[1]=t,this.dirtyCopyDimensions=!0,this.dirtyImageSubscribers=!0,this.dirtyFilterIdentifier=!0)},So.copyDimensions=function(t,e){this.setCoordinateHelper("copyDimensions",t,e),this.dirtyCopyDimensions=!0,this.dirtyImageSubscribers=!0,this.dirtyFilterIdentifier=!0},ko.copyWidth=function(t){let e=this.copyDimensions;e[0]=G(e[0],t),this.dirtyCopyDimensions=!0,this.dirtyImageSubscribers=!0,this.dirtyFilterIdentifier=!0},ko.copyHeight=function(t){let e=this.copyDimensions;e[1]=G(e[1],t),this.dirtyCopyDimensions=!0,this.dirtyImageSubscribers=!0,this.dirtyFilterIdentifier=!0},ko.copyDimensions=function(t,e){this.setDeltaCoordinateHelper("copyDimensions",t,e),this.dirtyCopyDimensions=!0,this.dirtyImageSubscribers=!0,this.dirtyFilterIdentifier=!0},So.checkHitIgnoreTransparency=function(t){this.checkHitIgnoreTransparency=t,t&&(this.stashOutput=!0)},yo.get=function(t){let e=this.source;if(0!==t.indexOf("video_")&&0!==t.indexOf("image_")||!e){let e=this.getters[t];if(e)return e.call(this);{let e,i=this.defs[t],s=this.state;return void 0!==i?(e=this[t],void 0!==e?e:i):(i=s.defs[t],void 0!==i?(e=s[t],void 0!==e?e:i):undef)}}return Wr.indexOf(t)>=0||wi.indexOf(t)>=0?e[t.substring(6)]:void 0},yo.set=function(t=q){const e=Object.keys(t),i=e.length;if(i){const s=this.setters,n=this.defs,r=this.source,o=this.state,a=o?o.setters:q,l=o?o.defs:q;let h,c,u,d;for(c=0;c=0||Pi.indexOf(u)>=0)&&(r[u.substring(6)]=d)}return this},yo.updateImageSubscribers=function(){this.dirtyImageSubscribers=!1,this.imageSubscribers.length&&this.imageSubscribers.forEach((t=>{let e=o[t];e&&(e.dirtyInput=!0)}))},yo.imageSubscribe=function(t){t&&t.substring&&ht(this.imageSubscribers,t)},yo.imageUnsubscribe=function(t){t&&t.substring&&ct(this.imageSubscribers,t)},yo.cleanImage=function(){let t=this.sourceNaturalWidth,e=this.sourceNaturalHeight;if(dt(t,e)&&t>0&&e>0){this.dirtyImage=!1;let i=this.currentCopyStart,s=i[0],n=i[1],r=this.currentCopyDimensions,o=r[0],a=r[1];s+o>t&&(i[0]=t-o),n+a>e&&(i[1]=e-a);let l=this.copyArray;l.length=0,l.push(i[0],i[1],o,a)}},yo.cleanCopyStart=function(){let t=this.sourceNaturalWidth,e=this.sourceNaturalHeight;if(dt(t,e)&&t>0&&e>0){this.dirtyCopyStart=!1,this.cleanPosition(this.currentCopyStart,this.copyStart,[t,e]);let i=this.currentCopyStart,s=i[0],n=i[1];(s<0||s>t)&&(i[0]=s<0?0:t-1),(n<0||n>e)&&(i[1]=n<0?0:e-1),this.dirtyImage=!0}},yo.cleanCopyDimensions=function(){let t=this.sourceNaturalWidth,e=this.sourceNaturalHeight;if(dt(t,e)&&t>0&&e>0){this.dirtyCopyDimensions=!1;let i=this.copyDimensions,s=this.currentCopyDimensions,n=i[0],r=i[1];n.substring?s[0]=parseFloat(n)/100*t:s[0]=n,r.substring?s[1]=parseFloat(r)/100*e:s[1]=r;let o=s[0],a=s[1];(o<=0||o>t)&&(s[0]=o<=0?1:t),(a<=0||a>e)&&(s[1]=a<=0?1:e),this.dirtyImage=!0}},yo.prepareStamp=function(){this.dirtyAsset&&this.cleanAsset(),this.asset&&("Sprite"===this.asset.type?this.checkSpriteFrame(this):this.asset.checkSource?this.asset.checkSource(this.sourceNaturalWidth,this.sourceNaturalHeight):this.dirtyAsset=!0),(this.dirtyDimensions||this.dirtyHandle||this.dirtyScale)&&(this.dirtyPaste=!0),(this.dirtyScale||this.dirtyDimensions||this.dirtyStart||this.dirtyOffset||this.dirtyHandle)&&(this.dirtyPathObject=!0),this.dirtyScale&&this.cleanScale(),this.dirtyDimensions&&this.cleanDimensions(),this.dirtyLock&&this.cleanLock(),this.dirtyStart&&this.cleanStart(),this.dirtyOffset&&this.cleanOffset(),this.dirtyHandle&&this.cleanHandle(),this.dirtyRotation&&this.cleanRotation(),(this.isBeingDragged||this.lockTo.indexOf("mouse")>=0||this.lockTo.indexOf("particle")>=0)&&(this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtyStampHandlePositions&&this.cleanStampHandlePositions(),this.dirtyCopyStart&&this.cleanCopyStart(),this.dirtyCopyDimensions&&this.cleanCopyDimensions(),this.dirtyImage&&this.cleanImage(),this.dirtyPaste&&this.preparePasteObject(),this.dirtyPathObject&&this.cleanPathObject(),this.dirtyPositionSubscribers&&this.updatePositionSubscribers(),this.dirtyImageSubscribers&&this.updateImageSubscribers()},yo.preparePasteObject=function(){this.dirtyPaste=!1;let t=this.currentStampHandlePosition,e=this.currentDimensions,i=this.currentScale,s=-t[0]*i,n=-t[1]*i,r=e[0]*i,o=e[1]*i,a=this.pasteArray;a.length=0,a.push(s,n,r,o),this.dirtyPathObject=!0},yo.cleanPathObject=function(){if(this.dirtyPathObject=!1,!this.noPathUpdates||!this.pathObject)if(this.pasteArray&&4===this.pasteArray.length||this.preparePasteObject(),4!==this.pasteArray.length)this.dirtyPathObject=!0;else{(this.pathObject=new Path2D).rect(...this.pasteArray)}},yo.draw=function(t){t.stroke(this.pathObject)},yo.fill=function(t){let[e,i,s,n]=this.copyArray;this.source&&s&&n&&t.drawImage(this.source,...this.copyArray,...this.pasteArray)},yo.drawAndFill=function(t){let[e,i,s,n]=this.copyArray;this.source&&s&&n&&(t.stroke(this.pathObject),t.drawImage(this.source,...this.copyArray,...this.pasteArray),this.currentHost.clearShadow(),t.stroke(this.pathObject),t.drawImage(this.source,...this.copyArray,...this.pasteArray))},yo.fillAndDraw=function(t){let[e,i,s,n]=this.copyArray;this.source&&s&&n&&(t.drawImage(this.source,...this.copyArray,...this.pasteArray),t.stroke(this.pathObject),this.currentHost.clearShadow(),t.drawImage(this.source,...this.copyArray,...this.pasteArray),t.stroke(this.pathObject)),t.stroke(this.pathObject)},yo.drawThenFill=function(t){let[e,i,s,n]=this.copyArray;this.source&&s&&n&&(t.stroke(this.pathObject),t.drawImage(this.source,...this.copyArray,...this.pasteArray))},yo.fillThenDraw=function(t){let[e,i,s,n]=this.copyArray;this.source&&s&&n&&(t.drawImage(this.source,...this.copyArray,...this.pasteArray),t.stroke(this.pathObject))},yo.checkHitReturn=function(t,e,i){if(this.checkHitIgnoreTransparency&&i&&i.engine){let[s,n,r,o]=this.copyArray,[a,l,h,c]=this.pasteArray,[u,d]=this.currentStampPosition,f=4*((e-d)*h+(t-u))+3;return!!i.engine.getImageData(s,n,r,o).data[f]&&{x:t,y:e,artefact:this}}return{x:t,y:e,artefact:this}};const Ao=function(t){return!!t&&new Picture(t)};H.Picture=Picture;const Polygon=function(t=q){return this.shapeInit(t),this};let Oo=Polygon.prototype=Object.create(Object.prototype);Oo.type="Polygon",Oo.lib="entity",Oo.isArtefact=!0,Oo.isAsset=!1,Oo=me(Oo),Oo=hn(Oo);Oo.defs=at(Oo.defs,{sides:0,sideLength:0,radius:0});let vo=Oo.setters,xo=Oo.deltaSetters;vo.sides=function(t){this.sides=t,this.updateDirty()},xo.sides=function(t){this.sides+=t,this.updateDirty()},vo.sideLength=function(t){this.sideLength=t,this.updateDirty()},xo.sideLength=function(t){this.sideLength+=t,this.updateDirty()},vo.radius=function(t){this.radius=t,this.updateDirty()},xo.radius=function(t){this.radius+=t,this.updateDirty()},Oo.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makePolygonPath(),this.pathDefinition=t},Oo.makePolygonPath=function(){let t,e,i,s=this.sideLength||this.radius,n=this.sides,r=360/n,o="",a=[],l=0,h=is({x:0,y:-s});for(let t=0;t{if("pins"===e){let e=[];t.pins.forEach((t=>{rt(t)?e.push(t.name):Array.isArray(t)?e.push([].concat(t)):e.push(t)})),t.pins=e}})),t};let Po=wo.getters,Do=wo.setters,Ro=wo.deltaSetters;Po.pins=function(t){return ut(t)?this.getPinAt(t):this.currentPins.concat()},Do.pins=function(t){if(ut(t)){let e=this.pins;if(Array.isArray(t))e.forEach(((t,e)=>this.removePinAt(e))),e.length=0,e.push(...t),this.updateDirty();else if(rt(t)&&ut(t.index)){let i=e[t.index];Array.isArray(i)&&(ut(t.x)&&(i[0]=t.x),ut(t.y)&&(i[1]=t.y),this.updateDirty())}}},Ro.pins=function(t){if(ut(t)){let e=this.pins;if(rt(t)&&ut(t.index)){let i=e[t.index];Array.isArray(i)&&(ut(t.x)&&(i[0]=addStrings(i[0],t.x)),ut(t.y)&&(i[1]=addStrings(i[1],t.y)),this.updateDirty())}}},Do.tension=function(t){t.toFixed&&(this.tension=t,this.updateDirty())},Ro.tension=function(t){t.toFixed&&(this.tension+=t,this.updateDirty())},Do.closed=function(t){this.closed=t,this.updateDirty()},Do.mapToPins=function(t){this.mapToPins=t,this.updateDirty()},Do.flipUpend=function(t){this.flipUpend=t,this.updateDirty()},Do.flipReverse=function(t){this.flipReverse=t,this.updateDirty()},Do.useAsPath=function(t){this.useAsPath=t,this.updateDirty()},Do.pivot=function(t){if(tt(t)&&!t)this.pivot=null,"pivot"===this.lockTo[0]&&(this.lockTo[0]="start"),"pivot"===this.lockTo[1]&&(this.lockTo[1]="start"),this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0;else{let e=this.pivot,i=t.substring?o[t]:t,s=this.name;i&&i.name&&(e&&e.name!==i.name&&ct(e.pivoted,s),ht(i.pivoted,s),this.pivot=i,this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0)}this.updateDirty()},wo.updateDirty=function(){this.dirtySpecies=!0,this.dirtyPathObject=!0,this.dirtyPins=!0},wo.getPinAt=function(t){let e=Math.floor(t);if(this.useAsPath){let t=this.getPathPositionData(this.unitPartials[e]);return[t.x,t.y]}{let t,i,s=this.currentPins,n=s[e],[r,o,a,l]=this.localBox,[h,c]=n,[u,d]=s[0],[f,p]=this.localOffset,[m,g]=this.currentStampPosition;return this.mapToPins?(t=h-u+r,i=c-u+o):(t=h-f,i=c-p),[m+t,g+i]}},wo.updatePinAt=function(t,e){if(dt(t,e)){e=Math.floor(e);let i=this.pins;if(e=0){let s=i[e];rt(s)&&s.pivoted&&ct(s.pivoted,this.name),i[e]=t,this.updateDirty()}}},wo.removePinAt=function(t){t=Math.floor(t);let e=this.pins;if(t=0){let i=e[t];rt(i)&&i.pivoted&&ct(i.pivoted,this.name),e[t]=null,this.updateDirty()}},wo.prepareStamp=function(){this.dirtyHost&&(this.dirtyHost=!1),this.useParticlesAsPins&&(this.dirtyPins=!0),(this.dirtyPins||this.dirtyLock)&&(this.dirtySpecies=!0),(this.dirtyScale||this.dirtySpecies||this.dirtyDimensions||this.dirtyStart||this.dirtyHandle)&&(this.dirtyPathObject=!0,(this.dirtyScale||this.dirtySpecies)&&(this.pathCalculatedOnce=!1)),(this.isBeingDragged||this.lockTo.indexOf("mouse")>=0||this.lockTo.indexOf("particle")>=0)&&(this.dirtyStampPositions=!0),this.dirtyScale&&this.cleanScale(),this.dirtyStart&&this.cleanStart(),this.dirtyOffset&&this.cleanOffset(),this.dirtyRotation&&this.cleanRotation(),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtySpecies&&this.cleanSpecies(),this.dirtyPathObject&&(this.cleanPathObject(),this.updatePathSubscribers()),this.dirtyPositionSubscribers&&this.updatePositionSubscribers()},wo.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makePolylinePath(),this.pathDefinition=t},wo.getPathParts=function(t,e,i,s,n,r,o){let a=Math.sqrt,l=Math.pow,h=a(l(i-t,2)+l(s-e,2)),c=a(l(n-i,2)+l(r-s,2)),u=o*h/(h+c),d=o*c/(h+c);return[i-u*(n-t),s-u*(r-e),i,s,i+d*(n-t),s+d*(r-e)]},wo.buildLine=function(t,e,i){let s="m0,0l";for(let n=2;n2&&(t=i[r],e=i[r+1],n=0);return s},wo.cleanCoordinate=function(t,e){return t.toFixed?t:"left"===t||"top"===t?0:"right"===t||"bottom"===t?e:"center"===t?e/2:parseFloat(t)/100*e},wo.cleanPinsArray=function(){this.dirtyPins=!1;let t=this.pins,e=this.currentPins;if(e.length=0,this.useParticlesAsPins)t.forEach(((i,s)=>{let n;i&&i.substring?(n=b[i],n&&(t[s]=n)):n=i;let r=!(!n||!n.position)&&n.position;r&&e.push([r.x,r.y])})),e.length||(this.dirtyPins=!0);else{let i,s,n,r=1,a=1,l=this.getHost(),h=this.cleanCoordinate;l&&(n=l.currentDimensions,n&&([r,a]=n)),t.forEach(((n,l)=>{let c;if(n&&n.substring?(c=o[n],t[l]=c):c=n,c)if(Array.isArray(c))[i,s]=c,e.push([h(i,r),h(s,a)]);else if(rt(c)&&c.currentStart){let t=this.name;c.pivoted.indexOf(t)<0&&ht(c.pivoted,t),e.push([...c.currentStampPosition])}}))}if(e.length){let t=e[0][0],i=e[0][1];e.forEach((e=>{e[0]{let e=o[t];e&&(e.dirtyStart=!0)}))};const Fo=function(t){return!!t&&(t.species="polyline",new Polyline(t))};H.Polyline=Polyline;const Quadratic=function(t=q){return this.control=mi(),this.currentControl=mi(),this.controlLockTo="coord",this.curveInit(t),this.shapeInit(t),this.dirtyControl=!0,this};let Eo=Quadratic.prototype=Object.create(Object.prototype);Eo.type="Quadratic",Eo.lib="entity",Eo.isArtefact=!0,Eo.isAsset=!1,Eo=me(Eo),Eo=hn(Eo),Eo=un(Eo);Eo.defs=at(Eo.defs,{control:null,controlPivot:"",controlPivotCorner:"",addControlPivotHandle:!1,addControlPivotOffset:!1,controlPath:"",controlPathPosition:0,addControlPathHandle:!1,addControlPathOffset:!0,controlParticle:"",controlLockTo:""}),Eo.packetExclusions=ht(Eo.packetExclusions,[]),Eo.packetExclusionsByRegex=ht(Eo.packetExclusionsByRegex,[]),Eo.packetCoordinates=ht(Eo.packetCoordinates,["control"]),Eo.packetObjects=ht(Eo.packetObjects,["controlPivot","controlPath"]),Eo.packetFunctions=ht(Eo.packetFunctions,[]);let Mo=Eo.getters,Ho=Eo.setters,Io=Eo.deltaSetters;Ho.controlPivot=function(t){this.setControlHelper(t,"controlPivot","control"),this.updateDirty(),this.dirtyControl=!0},Ho.controlParticle=function(t){this.setControlHelper(t,"controlParticle","control"),this.updateDirty(),this.dirtyControl=!0},Ho.controlPath=function(t){this.setControlHelper(t,"controlPath","control"),this.updateDirty(),this.dirtyControl=!0,this.currentControlPathData=!1},Ho.controlPathPosition=function(t){this.controlPathPosition=t,this.dirtyControl=!0,this.currentControlPathData=!1,this.dirtyFilterIdentifier=!0},Io.controlPathPosition=function(t){this.controlPathPosition+=t,this.dirtyControl=!0,this.currentControlPathData=!1,this.dirtyFilterIdentifier=!0},Mo.controlPositionX=function(){return this.currentControl[0]},Mo.controlPositionY=function(){return this.currentControl[1]},Mo.controlPosition=function(){return[].concat(this.currentControl)},Ho.controlX=function(t){null!=t&&(this.control[0]=t,this.updateDirty(),this.dirtyControl=!0,this.currentControlPathData=!1)},Ho.controlY=function(t){null!=t&&(this.control[1]=t,this.updateDirty(),this.dirtyControl=!0,this.currentControlPathData=!1)},Ho.control=function(t,e){this.setCoordinateHelper("control",t,e),this.updateDirty(),this.dirtyControl=!0,this.currentControlPathData=!1},Io.controlX=function(t){let e=this.control;e[0]=G(e[0],t),this.updateDirty(),this.dirtyControl=!0,this.currentControlPathData=!1},Io.controlY=function(t){let e=this.control;e[1]=G(e[1],t),this.updateDirty(),this.dirtyControl=!0,this.currentControlPathData=!1},Io.control=function(t,e){this.setDeltaCoordinateHelper("control",t,e),this.updateDirty(),this.dirtyControl=!0,this.currentControlPathData=!1},Ho.controlLockTo=function(t){this.controlLockTo=t,this.updateDirty(),this.dirtyControlLock=!0,this.currentControlPathData=!1},Eo.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeQuadraticPath(),this.pathDefinition=t},Eo.makeQuadraticPath=function(){let[t,e]=this.currentStampPosition,[i,s]=this.currentControl,[n,r]=this.currentEnd;return`m0,0q${(i-t).toFixed(2)},${(s-e).toFixed(2)} ${(n-t).toFixed(2)},${(r-e).toFixed(2)}`},Eo.cleanDimensions=function(){this.dirtyDimensions=!1,this.dirtyHandle=!0,this.dirtyOffset=!0,this.dirtyStart=!0,this.dirtyControl=!0,this.dirtyEnd=!0,this.dirtyFilterIdentifier=!0},Eo.preparePinsForStamp=function(){const t=this.dirtyPins,e=this.endPivot,i=this.endPath,s=this.controlPivot,n=this.controlPath;for(let r,o=0,a=t.length;o{if(nt(t))return t;switch(t){case"top":case"left":return 0;case"bottom":case"right":return e;case"center":return e/2;default:return t=parseFloat(t),nt(t)?t/100*e:0}};this.currentStartRadius=t?e(this.startRadius,t):this.defs.startRadius,this.currentEndRadius=t?e(this.endRadius,t):this.defs.endRadius},To.buildStyle=function(t){if(t){let e=t.engine;if(e){let t=e.createRadialGradient(...this.gradientArgs);return this.addStopsToGradient(t,this.paletteStart,this.paletteEnd,this.cyclePalette)}}return"rgb(0 0 0 / 0)"},To.updateGradientArgs=function(t,e){let i=this.gradientArgs,s=this.currentStart,n=this.currentEnd,r=this.currentStartRadius,o=this.currentEndRadius,a=s[0]+t,l=s[1]+e,h=n[0]+t,c=n[1]+e;a===h&&l===c&&r===o&&o++,i.length=0,i.push(a,l,r,h,c,o)};const Xo=function(t){return!!t&&new RadialGradient(t)};H.RadialGradient=RadialGradient;const RawAsset=function(t=q){this.makeName(t.name),this.register(),this.subscribers=[],this.set(this.defs),this.updateSource=Z;let e=t.keytypes||{};t.userAttributes&&t.userAttributes.forEach((t=>{this.addAttribute(t),t.type&&(e[t.key]=t.type)})),this.initializeAttributes(e),this.set(t);let i=document.createElement("canvas");return i.width=0,i.height=0,this.element=i,this.engine=i.getContext("2d",{willReadFrequently:!0}),t.subscribe&&this.subscribers.push(t.subscribe),this};let Yo=RawAsset.prototype=Object.create(Object.prototype);Yo.type="RawAsset",Yo.lib="asset",Yo.isArtefact=!1,Yo.isAsset=!0,Yo=me(Yo),Yo=Oi(Yo);Yo.defs=at(Yo.defs,{keytypes:null,data:null,updateSource:null}),Yo.saveAsPacket=function(){return[this.name,this.type,this.lib,{}]},Yo.stringifyFunction=Z,Yo.processPacketOut=Z,Yo.finalizePacketOut=Z,Yo.clone=U;let No=Yo.getters,Go=Yo.setters,zo=Yo.deltaSetters;Go.source=Z,Go.element=Z,Go.engine=Z,Go.data=function(t){t&&(this.data=t,this.dirtyData=!0)},Go.updateSource=function(t){t&&st(t)&&(this.updateSource=t,this.dirtyData=!0)},Yo.checkSource=function(t,e){this.source||(this.source=this.element);let i=this.source;if(i){let s=!1;this.dirtyData&&(this.dirtyData=!1,this.updateSource(this),s=!0),this.sourceLoaded=!0,this.sourceNaturalWidth&&this.sourceNaturalHeight&&this.sourceNaturalWidth===t&&this.sourceNaturalHeight===e||(this.sourceNaturalWidth=i.width,this.sourceNaturalHeight=i.height,s=!0),s&&this.sourceNaturalWidth&&this.sourceNaturalHeight&&this.notifySubscribers()}else this.sourceLoaded=!1},Yo.subscribeAction=function(t={}){this.subscribers.push(t),t.asset=this,t.source=this.element,this.notifySubscriber(t)},Yo.addAttribute=function(t=q){let{key:e,defaultValue:i,setter:s,deltaSetter:n,getter:r}=t;return e&&e.substring&&(this.defs[e]=ut(i)?i:null,this[e]=ut(i)?i:null,st(s)&&(Go[e]=s),st(n)&&(zo[e]=n),st(r)&&(No[e]=r)),this},Yo.removeAttribute=function(t){return t&&t.substring&&(delete this.defs[t],delete this[t],delete No[t],delete Go[t],delete zo[t]),this},Yo.initializeAttributes=function(t){for(let[e,i]of Object.entries(t))switch(i){case"Quaternion":this[e]=makeQuaternion();break;case"Vector":this[e]=makeVector();break;case"Coordinate":this[e]=makeCoordinate()}};const Wo=function(t){return!!t&&new RawAsset(t)};H.RawAsset=RawAsset;const RdAsset=function(t=q){return this.makeName(t.name),this.register(),this.installElement(this.name),this.subscribers=[],this.set(this.defs),this.set(t),t.subscribe&&this.subscribers.push(t.subscribe),this.currentGeneration=0,this.dataArrays=[],this.dirtyScene=!0,this.dirtyOutput=!0,this};let Vo=RdAsset.prototype=Object.create(Object.prototype);Vo.type="RdAsset",Vo.lib="asset",Vo.isArtefact=!1,Vo.isAsset=!0,Vo=me(Vo),Vo=Oi(Vo),Vo=Mr(Vo),Vo=_i(Vo);Vo.defs=at(Vo.defs,{width:300,height:150,diffusionRateA:.2097,diffusionRateB:.105,feedRate:.054,killRate:.062,initialSettingPreference:"random",randomEngineSeed:"some-random-string-or-other",initialRandomSeedLevel:.0045,initialSettingEntity:null,drawEvery:10,maxGenerations:4e3}),delete Vo.defs.source,delete Vo.defs.sourceLoaded,Vo.stringifyFunction=Z,Vo.processPacketOut=Z,Vo.finalizePacketOut=Z,Vo.saveAsPacket=function(){return`[${this.name}, ${this.type}, ${this.lib}, {}]`},Vo.clone=U,Vo.getters;let Zo=Vo.setters;Vo.deltaSetters,Zo.subscribers=Z,Zo.width=function(t){t.toFixed&&(this.width=t,this.sourceNaturalWidth=t,this.dirtyScene=!0)},Zo.height=function(t){t.toFixed&&(this.height=t,this.sourceNaturalHeight=t,this.dirtyScene=!0)},Zo.initialRandomSeedLevel=function(t){t.toFixed&&(this.initialRandomSeedLevel=t,this.dirtyScene=!0)},Zo.diffusionRateA=function(t){t.toFixed&&(this.diffusionRateA=t,this.dirtyScene=!0)},Zo.diffusionRateB=function(t){t.toFixed&&(this.diffusionRateB=t,this.dirtyScene=!0)},Zo.feedRate=function(t){t.toFixed&&(this.feedRate=t,this.dirtyScene=!0)},Zo.killRate=function(t){t.toFixed&&(this.killRate=t,this.dirtyScene=!0)},Zo.drawEvery=function(t){t.toFixed&&(this.drawEvery=t,this.dirtyScene=!0)},Zo.maxGenerations=function(t){t.toFixed&&(this.maxGenerations=t,this.dirtyScene=!0)},Vo.initialSettingPreferenceValues=["random","entity"],Zo.initialSettingPreference=function(t){t.substring&&this.initialSettingPreferenceValues.indexOf(t)>=0&&(this.initialSettingPreference=t,this.dirtyScene=!0)},Zo.randomEngineSeed=function(t){t.substring&&(this.randomEngineSeed=t,this.dirtyScene=!0)},Zo.initialSettingEntity=function(t){t&&(t.substring||(t=t.name||""),t&&(this.initialSettingEntity=t,this.dirtyScene=!0))},Zo.preset=function(t){if(t.substring){switch(t){case"negativeBubbles":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.098,this.killRate=.0555,this.maxGenerations=4e3,this.initialRandomSeedLevel=.05;break;case"positiveBubbles":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.098,this.killRate=.057,this.maxGenerations=4e3,this.initialRandomSeedLevel=.1;break;case"precriticalBubbles":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.082,this.killRate=.059,this.maxGenerations=4e3,this.initialRandomSeedLevel=.08;break;case"wormsAndLoops":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.082,this.killRate=.06,this.maxGenerations=4e3,this.initialRandomSeedLevel=.08;break;case"stableSolitons":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.074,this.killRate=.064,this.maxGenerations=4e3,this.initialRandomSeedLevel=.15;break;case"uSkateWorld":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.062,this.killRate=.0609,this.maxGenerations=4e3,this.initialRandomSeedLevel=.0045;break;case"worms":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.058,this.killRate=.065,this.maxGenerations=4e3,this.initialRandomSeedLevel=.1;break;case"wormsJoinIntoMazes":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.046,this.killRate=.063,this.maxGenerations=4e3,this.initialRandomSeedLevel=.0045;break;case"negatons":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.046,this.killRate=.0594,this.maxGenerations=4e3,this.initialRandomSeedLevel=.0045;break;case"turingPatterns":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.042,this.killRate=.059,this.maxGenerations=4e3,this.initialRandomSeedLevel=.0045;break;case"chaosToTuringNegatons":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.039,this.killRate=.058,this.maxGenerations=4e3,this.initialRandomSeedLevel=.0045;break;case"fingerprints":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.037,this.killRate=.06,this.maxGenerations=4e3,this.initialRandomSeedLevel=.0045;break;case"chaosWithNegatons":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.0353,this.killRate=.0566,this.maxGenerations=0,this.initialRandomSeedLevel=.0045;break;case"spotsAndWorms":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.034,this.killRate=.0618,this.maxGenerations=4e3,this.initialRandomSeedLevel=.0045;break;case"selfReplicatingSpots":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.03,this.killRate=.063,this.maxGenerations=4e3,this.initialRandomSeedLevel=.0045;break;case"superResonantMazes":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.03,this.killRate=.0565,this.maxGenerations=4e3,this.initialRandomSeedLevel=.0045;break;case"mazes":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.029,this.killRate=.057,this.maxGenerations=4e3,this.initialRandomSeedLevel=.0045;break;case"mazesWithSomeChaos":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.026,this.killRate=.055,this.maxGenerations=0,this.initialRandomSeedLevel=.0045;break;case"chaos":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.026,this.killRate=.051,this.maxGenerations=0,this.initialRandomSeedLevel=.009;break;case"warringMicrobes":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.022,this.killRate=.059,this.maxGenerations=0,this.initialRandomSeedLevel=.0045;break;case"spotsAndLoops":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.018,this.killRate=.051,this.maxGenerations=0,this.initialRandomSeedLevel=.0045;break;case"movingSpots":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.014,this.killRate=.054,this.maxGenerations=0,this.initialRandomSeedLevel=.0045;break;case"waves":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.014,this.killRate=.045,this.maxGenerations=0,this.initialRandomSeedLevel=.0045;break;default:this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.054,this.killRate=.062,this.maxGenerations=4e3,this.initialRandomSeedLevel=.0045}this.dirtyScene=!0}},Vo.update=function(){this.dirtyOutput=!0},Vo.cleanOutput=function(t=0){if(this.dirtyScene&&this.cleanScene(),!this.dirtyScene){const{element:e,engine:i,dataArrays:s,diffusionRateA:n,diffusionRateB:r,feedRate:o,killRate:a,currentSource:l,drawEvery:h,maxGenerations:c,currentGeneration:u}=this;let d,f,p,m,g,y,b,S,k,A;if(!c||ui?i:t},Vo.calculateLaplacian=function(t,e){const i=this.width;let s,n=0,r=Math.floor(t/i),o=this.checkRow(r-1)*i,a=this.checkRow(r+1)*i,l=r*i,h=t-l,c=this.checkCol(h-1),u=this.checkCol(h+1);return n+=-1*e[t],s=o+c,n+=.05*e[s],s=o+u,n+=.05*e[s],s=a+c,n+=.05*e[s],s=a+u,n+=.05*e[s],s=o+h,n+=.2*e[s],s=l+u,n+=.2*e[s],s=l+c,n+=.2*e[s],s=a+h,n+=.2*e[s],n},Vo.checkRow=function(t){const e=this.height;return t<0?e-1:t>=e?0:t},Vo.checkCol=function(t){const e=this.width;return t<0?e-1:t>=e?0:t},Vo.checkOutputValuesExist=function(){return!!this.dataArrays.length},Vo.getOutputValue=function(t,e){let i,s,n,r;const{dataArrays:o,currentSource:a}=this;return a?[i,s,n,r]=o:[s,i,r,n]=o,(i[t]-n[t]+1)/2};const _o=function(t){return!!t&&new RdAsset(t)};H.RdAsset=RdAsset;const Rectangle=function(t=q){return this.shapeInit(t),this.currentRectangleWidth=1,this.currentRectangleHeight=1,this};let Uo=Rectangle.prototype=Object.create(Object.prototype);Uo.type="Rectangle",Uo.lib="entity",Uo.isArtefact=!0,Uo.isAsset=!1,Uo=me(Uo),Uo=hn(Uo);Uo.defs=at(Uo.defs,{rectangleWidth:10,rectangleHeight:10,radiusTLX:0,radiusTLY:0,radiusTRX:0,radiusTRY:0,radiusBRX:0,radiusBRY:0,radiusBLX:0,radiusBLY:0,offshootA:.55,offshootB:0});let Ko=Uo.setters,qo=Uo.deltaSetters;Ko.radius=function(t){this.setRectHelper(t,["radiusTLX","radiusTRX","radiusBRX","radiusBLX","radiusX","radiusTLY","radiusTRY","radiusBRY","radiusBLY","radiusY"])},Ko.radiusX=function(t){this.setRectHelper(t,["radiusTLX","radiusTRX","radiusBRX","radiusBLX","radiusX"])},Ko.radiusY=function(t){this.setRectHelper(t,["radiusTLY","radiusTRY","radiusBRY","radiusBLY","radiusY"])},Ko.radiusT=function(t){this.setRectHelper(t,["radiusTLX","radiusTLY","radiusTRX","radiusTRY"])},Ko.radiusB=function(t){this.setRectHelper(t,["radiusBRX","radiusBRY","radiusBLX","radiusBLY"])},Ko.radiusL=function(t){this.setRectHelper(t,["radiusTLX","radiusTLY","radiusBLX","radiusBLY"])},Ko.radiusR=function(t){this.setRectHelper(t,["radiusTRX","radiusTRY","radiusBRX","radiusBRY"])},Ko.radiusTX=function(t){this.setRectHelper(t,["radiusTLX","radiusTRX"])},Ko.radiusBX=function(t){this.setRectHelper(t,["radiusBRX","radiusBLX"])},Ko.radiusLX=function(t){this.setRectHelper(t,["radiusTLX","radiusBLX"])},Ko.radiusRX=function(t){this.setRectHelper(t,["radiusTRX","radiusBRX"])},Ko.radiusTY=function(t){this.setRectHelper(t,["radiusTLY","radiusTRY"])},Ko.radiusBY=function(t){this.setRectHelper(t,["radiusBRY","radiusBLY"])},Ko.radiusLY=function(t){this.setRectHelper(t,["radiusTLY","radiusBLY"])},Ko.radiusRY=function(t){this.setRectHelper(t,["radiusTRY","radiusBRY"])},Ko.radiusTL=function(t){this.setRectHelper(t,["radiusTLX","radiusTLY"])},Ko.radiusTR=function(t){this.setRectHelper(t,["radiusTRX","radiusTRY"])},Ko.radiusBL=function(t){this.setRectHelper(t,["radiusBLX","radiusBLY"])},Ko.radiusBR=function(t){this.setRectHelper(t,["radiusBRX","radiusBRY"])},Ko.radiusTLX=function(t){this.setRectHelper(t,["radiusTLX"])},Ko.radiusTLY=function(t){this.setRectHelper(t,["radiusTLY"])},Ko.radiusTRX=function(t){this.setRectHelper(t,["radiusTRX"])},Ko.radiusTRY=function(t){this.setRectHelper(t,["radiusTRY"])},Ko.radiusBRX=function(t){this.setRectHelper(t,["radiusBRX"])},Ko.radiusBRY=function(t){this.setRectHelper(t,["radiusBRY"])},Ko.radiusBLX=function(t){this.setRectHelper(t,["radiusBLX"])},Ko.radiusBLY=function(t){this.setRectHelper(t,["radiusBLY"])},qo.radius=function(t){this.deltaRectHelper(t,["radiusTLX","radiusTRX","radiusBRX","radiusBLX","radiusX","radiusTLY","radiusTRY","radiusBRY","radiusBLY","radiusY"])},qo.radiusX=function(t){this.deltaRectHelper(t,["radiusTLX","radiusTRX","radiusBRX","radiusBLX","radiusX"])},qo.radiusY=function(t){this.deltaRectHelper(t,["radiusTLY","radiusTRY","radiusBRY","radiusBLY","radiusY"])},qo.radiusT=function(t){this.deltaRectHelper(t,["radiusTLX","radiusTLY","radiusTRX","radiusTRY"])},qo.radiusB=function(t){this.deltaRectHelper(t,["radiusBRX","radiusBRY","radiusBLX","radiusBLY"])},qo.radiusL=function(t){this.deltaRectHelper(t,["radiusTLX","radiusTLY","radiusBLX","radiusBLY"])},qo.radiusR=function(t){this.deltaRectHelper(t,["radiusTRX","radiusTRY","radiusBRX","radiusBRY"])},qo.radiusTX=function(t){this.deltaRectHelper(t,["radiusTLX","radiusTRX"])},qo.radiusBX=function(t){this.deltaRectHelper(t,["radiusBRX","radiusBLX"])},qo.radiusLX=function(t){this.deltaRectHelper(t,["radiusTLX","radiusBLX"])},qo.radiusRX=function(t){this.deltaRectHelper(t,["radiusTRX","radiusBRX"])},qo.radiusTY=function(t){this.deltaRectHelper(t,["radiusTLY","radiusTRY"])},qo.radiusBY=function(t){this.deltaRectHelper(t,["radiusBRY","radiusBLY"])},qo.radiusLY=function(t){this.deltaRectHelper(t,["radiusTLY","radiusBLY"])},qo.radiusRY=function(t){this.deltaRectHelper(t,["radiusTRY","radiusBRY"])},qo.radiusTL=function(t){this.deltaRectHelper(t,["radiusTLX","radiusTLY"])},qo.radiusTR=function(t){this.deltaRectHelper(t,["radiusTRX","radiusTRY"])},qo.radiusBL=function(t){this.deltaRectHelper(t,["radiusBLX","radiusBLY"])},qo.radiusBR=function(t){this.deltaRectHelper(t,["radiusBRX","radiusBRY"])},qo.radiusTLX=function(t){this.deltaRectHelper(t,["radiusTLX"])},qo.radiusTLY=function(t){this.deltaRectHelper(t,["radiusTLY"])},qo.radiusTRX=function(t){this.deltaRectHelper(t,["radiusTRX"])},qo.radiusTRY=function(t){this.deltaRectHelper(t,["radiusTRY"])},qo.radiusBRX=function(t){this.deltaRectHelper(t,["radiusBRX"])},qo.radiusBRY=function(t){this.deltaRectHelper(t,["radiusBRY"])},qo.radiusBLX=function(t){this.deltaRectHelper(t,["radiusBLX"])},qo.radiusBLY=function(t){this.deltaRectHelper(t,["radiusBLY"])},Ko.offshootA=function(t){this.offshootA=t,this.updateDirty()},Ko.offshootB=function(t){this.offshootB=t,this.updateDirty()},qo.offshootA=function(t){t.toFixed&&(this.offshootA+=t,this.updateDirty())},qo.offshootB=function(t){t.toFixed&&(this.offshootB+=t,this.updateDirty())},Ko.rectangleWidth=function(t){null!=t&&(this.rectangleWidth=t,this.dirtyDimensions=!0,this.dirtyFilterIdentifier=!0)},Ko.rectangleHeight=function(t){null!=t&&(this.rectangleHeight=t,this.dirtyDimensions=!0,this.dirtyFilterIdentifier=!0)},qo.rectangleWidth=function(t){this.rectangleWidth=G(this.rectangleWidth,t),this.dirtyDimensions=!0,this.dirtyFilterIdentifier=!0},qo.rectangleHeight=function(t){this.rectangleHeight=G(this.rectangleHeight,t),this.dirtyDimensions=!0,this.dirtyFilterIdentifier=!0},Uo.setRectHelper=function(t,e){this.updateDirty(),e.forEach((e=>{this[e]=t}),this)},Uo.deltaRectHelper=function(t,e){this.updateDirty(),e.forEach((e=>{this[e]=G(this[e],t)}),this)},Uo.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeRectanglePath(),this.pathDefinition=t},Uo.cleanDimensions=function(){this.dirtyDimensions=!1;let t=this.getHost();if(t){let e=t.currentDimensions?t.currentDimensions:[t.w,t.h],i=this.rectangleWidth,s=this.rectangleHeight,n=this.currentRectangleWidth||1,r=this.currentRectangleHeight||1;i.substring&&(i=parseFloat(i)/100*e[0]),s.substring&&(s=parseFloat(s)/100*e[1]);let o,a=this.mimic;a&&a.name&&this.useMimicDimensions&&(o=a.currentDimensions),o?(this.currentRectangleWidth=this.addOwnDimensionsToMimic?o[0]+i:o[0],this.currentRectangleHeight=this.addOwnDimensionsToMimic?o[1]+s:o[1]):(this.currentRectangleWidth=i,this.currentRectangleHeight=s),this.currentDimensions[0]=this.currentRectangleWidth,this.currentDimensions[1]=this.currentRectangleHeight,this.dirtyStart=!0,this.dirtyHandle=!0,this.dirtyOffset=!0,n===this.currentRectangleWidth&&r===this.currentRectangleHeight||(this.dirtyPositionSubscribers=!0),this.mimicked&&this.mimicked.length&&(this.dirtyMimicDimensions=!0)}else this.dirtyDimensions=!0},Uo.makeRectanglePath=function(){this.dirtyDimensions&&this.cleanDimensions();let t=this.currentRectangleWidth,e=this.currentRectangleHeight,i=this.offshootA,s=this.offshootB,n=this.radiusTLX,r=this.radiusTLY,o=this.radiusTRX,a=this.radiusTRY,l=this.radiusBRX,h=this.radiusBRY,c=this.radiusBLX,u=this.radiusBLY;(n.substring||r.substring||o.substring||a.substring||l.substring||h.substring||c.substring||u.substring)&&(n=n.substring?parseFloat(n)/100*t:n,r=r.substring?parseFloat(r)/100*e:r,o=o.substring?parseFloat(o)/100*t:o,a=a.substring?parseFloat(a)/100*e:a,l=l.substring?parseFloat(l)/100*t:l,h=h.substring?parseFloat(h)/100*e:h,c=c.substring?parseFloat(c)/100*t:c,u=u.substring?parseFloat(u)/100*e:u);let d="m0,0";return t-n-o!=0&&(d+="h"+(t-n-o)),o+a!==0&&(d+=`c${o*i},${a*s} ${o-o*s},${a-a*i}, ${o},${a}`),e-a-h!=0&&(d+="v"+(e-a-h)),l+h!==0&&(d+=`c${-l*s},${h*i} ${l*i-l},${h-h*s} ${-l},${h}`),-t+c+l!==0&&(d+=`h${-t+c+l}`),c+u!==0&&(d+=`c${-c*i},${-u*s} ${c*s-c},${u*i-u} ${-c},${-u}`),-e+r+u!==0&&(d+=`v${-e+r+u}`),n+r!==0&&(d+=`c${n*s},${-r*i} ${n-n*i},${r*s-r} ${n},${-r}`),d+="z",d},Uo.calculateLocalPathAdditionalActions=function(){let[t,e,i,s]=this.localBox;this.pathDefinition=this.pathDefinition.replace("m0,0",`m${-t},${-e}`),this.pathCalculatedOnce=!1,this.calculateLocalPath(this.pathDefinition,!0)};const Qo=function(t){return!!t&&(t.species="rectangle",new Rectangle(t))};H.Rectangle=Rectangle;const Shape=function(t=q){return this.shapeInit(t),this};let Jo=Shape.prototype=Object.create(Object.prototype);Jo.type="Shape",Jo.lib="entity",Jo.isArtefact=!0,Jo.isAsset=!1,Jo=me(Jo),Jo=hn(Jo);Jo.defs=at(Jo.defs,{}),Jo.cleanSpecies=function(){this.dirtySpecies=!1},Jo.cleanStampHandlePositionsAdditionalActions=function(){let t=this.localBox,e=this.currentStampHandlePosition;e[0]+=t[0],e[1]+=t[1]};const ta=function(t){return!!t&&new Shape(t)};H.Shape=Shape;const Spiral=function(t=q){return this.shapeInit(t),this};let ea=Spiral.prototype=Object.create(Object.prototype);ea.type="Spiral",ea.lib="entity",ea.isArtefact=!0,ea.isAsset=!1,ea=me(ea),ea=hn(ea);ea.defs=at(ea.defs,{loops:1,loopIncrement:1,drawFromLoop:0});let ia=ea.setters,sa=ea.deltaSetters;ia.loops=function(t){this.loops=t,this.updateDirty()},sa.loops=function(t){this.loops+=t,this.updateDirty()},ia.loopIncrement=function(t){this.loopIncrement=t,this.updateDirty()},sa.loopIncrement=function(t){this.loopIncrement+=t,this.updateDirty()},ia.drawFromLoop=function(t){this.drawFromLoop=Math.floor(t),this.updateDirty()},sa.drawFromLoop=function(t){this.drawFromLoop=Math.floor(this.drawFromLoop+t),this.updateDirty()},ea.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeSpiralPath(),this.pathDefinition=t},ea.firstTurn=[[.043,0,.082,-.035,.088,-.088],[.007,-.057,-.024,-.121,-.088,-.162],[-.07,-.045,-.169,-.054,-.265,-.015],[-.106,.043,-.194,.138,-.235,.265],[-.044,.139,-.026,.3,.058,.442],[.091,.153,.25,.267,.442,.308],[.206,.044,.431,-.001,.619,-.131],[.2,-.139,.34,-.361,.381,-.619]],ea.subsequentTurns=[[0,-.27,-.11,-.52,-.29,-.71],[-.19,-.19,-.44,-.29,-.71,-.29],[-.27,0,-.52,.11,-.71,.29],[-.19,.19,-.29,.44,-.29,.71],[0,.27,.11,.52,.29,.71],[.19,.19,.44,.29,.71,.29],[.27,0,.52,-.11,.71,-.29],[.19,-.19,.29,-.44,.29,-.71]],ea.makeSpiralPath=function(){let t,e,i,s,n,r,o,a,l,h,c,u,d=Math.floor(this.loops),f=this.loopIncrement,p=Math.floor(this.drawFromLoop),m=this.firstTurn,g=this.subsequentTurns,y=[];for(let o=0;o=p&&(b+=`c${t},${e} ${i},${s} ${n},${r}`),[o,a,l,h,c,u]=g[d],y[d]=[t+o*f,e+a*f,i+l*f,s+h*f,n+c*f,r+u*f];return b},ea.calculateLocalPathAdditionalActions=function(){let[t,e,i,s]=this.localBox,n=this.scale;this.pathDefinition=this.pathDefinition.replace("m0,0",`m${-t/n},${-e/n}`),this.pathCalculatedOnce=!1,this.calculateLocalPath(this.pathDefinition,!0)};const na=function(t){return!!t&&(t.species="spiral",new Spiral(t))};H.Spiral=Spiral;const Star=function(t=q){return this.shapeInit(t),this};let ra=Star.prototype=Object.create(Object.prototype);ra.type="Star",ra.lib="entity",ra.isArtefact=!0,ra.isAsset=!1,ra=me(ra),ra=hn(ra);ra.defs=at(ra.defs,{radius1:0,radius2:0,points:0,twist:0});let oa=ra.setters,aa=ra.deltaSetters;oa.radius1=function(t){this.radius1=t,this.updateDirty()},aa.radius1=function(t){this.radius1+=t,this.updateDirty()},oa.radius2=function(t){this.radius2=t,this.updateDirty()},aa.radius2=function(t){this.radius2+=t,this.updateDirty()},oa.points=function(t){this.points=t,this.updateDirty()},aa.points=function(t){this.points+=t,this.updateDirty()},oa.twist=function(t){this.twist=t,this.updateDirty()},aa.twist=function(t){this.twist+=t,this.updateDirty()},ra.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeStarPath(),this.pathDefinition=t},ra.makeStarPath=function(){let t,e,i,s,n,r,o,a=this.points,l=this.twist,h=this.radius1,c=this.radius2,u=360/a,d=[],f="";if(h.substring||c.substring){let t=this.getHost();if(t){let[e,i]=t.currentDimensions;h=h.substring?parseFloat(h)/100*e:h,c=c.substring?parseFloat(c)/100*e:c}}let p=is({x:0,y:-h}),m=is({x:0,y:-c});for(t=p.x,e=p.y,d.push(t),m.rotate(-u/2),m.rotate(l),o=0;o{this[e]=t}),this)},ha.deltaRectHelper=function(t,e){this.updateDirty(),e.forEach((e=>{this[e]=addStrings(this[e],t)}),this)},ha.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeTetragonPath(),this.pathDefinition=t},ha.makeTetragonPath=function(){let t,e,i=this.radiusX,s=this.radiusY;if(i.substring||s.substring){let n=this.getHost();if(n){let[r,o]=n.currentDimensions;t=2*(i.substring?parseFloat(i)/100*r:i),e=2*(s.substring?parseFloat(s)/100*o:s)}}else t=2*i,e=2*s;let n=parseFloat((t*this.intersectX).toFixed(2)),r=parseFloat((t-n).toFixed(2)),o=parseFloat((e*this.intersectY).toFixed(2)),a=parseFloat((e-o).toFixed(2)),l="m0,0";return l+=`l${r},${o} ${-r},${a} ${-n},${-a} ${n},${-o}z`,l},ha.calculateLocalPathAdditionalActions=function(){let[t,e,i,s]=this.localBox;this.pathDefinition=this.pathDefinition.replace("m0,0",`m${-t},${-e}`),this.pathCalculatedOnce=!1,this.calculateLocalPath(this.pathDefinition,!0)};const da=function(t){return!!t&&(t.species="tetragon",new Tetragon(t))};H.Tetragon=Tetragon;const Ticker=function(t=q){return this.makeName(t.name),this.register(),this.subscribers=[],this.subscriberObjects=[],this.set(this.defs),this.set(t),this.cycleCount=0,this.active=!1,this.effectiveDuration=0,this.startTime=0,this.currentTime=0,this.tick=0,this.lastEvent=0,t.subscribers&&this.subscribe(t.subscribers),this.setEffectiveDuration(),this};let fa=Ticker.prototype=Object.create(Object.prototype);fa.type="Ticker",fa.lib="animationtickers",fa.isArtefact=!1,fa.isAsset=!1,fa=me(fa);fa.defs=at(fa.defs,{order:1,duration:0,subscribers:null,killOnComplete:!1,cycles:1,eventChoke:0,observer:null,onRun:null,onHalt:null,onReverse:null,onResume:null,onSeekTo:null,onSeekFor:null,onComplete:null,onReset:null}),fa.packetExclusions=ht(fa.packetExclusions,["subscribers"]),fa.packetFunctions=ht(fa.packetFunctions,["onRun","onHalt","onReverse","onResume","onSeekTo","onSeekFor","onComplete","onReset"]),fa.kill=function(){return this.active&&this.halt(),ct(ga,this.name),ya=!0,this.deregister(),!0},fa.killTweens=function(t=!1){let e,i,s;for(e=0,i=this.subscribers.length;e{t=w[i],t&&e.push(t)}))},fa.getSubscriberObjects=function(){return this.subscribers.length&&!this.subscriberObjects.length&&this.repopulateSubscriberObjects(),this.subscriberObjects},fa.sortSubscribers=function(){let t=this.subscribers;if(t.length>1){let e=[].concat(t),i=Math.floor,s=[];e.forEach((t=>{let e=i(t.effectiveTime)||0;s[e]||(s[e]=[]),s[e].push(t)})),this.subscribers=s.reduce(((t,e)=>t.concat(e)),[])}this.repopulateSubscriberObjects()},fa.updateSubscribers=function(t,e){e=!!ut(e)&&e;let i,s,n=this.getSubscriberObjects();if(e)for(i=n.length-1;i>=0;i--)n[i].set(t);else for(i=0,s=n.length;it.reversed=!t.reversed)),this},fa.makeTickerUpdateEvent=function(){return new CustomEvent("tickerupdate",{detail:{name:this.name,type:"Ticker",tick:this.tick,reverseTick:this.effectiveDuration-this.tick},bubbles:!0,cancelable:!0})},fa.recalculateEffectiveDuration=function(){let t,e=this.getSubscriberObjects(),i=0;return this.duration?this.setEffectiveDuration():(e.forEach((e=>{t=e.getEndTime(),t>i&&(i=t)})),this.effectiveDuration=i),this},fa.setEffectiveDuration=function(){let t;return this.duration&&(t=z(this.duration),"%"===t[0]?(this.duration=0,this.recalculateEffectiveDuration()):this.effectiveDuration=t[1]),this},fa.checkObserverRunningState=function(){let t=this.observer;if(t){if(t.substring){const e=i[t];if(!e||"RenderAnimation"!==e.type)return!0;t=this.observer=e}if("RenderAnimation"===t.type)return t.isRunning()}return!0},fa.fn=function(t){let e=Sa();t=!!ut(t)&&t;let i,s,n,r,o,a,l,h,c=this.active,u=this.startTime,d=this.cycles,f=this.cycleCount,p=this.effectiveDuration,m=this.eventChoke;if(c&&u&&(!d||f=p?(h=this.tick=0,this.startTime=this.currentTime,e.tick=p,e.reverseTick=0,e.willLoop=!0,d&&(f++,this.cycleCount=f)):(e.tick=h,e.reverseTick=p-h),e.next=!0):h>=p?(e.tick=p,e.reverseTick=0,c=this.active=!1,d&&(f++,this.cycleCount=f)):(e.tick=h,e.reverseTick=p-h,e.next=!0),n=this.getSubscriberObjects(),t)for(i=n.length-1;i>=0;i--)n[i].update(e);else for(i=0,s=n.length;i=d&&this.killTweens(!0)}ka(e)},fa.run=function(){return this.active||(this.startTime=this.currentTime=Date.now(),this.cycleCount=0,this.updateSubscribers({reversed:!1}),this.active=!0,ht(ga,this.name),ya=!0,"function"==typeof this.onRun&&this.onRun()),this},fa.isRunning=function(){return this.active},fa.reset=function(){return this.active&&this.halt(),this.startTime=this.currentTime=Date.now(),this.cycleCount=0,this.updateSubscribers({reversed:!1}),this.active=!0,this.fn(!0),this.active=!1,"function"==typeof this.onReset&&this.onReset(),this},fa.complete=function(){return this.active&&this.halt(),this.startTime=this.currentTime=Date.now(),this.cycleCount=0,this.updateSubscribers({reversed:!0}),this.active=!0,this.fn(),this.active=!1,"function"==typeof this.onComplete&&this.onComplete(),this},fa.reverse=function(t=!1){let e;return t=ft(t,!1),this.active&&this.halt(),e=this.currentTime-this.startTime,this.startTime=this.currentTime-(this.effectiveDuration-e),this.changeSubscriberDirection(),this.active=!0,this.fn(),this.active=!1,"function"==typeof this.onReverse&&this.onReverse(),t&&this.resume(),this},fa.halt=function(){return this.active=!1,ht(ga,this.name),ya=!0,"function"==typeof this.onHalt&&this.onHalt(),this},fa.resume=function(){let t,e,i;return this.active||(t=Date.now(),e=this.currentTime,i=this.startTime,this.startTime=t-(e-i),this.currentTime=t,this.active=!0,ht(ga,this.name),ya=!0,"function"==typeof this.onResume&&this.onResume()),this},fa.seekTo=function(t,e=!1){let i=!1;return t=ft(t,0),this.active&&this.halt(),this.cycles&&this.cycleCount>=this.cycles&&(this.cycleCount=this.cycles-1),t=this.cycles&&(this.cycleCount=this.cycles-1),this.startTime-=t,t<0&&(i=!0),this.active=!0,this.fn(i),this.active=!1,"function"==typeof this.onSeekFor&&this.onSeekFor(),e&&this.resume(),this};let ga=[],ya=!0;ye({name:"coreTickersAnimation",order:0,fn:function(){if(ya){ya=!1;let t=[].concat(ga),e=Math.floor,i=[];t.forEach((t=>{let s=n[t];if(ut(s)){let t=e(s.order)||0;i[t]||(i[t]=[]),i[t].push(s.name)}})),ga=i.reduce(((t,e)=>t.concat(e)),[])}for(let t,e,i=0,s=ga.length;i{if(Array.isArray(t))i=t[0],s=t[1];else{if(!dt(t,t.x,t.y))return!1;i=t.x,s=t.y}if(!i.toFixed||!s.toFixed||isNaN(i)||isNaN(s))return!1;let e=is(r).vectorSubtract(t);return e.getMagnitude()t.name))),Array.isArray(this.definitions)&&(t.definitions=this.definitions.map((t=>{let e={};if(e.attribute=t.attribute,e.start=t.start,e.end=t.end,t.engine&&t.engine.substring)e.engine=t.engine.substring;else if(ut(t.engine)&&null!==t.engine){let i=this.stringifyFunction(t.engine);i&&(e.engine=i,e.engineIsFunction=!0)}return e}))),t},Ca.postCloneAction=function(t,e){if(e.useNewTicker){let i=n[this.ticker];ut(e.cycles)?t.cycles=e.cycles:t.cycles=i?i.cycles:1;let s=n[t.ticker];s.cycles=t.cycles,ut(e.duration)&&(t.duration=e.duration,t.calculateEffectiveDuration(),s&&s.recalculateEffectiveDuration())}return Array.isArray(t.definitions)&&t.definitions.forEach(((t,e)=>{t.engineIsFunction&&(t.engine=this.definitions[e].engine)})),t};let wa=Ca.getters,Pa=Ca.setters;wa.definitions=function(){return[].concat(this.definitions)},Pa.definitions=function(t){this.definitions=[].concat(t),this.setDefinitionsValues()},Pa.commenceAction=function(t){this.commenceAction=t,"function"!=typeof this.commenceAction&&(this.commenceAction=Z)},Pa.completeAction=function(t){this.completeAction=t,"function"!=typeof this.completeAction&&(this.completeAction=Z)},Ca.set=function(t=q){let e,i,s,n,r=this.setters,o=Object.keys(t),a=this.defs,l=!!ut(t.ticker)&&this.ticker;for(i=0,s=o.length;ie?r=1:ni&&(r=1)),a?r&&r==this.status||(this.status=r,this.doSimpleUpdate(t),t.next||(this.status=l?-1:1)):r!=this.status&&(this.status=r,this.doSimpleUpdate(t),t.next||(this.status=l?-1:1)),t.willLoop&&(this.reverseOnCycleEnd?this.reversed=!l:this.status=-1)},Ca.doSimpleUpdate=function(t=q){let e,i,s,n,r,o,a,l,h,c,u,d,f,p,m=this.effectiveTime,g=this.engineActions,y=this.effectiveDuration,b=this.status,S=this.definitions,k=this.targets,A=this.action,O=this.setObj||{},v=Math.round;for(e=this.reversed?t.reverseTick-m:t.tick-m,o=y&&!b?e/y:b>0?1:0,i=0,s=S.length;i(t=parseFloat(t),nt(t)||(t=0),nt(e)||(e=0),parseFloat(t.toFixed(e))),Wheel=function(t=q){return pt(t.dimensions,t.width,t.height,t.radius)||(t.radius=5),this.entityInit(t),this};let Fa=Wheel.prototype=Object.create(Object.prototype);Fa.type="Wheel",Fa.lib="entity",Fa.isArtefact=!0,Fa.isAsset=!1,Fa=me(Fa),Fa=tn(Fa);Fa.defs=at(Fa.defs,{radius:5,startAngle:0,endAngle:360,clockwise:!0,includeCenter:!1,closed:!0}),Fa.getters;let Ea=Fa.setters,Ma=Fa.deltaSetters;Ea.width=function(t){if(null!=t){let e=this.dimensions;e[0]=e[1]=t,this.dimensionsHelper()}},Ma.width=function(t){let e=this.dimensions;e[0]=e[1]=addStrings(e[0],t),this.dimensionsHelper()},Ea.height=function(t){if(null!=t){let e=this.dimensions;e[0]=e[1]=t,this.dimensionsHelper()}},Ma.height=function(t){let e=this.dimensions;e[0]=e[1]=addStrings(e[0],t),this.dimensionsHelper()},Ea.dimensions=function(t,e){this.setCoordinateHelper("dimensions",t,e),this.dimensionsHelper()},Ma.dimensions=function(t,e){this.setDeltaCoordinateHelper("dimensions",t,e),this.dimensionsHelper()},Ea.radius=function(t){this.radius=t,this.radiusHelper()},Ma.radius=function(t){this.radius=addStrings(this.radius,t),this.radiusHelper()},Ea.startAngle=function(t){this.startAngle=Ra(t,4),this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},Ma.startAngle=function(t){this.startAngle+=Ra(t,4),this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},Ea.endAngle=function(t){this.endAngle=Ra(t,4),this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},Ma.endAngle=function(t){this.endAngle+=Ra(t,4),this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},Ea.closed=function(t){ut(t)&&(this.closed=!!t,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0)},Ea.includeCenter=function(t){ut(t)&&(this.includeCenter=!!t,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0)},Ea.clockwise=function(t){ut(t)&&(this.clockwise=!!t,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0)},Fa.dimensionsHelper=function(){let t=this.dimensions[0];t.substring?this.radius=parseFloat(t)/2+"%":this.radius=t/2,this.dirtyDimensions=!0,this.dirtyFilterIdentifier=!0},Fa.radiusHelper=function(){let t=this.radius,e=this.dimensions;t.substring?e[0]=e[1]=2*parseFloat(t)+"%":e[0]=e[1]=2*t,this.dirtyDimensions=!0,this.dirtyFilterIdentifier=!0},Fa.cleanDimensionsAdditionalActions=function(){let t=this.radius,e=this.currentDimensions,i=t.substring?parseFloat(t)/100*e[0]:t;e[0]!==2*i?(e[1]=e[0],this.currentRadius=e[0]/2):this.currentRadius=i},Fa.cleanPathObject=function(){if(this.dirtyPathObject=!1,!this.noPathUpdates||!this.pathObject){let t=this.pathObject=new Path2D,e=this.currentStampHandlePosition,i=this.currentScale,s=this.currentRadius*i,n=s-e[0]*i,r=s-e[1]*i,o=this.startAngle*gt,a=this.endAngle*gt;t.arc(n,r,s,o,a,!this.clockwise),this.includeCenter?(t.lineTo(n,r),t.closePath()):this.closed&&t.closePath()}};const Ha=function(t){return!!t&&new Wheel(t)};H.Wheel=Wheel;const World=function(t=q){this.makeName(t.name),this.register(),this.set(this.defs);let e=t.keytypes||{};return e.gravity||(e.gravity="Vector"),t.gravity||(t.gravity=[0,9.81,0]),t.userAttributes&&t.userAttributes.forEach((t=>{this.addAttribute(t),t.type&&(e[t.key]=t.type)})),this.initializeAttributes(e),this.set(t),this};let Ia=World.prototype=Object.create(Object.prototype);Ia.type="World",Ia.lib="world",Ia.isArtefact=!1,Ia.isAsset=!1,Ia=me(Ia);Ia.defs=at(Ia.defs,{gravity:null,tickMultiplier:1,keytypes:null}),Ia.kill=function(){return this.deregister(),!0};let Ba=Ia.getters,Ta=Ia.setters,La=Ia.deltaSetters;Ta.gravityX=function(t){this.gravity&&ut(t)&&this.gravity.setX(t)},Ta.gravityY=function(t){this.gravity&&ut(t)&&this.gravity.setY(t)},Ta.gravityZ=function(t){this.gravity&&ut(t)&&this.gravity.setZ(t)},Ta.gravity=function(t){this.gravity&&ut(t)&&this.gravity.set(t)},Ia.addAttribute=function(t=q){let{key:e,defaultValue:i,setter:s,deltaSetter:n,getter:r}=t;return e&&e.substring&&(this.defs[e]=ut(i)?i:null,this[e]=ut(i)?i:null,st(s)&&(Ta[e]=s),st(n)&&(La[e]=n),st(r)&&(Ba[e]=r)),this},Ia.removeAttribute=function(t){return t&&t.substring&&(delete this.defs[t],delete this[t],delete Ba[t],delete Ta[t],delete La[t]),this},Ia.initializeAttributes=function(t){for(let[e,i]of Object.entries(t))switch(i){case"Quaternion":this[e]=hs();break;case"Vector":this[e]=ns();break;case"Coordinate":this[e]=mi()}};const $a=function(t){return!!t&&new World(t)};H.World=World;const ja=Bs;"undefined"!=typeof window&&Bs();export{Os as addCanvas,xt as addListener,Rt as addNativeListener,Hs as addStack,$s as clear,js as compile,Fi as createImageFromCell,Mi as createImageFromEntity,Ei as createImageFromGroup,Se as currentCorePosition,pe as forceUpdate,bs as getCanvas,$t as getIgnorePixelRatio,Tt as getPixelRatio,Is as getStack,Fe as getTouchActionChoke,Ri as importDomImage,Zr as importDomVideo,Di as importImage,_r as importMediaStream,Jr as importSprite,Ur as importVideo,ja as init,I as library,Js as makeAction,ye as makeAnimation,vt as makeAnimationObserver,gn as makeBezier,sn as makeBlock,kn as makeCog,Ue as makeColor,Pn as makeConicGradient,En as makeCrescent,Hn as makeDragZone,Cs as makeElement,Un as makeEmitter,er as makeFilter,sr as makeForce,qn as makeGradient,ar as makeGrid,$i as makeGroup,hr as makeKeyboardZone,ur as makeLine,mr as makeLineSpiral,kr as makeLoom,xr as makeMesh,Er as makeNet,Tr as makeNoise,Br as makeNoiseAsset,Nr as makeOval,so as makePattern,go as makePhrase,Ao as makePicture,Co as makePolygon,Fo as makePolyline,Bo as makeQuadratic,Xo as makeRadialGradient,Wo as makeRawAsset,_o as makeReactionDiffusionAsset,Qo as makeRectangle,Gs as makeRender,ta as makeShape,Ws as makeSnippet,na as makeSpiral,Pr as makeSpring,la as makeStar,da as makeTetragon,Aa as makeTicker,xa as makeTracer,Da as makeTween,$r as makeUpdater,Ha as makeWheel,$a as makeWorld,Lr as observeAndUpdate,pi as releaseCoordinate,ls as releaseQuaternion,ss as releaseVector,Ct as removeListener,Ft as removeNativeListener,Ys as render,fi as requestCoordinate,as as requestQuaternion,is as requestVector,si as seededRandomNumberGenerator,As as setCurrentCanvas,ki as setFilterMemoizationChoke,jt as setIgnorePixelRatio,Ht as setPixelRatioChangeAction,Ee as setTouchActionChoke,Xs as show,Y as startCoreAnimationLoop,Te as startCoreListeners,N as stopCoreAnimationLoop,Le as stopCoreListeners};
+const t={},e=[],i={},s=[],n={},r=[],o={},a=[],l={},h=[],c={},u={},d=[],f={},p={},m=[],g={},y=[],b={},S={},k=[],A={},O=[],v={},x=[],C={},w={},P=[],D={},R=[],F={};function E(c=""){const u=function(t,e,i=!1){t.forEach((t=>{const s=e[t];s&&s.kill&&s.kill(i)}))};if(c){u(a.filter((t=>0===t.indexOf(c))),o);u(h.filter((t=>0===t.indexOf(c))),l);u(y.filter((t=>0===t.indexOf(c))),g,!0);u(R.filter((t=>0===t.indexOf(c))),D);u(P.filter((t=>0===t.indexOf(c))),w);u(s.filter((t=>0===t.indexOf(c))),i);u(r.filter((t=>0===t.indexOf(c))),n);u(m.filter((t=>0===t.indexOf(c))),p);u(e.filter((t=>0===t.indexOf(c))),t);u(k.filter((t=>0===t.indexOf(c))),S);u(O.filter((t=>0===t.indexOf(c))),A);u(x.filter((t=>0===t.indexOf(c))),v)}}const M={DEFAULTS:{defaults:!0},b:{weight:"bold"},"/b":{weight:"normal"},strong:{weight:"bold"},"/strong":{weight:"normal"},BOLD:{weight:"bold"},"/BOLD":{weight:"normal"},i:{style:"italic"},"/i":{style:"normal"},em:{style:"italic"},"/em":{style:"normal"},ITALIC:{style:"italic"},"/ITALIC":{style:"normal"},u:{underline:!0},"/u":{underline:!1},UNDERLINE:{underline:!0},"/UNDERLINE":{underline:!1},OVERLINE:{overline:!0},"/OVERLINE":{overline:!1},"SMALL-CAPS":{variant:"small-caps"},"/SMALL-CAPS":{variant:"normal"},HIGHLIGHT:{highlight:!0},"/HIGHLIGHT":{highlight:!1}},H={};var I=Object.freeze({__proto__:null,version:"8.10.0",anchor:t,anchornames:e,animation:i,animationnames:s,animationtickers:n,animationtickersnames:r,artefact:o,artefactnames:a,asset:l,assetnames:h,canvas:c,canvasnames:[],cell:u,cellnames:d,element:{},elementnames:[],entity:f,entitynames:[],filter:p,filternames:m,fontattribute:{},fontattributenames:[],group:g,groupnames:y,palette:{},palettenames:[],particle:b,particlenames:[],force:S,forcenames:k,spring:A,springnames:O,world:v,worldnames:x,stack:C,stacknames:[],tween:w,tweennames:P,styles:D,stylesnames:R,unstackedelement:F,unstackedelementnames:[],purge:E,sectionClasses:M,constructors:H});let B=!1,T=!0,L=[],$=[];const j=function(){T=!0},X=function(){let t,e;for(T&&function(){if(T){T=!1;let t,e,s,n,r,o=Math.floor,a=[];for(s=0,n=$.length;st.concat(e)),[])}}(),t=0,e=L.length;tX()))},Y=function(){B=!0,X()},N=function(){B=!1},G=(t,e)=>{if(!ut(e))throw new Error(`core/utilities addStrings() error - no delta argument supplied ${t}, ${e}`);if(null!=e){"left"===t||"top"===t?t="0%":"right"===t||"bottom"===t?t="100%":"center"===t&&(t="50%");let i=!(!t.substring&&!e.substring);return nt(t)?t+=nt(e)?e:parseFloat(e):t=parseFloat(t)+(nt(e)?e:parseFloat(e)),i?t+"%":t}return t},z=t=>{let e,i,s;if(!ut(t))throw new Error("core/utilities convertTime() error - no argument supplied");if(nt(t))return["ms",t];if(!t.substring)throw new Error(`core/utilities convertTime() error - invalid argument: ${t}`);if(e=t.match(/^\d+\.?\d*(\D*)/),i=e[1].toLowerCase?e[1].toLowerCase():"ms",s=parseFloat(t),!nt(s))throw new Error(`core/base error - convertTime() argument converts to NaN: ${t}`);switch(i){case"s":s*=1e3;break;case"%":break;default:i="ms"}return[i,s]},W=t=>!t.toFixed||isNaN(t)?(console.log(`${t} is not a valid number`),t):((t%=360)<0&&(t+=360),t),V=t=>t.toFixed?0==t?t:isNaN(t)?0:t<-1e-6||t>1e-6?t:0:t,Z=()=>{},_=function(t){return t},U=function(){return this},K=()=>Promise.resolve(!0),q={},Q=()=>performance.now().toString(36)+Math.random().toString(36).substr(2),J=function(t,e,i){return e+t*(i-e)},tt=t=>"boolean"==typeof t,et=t=>"[object HTMLCanvasElement]"===Object.prototype.toString.call(t),it=t=>!!(t&&t.querySelector&&t.dispatchEvent),st=t=>"function"==typeof t,nt=t=>!(null==t||!t.toFixed||Number.isNaN(t)),rt=t=>"[object Object]"===Object.prototype.toString.call(t),ot=t=>!(!t||!t.type||"Quaternion"!==t.type),at=(t,e)=>{if(!rt(t)||!rt(e))throw new Error(`core/utilities mergeOver() error - insufficient arguments supplied ${t}, ${e}`);for(let i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t},lt=(t,e)=>{if(!rt(t)||!rt(e))throw new Error(`core/utilities mergeDiscard() error - insufficient arguments supplied ${t}, ${e}`);return Object.entries(e).forEach((([i,s])=>{null===s?delete t[i]:t[i]=e[i]})),t},ht=(t,e)=>{if(!dt(t,e))throw new Error(`core/utilities pushUnique() error - insufficient arguments supplied ${t}, ${e}`);if(!Array.isArray(t))throw new Error(`core/utilities pushUnique() error - argument not an array ${t}`);return Array.isArray(e)?e.forEach((e=>ht(t,e))):t.indexOf(e)<0&&t.push(e),t},ct=(t,e)=>{if(!dt(t,e))throw new Error(`core/utilities removeItem() error - insufficient arguments supplied ${t}, ${e}`);if(!Array.isArray(t))throw new Error(`core/utilities removeItem() error - argument not an array ${t}`);let i=t.indexOf(e);return i>=0&&t.splice(i,1),t},ut=t=>void 0!==t,dt=(...t)=>t.every((t=>void 0!==t)),ft=(...t)=>t.find((t=>void 0!==t)),pt=(...t)=>!!t.find((t=>void 0!==t)),mt={out:t=>1-Math.cos(t*Math.PI/2),in:t=>Math.sin(t*Math.PI/2),easeIn:t=>{let e=1-t;return 1-e*e},easeIn3:t=>{let e=1-t;return 1-e*e*e},easeIn4:t=>{let e=1-t;return 1-e*e*e*e},easeIn5:t=>{let e=1-t;return 1-e*e*e*e*e},easeOutIn:t=>t<.5?2*t*t:1-Math.pow(-2*t+2,2)/2,easeOutIn3:t=>t<.5?4*t*t*t:1-Math.pow(-2*t+2,3)/2,easeOutIn4:t=>t<.5?8*t*t*t*t:1-Math.pow(-2*t+2,4)/2,easeOutIn5:t=>t<.5?16*t*t*t*t*t:1-Math.pow(-2*t+2,5)/2,easeInOut:t=>{const e=.5-t,i=t-.5;return t<.5?.5+-2*e*e:.5+Math.pow(2*i,2)/2},easeInOut3:t=>{const e=.5-t,i=t-.5;return t<.5?.5+-4*e*e*e:.5+Math.pow(2*i,3)/2},easeInOut4:t=>{const e=.5-t,i=t-.5;return t<.5?.5+-8*e*e*e*e:.5+Math.pow(2*i,4)/2},easeInOut5:t=>{const e=.5-t,i=t-.5;return t<.5?.5+-16*e*e*e*e*e:.5+Math.pow(2*i,5)/2},easeOut:t=>t*t,easeOut3:t=>t*t*t,easeOut4:t=>t*t*t*t,easeOut5:t=>t*t*t*t*t,none:t=>t,linear:t=>t,cosine:t=>.5*(1+Math.cos((1-t)*Math.PI)),hermite:t=>t*t*(2*-t+3),quintic:t=>t*t*t*(t*(6*t-15)+10),easeOutSine:t=>1-Math.cos(t*Math.PI/2),easeInSine:t=>Math.sin(t*Math.PI/2),easeOutInSine:t=>-(Math.cos(Math.PI*t)-1)/2,easeOutQuad:t=>t*t,easeInQuad:t=>1-(1-t)*(1-t),easeOutInQuad:t=>t<.5?2*t*t:1-Math.pow(-2*t+2,2)/2,easeOutCubic:t=>t*t*t,easeInCubic:t=>1-Math.pow(1-t,3),easeOutInCubic:t=>t<.5?4*t*t*t:1-Math.pow(-2*t+2,3)/2,easeOutQuart:t=>t*t*t*t,easeInQuart:t=>1-Math.pow(1-t,4),easeOutInQuart:t=>t<.5?8*t*t*t*t:1-Math.pow(-2*t+2,4)/2,easeOutQuint:t=>t*t*t*t*t,easeInQuint:t=>1-Math.pow(1-t,5),easeOutInQuint:t=>t<.5?16*t*t*t*t*t:1-Math.pow(-2*t+2,5)/2,easeOutExpo:t=>0===t?0:Math.pow(2,10*t-10),easeInExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeOutInExpo:t=>0===t||1===t?t:t<.5?Math.pow(2,20*t-10)/2:(2-Math.pow(2,-20*t+10))/2,easeOutCirc:t=>1-Math.sqrt(1-Math.pow(t,2)),easeInCirc:t=>Math.sqrt(1-Math.pow(t-1,2)),easeOutInCirc:t=>t<.5?(1-Math.sqrt(1-Math.pow(2*t,2)))/2:(Math.sqrt(1-Math.pow(-2*t+2,2))+1)/2,easeOutBack:t=>2.70158*t*t*t-1.70158*t*t,easeInBack:t=>1+2.70158*Math.pow(t-1,3)+1.70158*Math.pow(t-1,2),easeOutInBack:t=>{const e=2.5949095;return t<.5?Math.pow(2*t,2)*(7.189819*t-e)/2:(Math.pow(2*t-2,2)*((e+1)*(2*t-2)+e)+2)/2},easeOutElastic:t=>{const e=2*Math.PI/3;return 0===t||1===t?t:-Math.pow(2,10*t-10)*Math.sin((10*t-10.75)*e)},easeInElastic:t=>{const e=2*Math.PI/3;return 0===t||1===t?t:Math.pow(2,-10*t)*Math.sin((10*t-.75)*e)+1},easeOutInElastic:t=>{const e=2*Math.PI/4.5;return 0===t||1===t?t:t<.5?-Math.pow(2,20*t-10)*Math.sin((20*t-11.125)*e)/2:Math.pow(2,-20*t+10)*Math.sin((20*t-11.125)*e)/2+1},easeOutBounce:t=>{const e=7.5625,i=2.75;return(t=1-t)<1/i?1-e*t*t:t<2/i?1-(e*(t-=1.5/i)*t+.75):t<2.5/i?1-(e*(t-=2.25/i)*t+.9375):1-(e*(t-=2.625/i)*t+.984375)},easeInBounce:t=>{const e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeOutInBounce:t=>{const e=7.5625,i=2.75;let s;return t<.5?(s=(t=1-2*t)<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375,(1-s)/2):(s=(t=2*t-1)<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375,(1+s)/2)}},gt=Math.PI/180,yt=new Set(["all","background","backgroundAttachment","backgroundBlendMode","backgroundClip","backgroundColor","backgroundOrigin","backgroundPosition","backgroundRepeat","border","borderBottom","borderBottomColor","borderBottomStyle","borderBottomWidth","borderCollapse","borderColor","borderLeft","borderLeftColor","borderLeftStyle","borderLeftWidth","borderRight","borderRightColor","borderRightStyle","borderRightWidth","borderSpacing","borderStyle","borderTop","borderTopColor","borderTopStyle","borderTopWidth","borderWidth","clear","color","columns","content","counterIncrement","counterReset","cursor","direction","display","emptyCells","float","font","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontSynthesis","fontVariant","fontVariantAlternates","fontVariantCaps","fontVariantEastAsian","fontVariantLigatures","fontVariantNumeric","fontVariantPosition","fontWeight","grid","gridArea","gridAutoColumns","gridAutoFlow","gridAutoPosition","gridAutoRows","gridColumn","gridColumnStart","gridColumnEnd","gridRow","gridRowStart","gridRowEnd","gridTemplate","gridTemplateAreas","gridTemplateRows","gridTemplateColumns","imageResolution","imeMode","inherit","inlineSize","isolation","letterSpacing","lineBreak","lineHeight","listStyle","listStyleImage","listStylePosition","listStyleType","margin","marginBlockStart","marginBlockEnd","marginInlineStart","marginInlineEnd","marginBottom","marginLeft","marginRight","marginTop","marks","mask","maskType","maxWidth","maxHeight","maxBlockSize","maxInlineSize","maxZoom","minWidth","minHeight","minBlockSize","minInlineSize","minZoom","mixBlendMode","objectFit","objectPosition","offsetBlockStart","offsetBlockEnd","offsetInlineStart","offsetInlineEnd","orphans","overflow","overflowWrap","overflowX","overflowY","pad","padding","paddingBlockStart","paddingBlockEnd","paddingInlineStart","paddingInlineEnd","paddingBottom","paddingLeft","paddingRight","paddingTop","pageBreakAfter","pageBreakBefore","pageBreakInside","pointerEvents","position","prefix","quotes","rubyAlign","rubyMerge","rubyPosition","scrollBehavior","scrollSnapCoordinate","scrollSnapDestination","scrollSnapPointsX","scrollSnapPointsY","scrollSnapType","scrollSnapTypeX","scrollSnapTypeY","shapeImageThreshold","shapeMargin","shapeOutside","tableLayout","textAlign","textDecoration","textIndent","textOrientation","textOverflow","textRendering","textShadow","textTransform","textUnderlinePosition","unicodeRange","unset","verticalAlign","widows","willChange","wordBreak","wordSpacing","wordWrap","zIndex"]),bt=new Set(["alignContent","alignItems","alignSelf","animation","animationDelay","animationDirection","animationDuration","animationFillMode","animationIterationCount","animationName","animationPlayState","animationTimingFunction","backfaceVisibility","backgroundImage","backgroundSize","borderBottomLeftRadius","borderBottomRightRadius","borderImage","borderImageOutset","borderImageRepeat","borderImageSlice","borderImageSource","borderImageWidth","borderRadius","borderTopLeftRadius","borderTopRightRadius","boxDecorationBreak","boxShadow","boxSizing","columnCount","columnFill","columnGap","columnRule","columnRuleColor","columnRuleStyle","columnRuleWidth","columnSpan","columnWidth","filter","flex","flexBasis","flexDirection","flexFlow","flexGrow","flexShrink","flexWrap","fontFeatureSettings","fontKerning","fontLanguageOverride","hyphens","imageRendering","imageOrientation","initial","justifyContent","linearGradient","opacity","order","orientation","outline","outlineColor","outlineOffset","outlineStyle","outlineWidth","resize","tabSize","textAlignLast","textCombineUpright","textDecorationColor","textDecorationLine","textDecorationStyle","touchAction","transformStyle","transition","transitionDelay","transitionDuration","transitionProperty","transitionTimingFunction","unicodeBidi","whiteSpace","writingMode"]),St=[];let kt=!0;const At=[],Ot=()=>{kt=!0},vt=function(t,e,i=q){if("function"==typeof window.IntersectionObserver&&t&&t.run){let s=new IntersectionObserver(((e,i)=>{let s,n,r;for(s=0,n=e.length;sMt=t,It=function(){let t=[];return(window.opr&&opr.addons||window.opera||navigator.userAgent.indexOf(" OPR/")>=0)&&t.push("old-opera"),"undefined"!=typeof InstallTrigger?t.push("firefox"):(/constructor/i.test(window.HTMLElement)||"[object SafariRemoteNotification]"===(!window.safari||"undefined"!=typeof safari&&safari.pushNotification).toString())&&t.push("safari"),document.documentMode&&t.push("internet-explorer"),t.indexOf("internet-explorer")<0&&window.StyleMedia&&t.push("edge"),window.chrome&&t.push("chrome"),(t.indexOf("chrome")>=0||t.indexOf("old-opera")>=0)&&window.CSS&&t.push("blink"),t}();let Bt=0;const Tt=()=>Bt;let Lt=!1;const $t=()=>Lt,jt=t=>Lt=t,Xt=()=>{Bt=window.devicePixelRatio;for(const[t,e]of Object.entries(c))e.dirtyDimensions=!0;for(const[t,e]of Object.entries(u))e.dirtyDimensions=!0;for(const[t,e]of Object.entries(f))e.dirtyHost=!0;Lt||Mt(),It.indexOf("safari")<0&&matchMedia(`(resolution: ${Bt}dppx)`).addEventListener("change",Xt,{once:!0})};Xt();const Yt=[];let Nt=!1;const Gt=function(t=""){if(Nt||t){let e,i,s,n,r,a,l,h,c,u,d,f,p,m,g,y,b,S;t?e=[t]:(Nt=!1,e=[].concat(Yt),Yt.length=0);let k=$t(),A=Tt();for(i=0,s=e.length;iVt,_t=t=>Vt=t;let Ut=!1;const Kt=()=>Ut,qt=t=>Ut=t;let Qt=!1;const Jt=()=>Qt,te=t=>Qt=t;let ee=!1;let ie=!1;const se=()=>ie,ne=t=>ie=t;let re=!1;const oe=()=>re,ae=t=>re=t;let le=!1;const he=()=>le,ce=t=>le=t;let ue=!1;const de=()=>ue,fe=t=>ue=t,pe=function(){Ut=!0,Qt=!0};function me(t=q){t.defs={},t.getters={},t.setters={},t.deltaSetters={},t.get=function(t){if(ut(t)){const e=this.getters[t];if(e)return e.call(this);{const e=this.defs[t];if(void 0!==e){const i=this[t];return void 0!==i?i:e}}}return null},t.set=function(t=q){const e=Object.keys(t),i=e.length;if(i){const s=this.setters,n=this.defs;let r,o,a,l;for(o=0;o{let c,u=!0;if(i.indexOf(t)<0&&(u=!1),u&&s.indexOf(t)>=0&&(u=!1),u&&(c=n.some((e=>new RegExp(e).test(t))),c&&(u=!1)),u)if(a.indexOf(t)>=0){if(ut(e)&&null!==e){let i=this.stringifyFunction(e);i&&i.length&&(h[t]=i)}}else o.indexOf(t)>=0&&this[t]&&this[t].name?h[t]=this[t].name:r.indexOf(t)>=0?(l.indexOf(t)>=0||e[0]||e[1])&&(h[t]=e):(c=this.processPacketOut(t,e,l),c&&(h[t]=e))}),this),h=this.finalizePacketOut(h,t),JSON.stringify([this.name,this.type,this.lib,h])},t.stringifyFunction=function(t){const e=t.toString().match(/\(([\s\S]*?)\)[\s\S]*?\{([\s\S]*)\}/),i=e[1],s=e[2];return!!dt(i,s)&&`${i}~~~${s}`},t.processPacketOut=function(t,e,i){let s=!0;return i.indexOf(t)<0&&e===this.defs[t]&&(s=!1),s},t.finalizePacketOut=function(t,e){return t},t.importPacket=function(t){const e=this,i=function(t){return new Promise(((i,s)=>{let n;t.substring||s(new Error("Packet url supplied for import is not a string")),"["===t[0]?(n=e.actionPacket(t),n&&n.lib?i(n):s(n)):t.indexOf('"name":')>=0?s(new Error("Bad packet supplied for import")):fetch(t).then((t=>{if(!t.ok)throw new Error(`Packet import from server failed - ${t.status}: ${t.statusText} - ${t.url}`);return t.text()})).then((t=>{if(n=e.actionPacket(t),!n||!n.lib)throw n;i(n)})).catch((t=>s(t)))}))};if(Array.isArray(t)){const e=[];return t.forEach((t=>e.push(i(t)))),new Promise(((t,i)=>{Promise.all(e).then((e=>t(e))).catch((t=>i(t)))}))}if(t.substring)return i(t);Promise.reject(new Error("Argument supplied for packet import is not a string or array of strings"))},t.actionPacketExclusions=["Image","Sprite","Video","Canvas","Stack"],t.actionPacket=function(t){try{if(t&&t.substring){if("["===t[0]){let e,i,s,n;try{[e,i,s,n]=JSON.parse(t)}catch(t){throw new Error(`Failed to process packet due to JSON parsing error - ${t.message}`)}if(dt(e,i,s,n)){if(this.actionPacketExclusions.indexOf(i)>=0)throw new Error("Failed to process packet - Stacks, Canvases and visual assets are excluded from the packet system");let t=I[s][e];if(t)t.set(n);else{if(n.outerHTML&&n.host){const t=document.querySelector(`#${n.host}`);if(t){const i=document.createElement("div");i.innerHTML=n.outerHTML;const s=i.firstElementChild;s&&(s.id=e,t.appendChild(s),n.domElement=s)}}if(t=new H[i](n),!t)throw new Error("Failed to create Scrawl-canvas object from supplied packet")}if(t.packetFunctions.forEach((e=>this.actionPacketFunctions(t,e))),n.anchor&&t.anchor&&t.anchor.packetFunctions.forEach((e=>{t.anchor[e]=n.anchor[e],this.actionPacketFunctions(t.anchor,e),t.anchor.build()})),n.glyphStyles&&t.glyphStyles&&n.glyphStyles.forEach(((e,i)=>{rt(e)&&t.setGlyphStyles(e,i)})),t)return t;throw new Error("Failed to process supplied packet")}throw new Error("Failed to process packet - JSON string holds incomplete data")}throw new Error("Failed to process packet - JSON string does not represent an array")}throw new Error("Failed to process packet - not a JSON string")}catch(t){return console.log(t),t}},t.actionPacketFunctions=function(t,e){const i=t[e];if(ut(i)&&null!==i&&i.substring)if("~~~"===i)t[e]=Z;else{let s,n,r;[s,n]=i.split("~~~"),s=s.split(","),s=s.map((t=>t.trim())),n.indexOf("[native code]")<0?(r=new Function(...s,n),t[e]=r.bind(t)):t[e]=Z}},t.clone=function(t=q){const e=this.name;let i,s;this.name=t.name||"",t.useNewTicker?(s=this.ticker,this.ticker=null,i=this.saveAsPacket(),this.ticker=s):i=this.saveAsPacket(),this.name=e;let n=this.actionPacket(i);return this.packetFunctions.forEach((t=>{this[t]&&(n[t]=this[t])})),n=this.postCloneAction(n,t),n.set(t),n},t.postCloneAction=function(t,e){return t},t.kill=function(){return this.deregister()},t.makeName=function(t){return t&&t.substring&&I[`${this.lib}names`].indexOf(t)<0?this.name=t:this.name=Q(),this},t.register=function(){if(!ut(this.name))throw new Error(`core/base error - register() name not set: ${this}`);const t=I[`${this.lib}names`],e=I[this.lib];return this.isArtefact&&(ht(a,this.name),o[this.name]=this),this.isAsset&&(ht(h,this.name),l[this.name]=this),ht(t,this.name),e[this.name]=this,this},t.deregister=function(){if(!ut(this.name))throw new Error(`core/base error - deregister() name not set: ${this}`);const t=I[`${this.lib}names`],e=I[this.lib];return this.isArtefact&&(ct(a,this.name),delete o[this.name]),this.isAsset&&(ct(h,this.name),delete l[this.name]),ct(t,this.name),delete e[this.name],this},t}const Animation=function(t=q){return this.makeName(t.name),this.order=ut(t.order)?t.order:this.defs.order,this.fn=t.fn||K,this.onRun=t.onRun||Z,this.onHalt=t.onHalt||Z,this.onKill=t.onKill||Z,this.register(),t.delay||this.run(),this};let ge=Animation.prototype=Object.create(Object.prototype);ge.type="Animation",ge.lib="animation",ge.isArtefact=!1,ge.isAsset=!1,ge=me(ge);ge.defs=at(ge.defs,{order:1,fn:null,onRun:null,onHalt:null,onKill:null}),ge.stringifyFunction=Z,ge.processPacketOut=Z,ge.finalizePacketOut=Z,ge.saveAsPacket=function(){return`[${this.name}, ${this.type}, ${this.lib}, {}]`},ge.clone=U,ge.run=function(){return this.onRun(),ht($,this.name),j(),setTimeout((()=>pe()),20),this},ge.isRunning=function(){return $.indexOf(this.name)>=0},ge.halt=function(){return this.onHalt(),ct($,this.name),j(),this},ge.kill=function(){return this.onKill(),ct($,this.name),j(),this.deregister(),!0};const ye=function(t){return!!t&&new Animation(t)};H.Animation=Animation;const be=[],Se={x:0,y:0,scrollX:0,scrollY:0,w:0,h:0,type:"mouse",prefersReducedMotion:!1,prefersDarkColorScheme:!1,prefersReduceTransparency:!1,prefersContrast:!1,prefersReduceData:!1,rawTouches:[]},ke=window.matchMedia("(prefers-contrast: more)");ke.addEventListener("change",(()=>{let t=ke.matches;Se.prefersContrast!==t&&(Se.prefersContrast=t,ee=!0)})),Se.prefersContrast=ke.matches;const Ae=window.matchMedia("(prefers-reduced-motion: reduce)");Ae.addEventListener("change",(()=>{let t=Ae.matches;Se.prefersReducedMotion!==t&&(Se.prefersReducedMotion=t,ne(!0))})),Se.prefersReducedMotion=Ae.matches;const Oe=window.matchMedia("(prefers-color-scheme: dark)");Oe.addEventListener("change",(()=>{let t=Oe.matches;Se.prefersDarkColorScheme!==t&&(Se.prefersDarkColorScheme=t,ae(!0))})),Se.prefersDarkColorScheme=Oe.matches;const ve=window.matchMedia("(prefers-reduced-transparency: reduce)");ve.addEventListener("change",(()=>{let t=ve.matches;Se.prefersReduceTransparency!==t&&(Se.prefersReduceTransparency=t,ce(!0))})),Se.prefersReduceTransparency=ve.matches;const xe=window.matchMedia("(prefers-reduced-data: reduce)");xe.addEventListener("change",(()=>{let t=xe.matches;Se.prefersReduceData!==t&&(Se.prefersReduceData=t,fe(!0))})),Se.prefersReduceData=xe.matches;const Ce=function(t){let e=document.documentElement.clientWidth,i=document.documentElement.clientHeight;Se.w===e&&Se.h===i||(Se.w=e,Se.h=i,qt(!0),te(!0))},we=function(t){let e=window.pageXOffset,i=window.pageYOffset;Se.scrollX===e&&Se.scrollY===i||(Se.x+=e-Se.scrollX,Se.y+=i-Se.scrollY,Se.scrollX=e,Se.scrollY=i,qt(!0))},Pe=function(t){let e=Math.round(t.pageX),i=Math.round(t.pageY);Se.x===e&&Se.y===i||(Se.type=navigator.pointerEnabled?"pointer":"mouse",Se.x=e,Se.y=i,qt(!0))};let De=0,Re=16;const Fe=function(){return Re},Ee=function(t){t&&t.toFixed&&!isNaN(t)&&(Re=t)},Me=function(t,e=!0){if(Se.rawTouches.length=0,t.touches&&t.touches.length){Se.rawTouches.push(...t.touches);const e=t.touches[0],i=Math.round(e.pageX),s=Math.round(e.pageY);Se.x===i&&Se.y===s||(Se.type="touch",Se.x=i,Se.y=s)}else Se.type="touch",e&&(Se.x=0,Se.y=0);const i=Date.now();i>De+Re&&(De=i,He())},He=function(){for(let t=0,e=be.length;te.activePadding&&t.x0+e.activePadding&&t.y1||t.normY<0||t.normY>1)&&(t.active=!1));const d=Se.rawTouches;if(d.length){t.touches||(t.touches=[]),t.touches.length=0;for(let e=0,i=d.length;e{let s=i.state;if(s){let e=s.fillStyle,i=s.strokeStyle,n=s.shadowColor;rt(e)&&e.name===t&&(s.fillStyle=s.defs.fillStyle),rt(i)&&i.name===t&&(s.strokeStyle=s.defs.strokeStyle),rt(n)&&n.name===t&&(s.shadowColor=s.defs.shadowColor)}})),this.deregister(),this},Ne.get=function(t){if(ut(t)){if(t.toFixed)return this.getRangeColor(t);if("min"===t)return this.getMinimumColor();if("max"===t)return this.getMaximumColor();if("random"===t)return this.generateRandomColor(),this.getCurrentColor();{let e=this.getters[t];if(e)return e.call(this);{let e=this.defs[t];if(void 0!==e){let i=this[t];return void 0!==i?i:e}return undef}}}return this.getCurrentColor()},Ne.set=function(t=q){const e=Object.keys(t),i=e.length;if(i){const s=this.setters,n=this.defs;let r,o,a,l;for(o=0;o255&&(t=255),e>255&&(e=255),i>255&&(i=255),this.setColor(`rgb(${t} ${e} ${i})`)},Ne.checkColor=function(t){if(t.substring){let e="RGB";return t.includes("hsl")?e="HSL":t.includes("hwb")?e="HWB":t.includes("oklab")?e="OKLAB":t.includes("oklch")?e="OKLCH":t.includes("lab")?e="LAB":t.includes("lch")?e="LCH":t.includes("xyz")&&(e="XYZ"),"RGB"===e||"HSL"===e?t:(this.colorSpace=e,this.returnColorAs=e,this.convert(t),this.returnColor())}return"rgba(0 0 0 / 0)"},Ne.getRangeColor=function(t,e=!1){if(ut(t)&&t.toFixed){let i=this.colorSpace;e&&["HSL","HWB"].includes(i)?i="RGB":e&&"LCH"===i?i="LAB":e&&"OKLCH"===i&&(i="OKLAB");const s=this.calculateRangeColorValues(t,e),n=this.buildColorString(...s,i);this.setColor(n)}return this.getCurrentColor()},Ne.calculateRangeColorValues=function(t,e=!1){const{colorSpace:i,easing:s,easingFunction:n}=this;let r,o,a,l,h,c=i.toLowerCase();e&&["HSL","HWB"].includes(i)?c="rgb":e&&"LCH"===i?c="lab":e&&"OKLCH"===i&&(c="oklab");const[u,d,f,p]=this[`${c}_min`],[m,g,y,b]=this[`${c}_max`];let S=n;!e&&"function"!==s&&mt[s]&&(S=mt[s]);const k=e?t:S(t);switch(c){case"hsl":case"hwb":return h=m-u,o=u===m?u:J(k,h>180||h<-180?h>0?u+360:u-360:u,m),r=p===b?p:J(k,p,b),a=d===g?d:J(k,d,g),l=f===y?f:J(k,f,y),[o,a,l,r];case"lch":case"oklch":return h=y-f,l=f===y?f:J(k,h>180||h<-180?h>0?f+360:f-360:f,y),r=p===b?p:J(k,p,b),a=d===g?d:J(k,d,g),o=u===m?u:J(k,u,m),[o,a,l,r];default:return r=p===b?p:J(k,p,b),o=u===m?u:J(k,u,m),a=d===g?d:J(k,d,g),l=f===y?f:J(k,f,y),[o,a,l,r]}},Ne.getAlphaValue=function(t){let e=1;return null!=t&&(e=t.indexOf("%")>0?parseFloat(t)/100:parseFloat(t)),isNaN(e)||e>1?e=1:e<0&&(e=0),e},Ne.getHueValue=function(t){return"none"===t?0:(t=t.indexOf("deg")>=0?parseFloat(t):t.indexOf("rad")>=0?parseFloat(t)/gt:t.indexOf("grad")>=0?parseFloat(t)/400*360:t.indexOf("turn")>=0?360*parseFloat(t):parseFloat(t),isNaN(t)?0:W(t))},Ne.getColorValuesFromString=function(t,e){const i=(t=(t=(t=(t=t.replace(e,"")).replace("(","")).replace(")","")).replace("/","")).split(" ").filter((t=>null!=t&&""!==t));return null!=i[0]&&"none"!==i[0]||(i[0]="0"),null!=i[1]&&"none"!==i[1]||(i[1]="0"),null!=i[2]&&"none"!==i[2]||(i[2]="0"),i},Ne.extractFromHwbColorString=function(t){const{getAlphaValue:e,getHueValue:i,getColorValuesFromString:s}=this;let n,r,o,a,l,h,c,u;return n=s(t,"hwb"),h=i(n[0]),c=parseFloat(n[1]),u=parseFloat(n[2]),r=e(n[3]),[o,a,l]=this.convertHWBtoRGB(h,c,u),o=Math.floor(255*o),o>255&&(o=255),o<0&&(o=0),a=Math.floor(255*a),a>255&&(a=255),a<0&&(a=0),l=Math.floor(255*l),l>255&&(l=255),l<0&&(l=0),[r,o,a,l]},Ne.extractFromXyzColorString=function(t){const{getAlphaValue:e,getColorValuesFromString:i}=this;let s,n,r,o,a;return s=i(t,"xyz"),r=parseFloat(s[0]),o=parseFloat(s[1]),a=parseFloat(s[2]),n=e(s[3]),[n,r,o,a]},Ne.extractFromLabColorString=function(t){const{getAlphaValue:e,getColorValuesFromString:i}=this;let s,n,r,o,a;return s=i(t,"lab"),r=parseFloat(s[0]),r>100&&(r=100),r<0&&(r=0),o=s[1].indexOf("%")>0?1.25*parseFloat(s[1]):parseFloat(s[1]),o>160&&(o=160),o<-160&&(o=-160),a=s[2].indexOf("%")>0?1.25*parseFloat(s[2]):parseFloat(s[2]),a>160&&(a=160),a<-160&&(a=-160),n=e(s[3]),[n,r,o,a]},Ne.extractFromOklabColorString=function(t){const{getAlphaValue:e,getColorValuesFromString:i}=this;let s,n,r,o,a;return s=i(t,"oklab"),r=s[0].indexOf("%")>0?parseFloat(s[0])/100:parseFloat(s[0]),r>1&&(r=1),r<0&&(r=0),o=s[1].indexOf("%")>0?parseFloat(s[1])/100*.4:parseFloat(s[1]),o>.5&&(o=.5),o<-.5&&(o=-.5),a=s[2].indexOf("%")>0?parseFloat(s[2])/100*.4:parseFloat(s[2]),a>.5&&(a=.5),a<-.5&&(a=-.5),n=e(s[3]),[n,r,o,a]},Ne.extractFromLchColorString=function(t){const{getAlphaValue:e,getHueValue:i,getColorValuesFromString:s}=this;let n,r,o,a,l;return n=s(t,"lch"),o=parseFloat(n[0]),o>100&&(o=100),o<0&&(o=0),a=n[1].indexOf("%")>0?1.5*parseFloat(n[1]):parseFloat(n[1]),a>230&&(a=230),a<0&&(a=0),l=i(n[2]),r=e(n[3]),[r,o,a,l]},Ne.extractFromOklchColorString=function(t){const{getAlphaValue:e,getHueValue:i,getColorValuesFromString:s}=this;let n,r,o,a,l;return n=s(t,"oklch"),o=o=n[0].indexOf("%")>0?parseFloat(n[0])/100:parseFloat(n[0]),o>1&&(o=1),o<0&&(o=0),a=n[1].indexOf("%")>0?parseFloat(n[1])/100*.4:parseFloat(n[1]),a>.4&&(a=.4),a<0&&(a=0),l=i(n[2]),r=e(n[3]),[r,o,a,l]},Ne.convert=function(t,e=""){t=t.toLowerCase();const i=this[`rgb${e}`],s=this[`hsl${e}`],n=this[`hwb${e}`],r=this[`xyz${e}`],o=this[`lab${e}`],a=this[`lch${e}`],l=this[`oklab${e}`],h=this[`oklch${e}`];if(!i)return this;let c,u,d,f;return i.length=0,s.length=0,n.length=0,r.length=0,o.length=0,a.length=0,l.length=0,h.length=0,t.indexOf("hwb")>=0&&!ze?([c,u,d,f]=this.extractFromHwbColorString(t),i.push(u,d,f,c),s.push(...this.convertRGBtoHSL(u,d,f),c),n.push(hue,white,black,c),r.push(...this.convertRGBtoXYZ(u,d,f),c),o.push(...this.convertXYZtoLAB(r[0],r[1],r[2]),c),a.push(...this.convertLABtoLCH(o[0],o[1],o[2]),c),l.push(...this.convertXYZtoOKLAB(r[0],r[1],r[2]),c),h.push(...this.convertOKLABtoOKLCH(l[0],l[1],l[2]),c)):t.indexOf("xyz")>=0?([c,u,d,f]=this.extractFromXyzColorString(t),i.push(...this.convertXYZtoRGB(u,d,f),c),s.push(...this.convertRGBtoHSL(i[0],i[1],i[2]),c),n.push(...this.convertRGBHtoHWB(i[0],i[1],i[2],s[0]),c),r.push(u,d,f,c),o.push(...this.convertXYZtoLAB(u,d,f),c),a.push(...this.convertLABtoLCH(o[0],o[1],o[2]),c),l.push(...this.convertXYZtoOKLAB(r[0],r[1],r[2]),c),h.push(...this.convertOKLABtoOKLCH(l[0],l[1],l[2]),c)):t.indexOf("oklab")>=0&&!Ze?([c,u,d,f]=this.extractFromOklabColorString(t),l.push(u,d,f,c),h.push(...this.convertOKLABtoOKLCH(u,d,f),c),r.push(...this.convertOKLABtoXYZ(u,d,f),c),o.push(...this.convertXYZtoLAB(r[0],r[1],r[2]),c),a.push(...this.convertLABtoLCH(o[0],o[1],o[2]),c),i.push(...this.convertXYZtoRGB(r[0],r[1],r[2]),c),s.push(...this.convertRGBtoHSL(i[0],i[1],i[2]),c),n.push(...this.convertRGBHtoHWB(i[0],i[1],i[2],s[0]),c)):t.indexOf("oklch")>=0&&!_e?([c,u,d,f]=this.extractFromOklchColorString(t),h.push(u,d,f,c),l.push(...this.convertOKLCHtoOKLAB(u,d,f),c),r.push(...this.convertOKLABtoXYZ(l[0],l[1],l[2]),c),o.push(...this.convertXYZtoLAB(r[0],r[1],r[2]),c),a.push(...this.convertLABtoLCH(o[0],o[1],o[2]),c),i.push(...this.convertXYZtoRGB(r[0],r[1],r[2]),c),s.push(...this.convertRGBtoHSL(i[0],i[1],i[2]),c),n.push(...this.convertRGBHtoHWB(i[0],i[1],i[2],s[0]),c)):t.indexOf("lab")>=0&&!We?([c,u,d,f]=this.extractFromLabColorString(t),o.push(u,d,f,c),r.push(...this.convertLABtoXYZ(u,d,f),c),i.push(...this.convertXYZtoRGB(r[0],r[1],r[2]),c),s.push(...this.convertRGBtoHSL(i[0],i[1],i[2]),c),n.push(...this.convertRGBHtoHWB(i[0],i[1],i[2],s[0]),c),a.push(...this.convertLABtoLCH(u,d,f),c),l.push(...this.convertXYZtoOKLAB(r[0],r[1],r[2]),c),h.push(...this.convertOKLABtoOKLCH(l[0],l[1],l[2]),c)):t.indexOf("lch")>=0&&!Ve?([c,u,d,f]=this.extractFromLchColorString(t),a.push(u,d,f,c),o.push(...this.convertLCHtoLAB(u,d,f),c),r.push(...this.convertLABtoXYZ(o[0],o[1],o[2]),c),i.push(...this.convertXYZtoRGB(r[0],r[1],r[2]),c),s.push(...this.convertRGBtoHSL(i[0],i[1],i[2]),c),n.push(...this.convertRGBHtoHWB(i[0],i[1],i[2],s[0]),c),l.push(...this.convertXYZtoOKLAB(r[0],r[1],r[2]),c),h.push(...this.convertOKLABtoOKLCH(l[0],l[1],l[2]),c)):([u,d,f,c]=this.getColorFromCanvas(t),i.push(u,d,f,c),s.push(...this.convertRGBtoHSL(u,d,f),c),n.push(...this.convertRGBHtoHWB(u,d,f,s[0]),c),r.push(...this.convertRGBtoXYZ(u,d,f),c),o.push(...this.convertXYZtoLAB(r[0],r[1],r[2]),c),a.push(...this.convertLABtoLCH(o[0],o[1],o[2]),c),l.push(...this.convertXYZtoOKLAB(r[0],r[1],r[2]),c),h.push(...this.convertOKLABtoOKLCH(l[0],l[1],l[2]),c)),this},Ne.extractRGBfromColor=function(t){let e,i,s,n;return(t=t.toLowerCase()).includes("hwb")&&!ze?([e,i,s,n]=this.extractFromHwbColorString(t),[i,s,n,e]):t.includes("xyz")?([e,i,s,n]=this.extractFromXyzColorString(t),[...this.convertXYZtoRGB(i,s,n),e]):t.includes("oklab")&&!Ze?([e,i,s,n]=this.extractFromOklabColorString(t),[...this.convertXYZtoRGB(...this.convertOKLABtoXYZ(i,s,n)),e]):t.indexOf("oklch")>=0&&!_e?([e,i,s,n]=this.extractFromOklchColorString(t),[...this.convertXYZtoRGB(...this.convertOKLABtoXYZ(...this.convertOKLCHtoOKLAB(i,s,n))),e]):t.includes("lab")&&!We?([e,i,s,n]=this.extractFromLabColorString(t),[...this.convertXYZtoRGB(...this.convertLABtoXYZ(i,s,n)),e]):t.indexOf("lch")>=0&&!Ve?([e,i,s,n]=this.extractFromLchColorString(t),[...this.convertXYZtoRGB(...this.convertLABtoXYZ(...this.convertLCHtoLAB(i,s,n))),e]):this.getColorFromCanvas(t)},Ne.convertRGBtoHex=function(t,e,i){if(t.substring&&(t=parseInt(t,10)),e.substring&&(e=parseInt(e,10)),i.substring&&(i=parseInt(i,10)),!isNaN(t)&&!isNaN(e)&&!isNaN(i)){return`#${("0"+t.toString(16)).slice(-2)}${("0"+e.toString(16)).slice(-2)}${("0"+i.toString(16)).slice(-2)}`}return"#000000"},Ne.getColorFromCanvas=function(t){let e=0,i=0,s=0,n=0;Ye.clearRect(0,0,1,1),Ye.fillStyle=t,Ye.fillRect(0,0,1,1);const r=Ye.getImageData(0,0,1,1);return r&&r.data&&([e,i,s,n]=r.data,n/=255),[e,i,s,n]},Ne.convertRGBtoHSL=function(t,e,i){t/=255,e/=255,i/=255;let s=Math.max(t,e,i),n=Math.min(t,e,i),[r,o,a]=[0,0,(n+s)/2],l=s-n;if(0!==l){switch(o=0===a||1===a?0:(s-a)/Math.min(a,1-a),s){case t:r=(e-i)/l+(e=1){let t=e/(e+i);return[t,t,t]}let s=this.convertHSLtoRGB(t,100,50);for(let t=0;t<3;t++)s[t]*=1-e-i,s[t]+=e;return s},Ne.multiplyMatrices=function(t,e){const i=t.length;Array.isArray(t[0])||(t=[t]),Array.isArray(e[0])||(e=e.map((t=>[t])));const s=e[0].length,n=e[0].map(((t,i)=>e.map((t=>t[i]))));let r=t.map((t=>n.map((e=>Array.isArray(t)?t.reduce(((t,i,s)=>t+i*(e[s]||0)),0):e.reduce(((e,i)=>e+i*t),0)))));return 1===i&&(r=r[0]),1===s?r.map((t=>t[0])):r},Ne.D50=[.3457/.3585,1,.2958/.3585],Ne.D65=[.3127/.329,1,.3583/.329],Ne.D65_to_D50_matrix=[[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Ne.D50_to_D65_matrix=[[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Ne.convertRGBtoXYZ_matrix=[[506752/1228815,87881/245763,12673/70218],[87098/409605,175762/245763,12673/175545],[7918/409605,87881/737289,1001167/1053270]],Ne.lin_sRGB=function(t){return t.map((t=>{let e=t<0?-1:1,i=Math.abs(t);return i<.04045?t/12.92:e*Math.pow((i+.055)/1.055,2.4)}))},Ne.convertRGBtoXYZ=function(t,e,i){const s=[t/255,e/255,i/255],n=this.lin_sRGB(s);return this.multiplyMatrices([...this.convertRGBtoXYZ_matrix],[...n])},Ne.convertRGBtoOKLAB=function(t,e,i){const[s,n,r]=this.lin_sRGB([t/255,e/255,i/255]),o=.4122214708*s+.5363325363*n+.0514459929*r,a=.2119034982*s+.6806995451*n+.1073969566*r,l=.0883024619*s+.2817188376*n+.6299787005*r,h=this.cbrt(o),c=this.cbrt(a),u=this.cbrt(l);return[.2104542553*h+.793617785*c-.0040720468*u,1.9779984951*h-2.428592205*c+.4505937099*u,.0259040371*h+.7827717662*c-.808675766*u]},Ne.convertXYZtoRGB_matrix=[[12831/3959,-329/214,-1974/3959],[-851781/878810,1648619/878810,36519/878810],[705/12673,-2585/12673,705/667]],Ne.gam_sRGB=function(t){return t.map((t=>{let e=t<0?-1:1,i=Math.abs(t);return i>.0031308?e*(1.055*Math.pow(i,1/2.4)-.055):12.92*t}))},Ne.convertXYZtoRGB=function(t,e,i){const s=this.multiplyMatrices([...this.convertXYZtoRGB_matrix],[t,e,i]),n=this.gam_sRGB(s),r=Math.round;return[r(255*n[0]),r(255*n[1]),r(255*n[2])]},Ne.E=216/24389,Ne.K=24389/27,Ne.cbrt=null!=Math.cbrt?Math.cbrt:t=>Math.pow(t,1/3),Ne.convertXYZtoLAB=function(t,e,i){const{D50:s,K:n,E:r,cbrt:o}=this,a=this.multiplyMatrices([...this.D65_to_D50_matrix],[t,e,i]).map(((t,e)=>t/s[e])).map((t=>t>r?o(t):(n*t+16)/116));return[116*a[1]-16,500*(a[0]-a[1]),200*(a[1]-a[2])]},Ne.convertLABtoXYZ=function(t,e,i){const{D50:s,K:n,E:r,cbrt:o}=this,a=[],l=Math.pow;a[1]=(t+16)/116,a[0]=e/500+a[1],a[2]=a[1]-i/200;const h=[l(a[0],3)>r?l(a[0],3):(116*a[0]-16)/n,t>n*r?l((t+16)/116,3):t/n,l(a[2],3)>r?l(a[2],3):(116*a[2]-16)/n].map(((t,e)=>t*s[e]));return this.multiplyMatrices([...this.D50_to_D65_matrix],[...h])},Ne.convertLABtoLCH=function(t,e,i){const s=Math.pow,n=180*Math.atan2(i,e)/Math.PI;return[t,Math.sqrt(s(e,2)+s(i,2)),n>=0?n:n+360]},Ne.convertLCHtoLAB=function(t,e,i){const s=Math.PI;return[t,e*Math.cos(i*s/180),e*Math.sin(i*s/180)]},Ne.XYZtoLMS=[[.8190224432164319,.3619062562801221,-.12887378261216414],[.0329836671980271,.9292868468965546,.03614466816999844],[.048177199566046255,.26423952494422764,.6335478258136937]],Ne.LMStoOKLab=[[.2104542553,.793617785,-.0040720468],[1.9779984951,-2.428592205,.4505937099],[.0259040371,.7827717662,-.808675766]],Ne.convertXYZtoOKLAB=function(t,e,i){const s=this.cbrt,n=this.multiplyMatrices([...this.XYZtoLMS],[t,e,i]);return this.multiplyMatrices([...this.LMStoOKLab],n.map((t=>s(t))))},Ne.LMStoXYZ=[[1.2268798733741557,-.5578149965554813,.28139105017721583],[-.04057576262431372,1.1122868293970594,-.07171106666151701],[-.07637294974672142,-.4214933239627914,1.5869240244272418]],Ne.OKLabtoLMS=[[.9999999984505198,.39633779217376786,.2158037580607588],[1.0000000088817609,-.10556134232365635,-.06385417477170591],[1.0000000546724108,-.08948418209496575,-1.2914855378640917]],Ne.convertOKLABtoXYZ=function(t,e,i){const s=this.multiplyMatrices([...this.OKLabtoLMS],[t,e,i]);return this.multiplyMatrices([...this.LMStoXYZ],s.map((t=>t**3)))},Ne.convertOKLABtoOKLCH=function(t,e,i){const s=180*Math.atan2(i,e)/Math.PI;return[t,Math.sqrt(e**2+i**2),s>=0?s:s+360]},Ne.convertOKLCHtoOKLAB=function(t,e,i){return[t,e*Math.cos(i*Math.PI/180),e*Math.sin(i*Math.PI/180)]},Ne.calculateColorBlend=function(t,e,i,s,n,r){const[o,a,l]=this.convertRGBtoHSL(t,e,i),[h,c,u]=this.convertRGBtoHSL(s,n,r),[d,f,p]=this.convertHSLtoRGB(o,a,u);return[Math.round(255*d),Math.round(255*f),Math.round(255*p)]},Ne.calculateHueBlend=function(t,e,i,s,n,r){const[o,a,l]=this.convertRGBtoHSL(t,e,i),[h,c,u]=this.convertRGBtoHSL(s,n,r),[d,f,p]=this.convertHSLtoRGB(o,c,u);return[Math.round(255*d),Math.round(255*f),Math.round(255*p)]},Ne.calculateSaturationBlend=function(t,e,i,s,n,r){const[o,a,l]=this.convertRGBtoHSL(t,e,i),[h,c,u]=this.convertRGBtoHSL(s,n,r),[d,f,p]=this.convertHSLtoRGB(h,a,u);return[Math.round(255*d),Math.round(255*f),Math.round(255*p)]},Ne.calculateLuminosityBlend=function(t,e,i,s,n,r){const[o,a,l]=this.convertRGBtoHSL(t,e,i),[h,c,u]=this.convertRGBtoHSL(s,n,r),[d,f,p]=this.convertHSLtoRGB(h,c,l);return[Math.round(255*d),Math.round(255*f),Math.round(255*p)]};let ze=!1,We=!1,Ve=!1,Ze=!1,_e=!1;!function(){let t,e=0,i=0,s=0,n=0,r="#ffffff00";Ye.fillStyle="hwb(90 10% 10%)",Ye.fillRect(0,0,1,1),t=Ye.getImageData(0,0,1,1),t&&t.data&&([e,i,s,n]=t.data),(e||i||s)&&(ze=!0),ze&&r===Ye.fillStyle?ze=!1:r=Ye.fillStyle,Ye.fillStyle="lab(29.2345% 39.3825 20.0664)",Ye.clearRect(0,0,1,1),Ye.fillRect(0,0,1,1),t=Ye.getImageData(0,0,1,1),t&&t.data&&([e,i,s,n]=t.data),(e||i||s)&&(We=!0),We&&r===Ye.fillStyle?We=!1:r=Ye.fillStyle,Ye.fillStyle="lch(52.2345% 72.2 56.2)",Ye.clearRect(0,0,1,1),Ye.fillRect(0,0,1,1),t=Ye.getImageData(0,0,1,1),t&&t.data&&([e,i,s,n]=t.data),(e||i||s)&&(Ve=!0),Ve&&r===Ye.fillStyle?Ve=!1:r=Ye.fillStyle,Ye.fillStyle="oklab(59.686% 0.1009 0.1192)",Ye.clearRect(0,0,1,1),Ye.fillRect(0,0,1,1),t=Ye.getImageData(0,0,1,1),t&&t.data&&([e,i,s,n]=t.data),(e||i||s)&&(Ze=!0),Ze&&r===Ye.fillStyle?Ze=!1:r=Ye.fillStyle,Ye.fillStyle="oklch(59.686% 0.15619 49.7694)",Ye.clearRect(0,0,1,1),Ye.fillRect(0,0,1,1),t=Ye.getImageData(0,0,1,1),t&&t.data&&([e,i,s,n]=t.data),(e||i||s)&&(_e=!0),_e&&r===Ye.fillStyle?_e=!1:r=Ye.fillStyle}();const Ue=function(t){return!!t&&new Color(t)};H.Color=Color;const Ke=Ue({name:"SC-system-state-do-not-remove"}),State=function(t=q){return this.set(this.defs),this.lineDash=[],this};let qe=State.prototype=Object.create(Object.prototype);qe.type="State",qe=me(qe),qe.defs={fillStyle:"rgba(0 0 0 / 1)",strokeStyle:"rgba(0 0 0 / 1)",globalAlpha:1,globalCompositeOperation:"source-over",lineWidth:1,lineCap:"butt",lineJoin:"miter",lineDash:null,lineDashOffset:0,miterLimit:10,shadowOffsetX:0,shadowOffsetY:0,shadowBlur:0,shadowColor:"rgba(0 0 0 / 0)",font:"12px sans-serif",textAlign:"left",textBaseline:"top",filter:"none",imageSmoothingEnabled:!0,imageSmoothingQuality:"high"},qe.processPacketOut=function(t,e,i){let s=!0;if("lineDash"===t)e.length||(s=i.indexOf("lineDash")>=0);else i.indexOf(t)<0&&e===this.defs[t]&&(s=!1);return s},qe.finalizePacketOut=function(t,e){let i=t.fillStyle,s=t.strokeStyle;return i&&!i.substring&&(t.fillStyle=i.name),s&&!s.substring&&(t.strokeStyle=s.name),t},qe.set=function(t=q){let e,i,s=Object.keys(t),n=s.length,r=this.defs;for(i=0;i>>0,t=(s*=t)>>>0,t+=4294967296*(s-=t)}return 2.3283064365386963e-10*(t>>>0)}t=4022871197}},ii=function(t){return function(){var e,i,s=48,n=1,r=s,o=new Array(s),a=0,l=new ei;for(e=0;e=s&&(r=0);var t=1768863*o[r]+2.3283064365386963e-10*n;return o[r]=t-(n=0|t)},c=function(t){return Math.floor(t*(h()+11102230246251565e-32*(2097152*h()|0)))};c.string=function(t){var e,i="";for(e=0;e0){var o=i.indexOf(this);~o?i.splice(o+1):i.push(this),~o?s.splice(o,1/0,n):s.push(n),~i.indexOf(r)&&(r=e.call(this,n,r))}else i.push(r);return null==t?r:t.call(this,n,r)}}(i,n),s)),c.initState(),c.hashString(t)},c.addEntropy=function(){var t=[];for(e=0;e{"lineDash"===t?(s(i.lineDash)?i.lineDash.length=0:i.lineDash=[],s(e.lineDash)?e.lineDash.length=0:e.lineDash=[]):(i[t]=n,e[t]=n)})),i.textAlign=e.textAlign="left",i.textBaseline=e.textBaseline="top",this},t.stylesArray=["Gradient","RadialGradient","Pattern"],t.setEngine=function(t){const e=this.state,i=t.state;if(i){const s=i.getChanges(t,e),n=this.setEngineActions,r=this.stylesArray;if(Object.keys(s).length){const i=this.engine;for(const o in s)n[o](s[o],i,r,t,this),e[o]=s[o]}}return t},t.setEngineActions={fillStyle:function(t,e,i,s,n){if(t.substring){let i=!1;R.indexOf(t)>=0?i=D[t]:d.indexOf(t)>=0&&(i=u[t]),i?(s.state.fillStyle=i,e.fillStyle=i.getData(s,n)):e.fillStyle=t}else e.fillStyle=t.getData(s,n)},filter:function(t,e){e.filter=t},font:function(t,e){e.font=t},globalAlpha:function(t,e){e.globalAlpha=t},globalCompositeOperation:function(t,e){e.globalCompositeOperation=t},imageSmoothingEnabled:function(t,e){e.imageSmoothingEnabled=t},imageSmoothingQuality:function(t,e){e.imageSmoothingQuality=t},lineCap:function(t,e){e.lineCap=t},lineDash:function(t,e){e.lineDash=t,e.setLineDash&&e.setLineDash(t)},lineDashOffset:function(t,e){e.lineDashOffset=t},lineJoin:function(t,e){e.lineJoin=t},lineWidth:function(t,e){e.lineWidth=t},miterLimit:function(t,e){e.miterLimit=t},shadowBlur:function(t,e){e.shadowBlur=t},shadowColor:function(t,e){e.shadowColor=t},shadowOffsetX:function(t,e){e.shadowOffsetX=t},shadowOffsetY:function(t,e){e.shadowOffsetY=t},strokeStyle:function(t,e,i,s,n){if(t.substring){let i=!1;R.indexOf(t)>=0?i=D[t]:d.indexOf(t)>=0&&(i=u[t]),i?(s.state.strokeStyle=i,e.strokeStyle=i.getData(s,n)):e.strokeStyle=t}else e.strokeStyle=t.getData(s,n)}},t.clearShadow=function(){return this.engine.shadowOffsetX=0,this.engine.shadowOffsetY=0,this.engine.shadowBlur=0,this.state.shadowOffsetX=0,this.state.shadowOffsetY=0,this.state.shadowBlur=0,this},t.restoreShadow=function(t){let e=t.state;return this.engine.shadowOffsetX=e.shadowOffsetX,this.engine.shadowOffsetY=e.shadowOffsetY,this.engine.shadowBlur=e.shadowBlur,this.state.shadowOffsetX=e.shadowOffsetX,this.state.shadowOffsetY=e.shadowOffsetY,this.state.shadowBlur=e.shadowBlur,this},t.setToClearShape=function(){return this.engine.fillStyle="rgb(0 0 0 / 0)",this.engine.strokeStyle="rgb(0 0 0 / 0)",this.engine.shadowColor="rgb(0 0 0 / 0)",this.state.fillStyle="rgb(0 0 0 / 0)",this.state.strokeStyle="rgb(0 0 0 / 0)",this.state.shadowColor="rgb(0 0 0 / 0)",this},t.saveEngine=function(){return this.engine.save(),this},t.restoreEngine=function(){return this.engine.restore(),this},t.getComputedFontSizes=function(){const t=this.getHost();if(t&&t.domElement){const e=window.getComputedStyle(t.domElement),i=window.getComputedStyle(document.documentElement);return[parseFloat(e.fontSize),parseFloat(i.fontSize),window.innerWidth,window.innerHeight]}return!1},t.getEntityHits=function(){const t=[],e=[];let i=[];return this.groupBuckets&&this.groupBuckets.forEach((t=>{t.visibility&&i.push(t.getAllArtefactsAt(this.here))}),this),i.length&&(i=i.reduce(((t,e)=>t.concat(e)),[]),i.forEach((i=>{const s=i.artefact;s.visibility&&e.indexOf(s.name)<0&&(e.push(s.name),t.push(s))}))),t},t.rotateDestination=function(t,e,i,s){const n=s||this,r=n.mimic,o=n.pivot;let a,l,h=n.currentRotation;if(r&&r.name&&n.useMimicFlip?(a=r.flipReverse?-1:1,l=r.flipUpend?-1:1):(a=n.flipReverse?-1:1,l=n.flipUpend?-1:1),r&&r.name&&n.useMimicRotation?h=r.currentRotation:o&&o.name&&n.addPivotRotation&&(h=o.currentRotation),h){h*=gt;const s=Math.cos(h),n=Math.sin(h);t.setTransform(s*a,n*a,-n*l,s*l,e,i)}else t.setTransform(a,0,0,l,e,i);return this},t}const ri=function(t){this.name=t;const e=this.element=document.createElement("canvas"),i=this.engine=e.getContext("2d",{willReadFrequently:!0});e.width=1,e.height=1;return(this.state=Je({engine:i})).setStateFromEngine(this.engine),this};let oi=ri.prototype=Object.create(Object.prototype);oi.type="CellFragment",oi=me(oi),oi=ni(oi),oi.stringifyFunction=Z,oi.processPacketOut=Z,oi.finalizePacketOut=Z,oi.saveAsPacket=function(){return`[${this.name}, ${this.type}, ${this.lib}, {}]`},oi.clone=U;const ai=[];let li=0;const hi=function(){ai.length||ai.push(new ri("pool_"+li++));let t=ai.shift();return t.engine.save(),t},ci=function(t){t&&"CellFragment"===t.type&&(t.engine.restore(),ai.push(t))},Coordinate=function(t,e){let i=[0,0];return Object.setPrototypeOf(i,Coordinate.prototype),t&&i.set(t,e),i};let ui=Coordinate.prototype=Object.create(Array.prototype);ui.constructor=Coordinate,ui.type="Coordinate",ui.set=function(t,e){return ut(t)&&("Coordinate"===t.type?this.setFromArray(t):"Vector"===t.type?this.setFromVector(t):"Quaternion"===t.type?this.setFromVector(t.v):Array.isArray(t)?this.setFromArray(t):ut(e)&&this.setFromArray([t,e])),this},ui.setFromArray=function(t){return this[0]=t[0],this[1]=t[1],this},ui.setFromVector=function(t){return this[0]=t.x,this[1]=t.y,this},ui.zero=function(){return this[0]=0,this[1]=0,this},ui.vectorAdd=function(t){return this[0]+=t.x,this[1]+=t.y,this},ui.vectorSubtract=function(t){return this[0]-=t.x,this[1]-=t.y,this},ui.add=function(t){return this[0]+=t[0],this[1]+=t[1],this},ui.subtract=function(t){return this[0]-=t[0],this[1]-=t[1],this},ui.multiply=function(t){return this[0]*=t[0],this[1]*=t[1],this},ui.divide=function(t){let[e,i]=t;return e&&i&&(this[0]/=e,this[1]/=i),this},ui.scalarMultiply=function(t){return this[0]*=t,this[1]*=t,this},ui.scalarDivide=function(t){return t&&t.toFixed&&(this[0]/=t,this[1]/=t),this},ui.getMagnitude=function(){return Math.hypot(this[0],this[1])},ui.rotate=function(t){let e,i,s=this[0],n=this[1];return e=Math.atan2(n,s),e+=.01745329251*t,i=Math.hypot(s,n),this[0]=i*Math.cos(e),this[1]=i*Math.sin(e),this},ui.reverse=function(){return this[0]=-this[0],this[1]=-this[1],this},ui.getDotProduct=function(t){return this[0]*t[0]+this[1]*t[1]},ui.normalize=function(){let t=this.getMagnitude();return t>0&&(this[0]/=t,this[1]/=t),this};const di=[],fi=function(t,e){di.length||di.push(new Coordinate);let i=di.shift();return i.set(t,e),i},pi=function(t){t&&"Coordinate"===t.type&&di.push(t.zero())},mi=function(t,e){return new Coordinate(t,e)};H.Coordinate=Coordinate;const gi=[.37,.69,.62,.78,.06,.84,.27,.14,.46,1,.58,.28,.62,.8,.3,.7,.93,.53,.76,.24,.15,.51,.79,.28,.99,.16,.22,.45,.03,.73,.34,.96,.5,.3,.07,.84,.51,.27,.89,.8,.66,.25,.54,.94,.08,.66,.36,.85,.69,.93,.26,.79,.68,.36,.23,.5,.83,.34,.64,.91,.73,.8,.95,.59,.1,.76,.82,.03,.62,.47,.09,.55,.33,.22,.45,.04,.76,.52,.69,.24,.78,.12,.59,.37,.03,.82,.93,.69,.42,.34,.89,.62,.27,1,.53,.09,.38,.71,.13,.52,.19,.66,.33,.42,.63,.28,.36,.61,.73,.06,.56,.97,.35,.72,.91,.3,.98,.53,.2,.08,.5,.22,.87,.93,.08,.44,.91,.56,.12,.99,.01,.49,.37,.68,.89,.55,.3,.84,.17,.67,.1,.48,.89,.23,.47,.06,.29,.61,.67,.91,.2,.47,.64,.05,.77,.94,.62,.09,.58,.12,.77,.47,.93,.39,.73,.09,.47,.58,.15,.39,.02,.64,.32,.77,.98,.03,.28,.44,.11,.01,.73,.44,.88,.02,.76,.53,.41,.05,.25,.36,.02,.31,.52,.39,.28,.57,.91,.7,.98,0,.76,.94,.66,.85,.33,.18,.88,.01,.99,.46,.69,.94,.32,.51,.45,.07,.55,.22,.11,.8,.42,.17,.87,.47,.81,.23,.88,.43,.6,.11,.75,.06,.88,.72,.47,.92,.13,.31,.84,.47,.27,.16,.5,.09,.78,.44,.34,.56,.95,.69,.36,.13,.64,.29,.04,.87,.41,.53,.31,.87,.22,.6,.09,.77,.22,.72,.4,.88,.37,.75,.06,.58,.65,.86,.99,.42,.37,.58,.04,.74,.35,.57,.83,.39,.5,.91,.42,.27,.69,.02,.8,.22,.63,.97,.04,.34,.69,.97,.51,.83,.45,.24,.56,.49,.64,.81,.99,.55,.31,.17,.62,.1,.69,.15,.86,.2,.52,.67,.77,.19,.7,.85,.45,.18,.12,.4,.3,.82,.37,.53,.07,.27,.56,.64,.44,.34,.56,.25,.2,.08,.76,.64,.15,.78,.95,.72,.87,.51,.36,.02,.74,.3,.07,.64,.34,0,.82,.28,.97,.22,.5,.81,.02,.25,.41,.69,.2,.03,.76,.42,.69,.85,.59,.14,.91,.76,.28,.06,.61,.47,.73,.8,.55,.25,.61,.82,.19,.72,.13,.98,.41,.03,.64,.96,.12,.52,.27,.17,.97,.42,.13,.35,.2,.78,.11,.86,.82,.24,.95,.49,.14,.25,.17,.69,.85,.21,.95,.58,.35,.15,.44,.29,.78,.84,.2,.28,.88,.09,.2,.92,.13,.75,.17,.37,.23,.52,.89,.82,.47,1,.39,.29,.75,.59,.96,.14,.42,.92,.63,.04,1,.67,.78,.5,.24,.61,.17,.71,.92,.41,.11,.96,.74,.07,.83,.66,.89,.4,.85,.23,.55,.36,.27,.19,.04,.67,.94,.58,.63,.2,.97,.75,.55,.92,.72,.46,.55,.69,.34,.17,.67,.56,.88,.96,.52,.62,.94,.88,.21,.04,.37,.25,.72,.02,.81,.16,.91,.4,.21,1,.16,.7,.94,.1,.78,.55,.45,.7,.51,.86,.29,.48,.05,.93,.59,.81,.72,.29,.83,.59,.73,0,.49,.3,.64,.39,.11,.71,.32,.97,.78,.34,.05,.37,.49,.12,.9,.68,.56,.92,.49,.14,.55,.76,.6,.34,.72,.64,.4,.03,.88,.6,.71,.13,.65,.05,.27,.56,.22,.94,.47,.09,.33,.84,.47,.27,.09,.57,.23,.34,.07,.95,.56,.87,.11,.46,.2,.77,.87,.5,.18,.29,.79,.14,.61,.51,.29,.99,.01,.91,.65,.47,.58,.3,.23,.13,.83,.4,.49,.15,.25,.36,.17,.84,.13,.41,.07,1,.44,.77,.09,.35,.73,.3,.11,.34,.57,.47,.93,.63,.41,.53,.49,.32,.86,.55,.02,.84,.51,.34,.26,.04,.39,.92,.33,.25,.84,.17,.35,.8,.43,.67,.31,.03,.51,.47,.08,.94,.25,.55,.91,.71,.15,.45,.58,.89,.67,.02,.47,.57,.62,.82,.73,.53,.27,.81,.07,.19,.65,.4,.92,0,.44,.16,1,.53,.8,.33,.96,.29,.07,.44,.94,.34,.74,.84,.67,0,.84,.64,.71,.04,.55,.89,.39,.72,.53,.82,.42,.65,.02,.36,.94,.29,.63,0,.37,.25,.67,.93,.51,.37,.04,.74,.12,.68,.44,.81,.11,.38,.78,.99,.45,.71,.89,.33,.59,.91,.69,.51,.05,.64,.27,.89,.61,.84,.31,.24,.5,.04,.18,.44,.8,.66,.14,.75,.82,.11,.18,.99,.65,.12,.77,.25,.62,.32,.09,.75,.65,.47,.58,.16,.05,.65,.08,.94,.56,.73,.25,.84,.14,.38,.87,.64,.16,.78,.4,.64,.2,.33,.99,.02,.86,.2,.53,.42,.86,.1,.94,.14,.23,.99,.03,.4,.88,.72,.24,.07,.8,.32,.69,.83,.04,.25,.68,.22,.48,.55,.76,.86,.39,.17,.53,.09,.42,.34,.5,.26,.23,1,.18,.77,.31,.94,.15,.88,.29,.73,.21,.8,.69,.53,.95,.76,.56,.11,.6,.05,.44,.23,.96,.82,.56,.35,.21,.72,.52,.88,.16,.82,.08,.52,.27,.8,.1,.02,.84,.3,.78,.98,.43,.73,.19,.52,.14,.89,.65,.79,.6,.92,.52,.07,.98,.27,.51,.3,.78,.88,.23,.42,.7,.1,.91,.77,.43,.96,.22,.87,.71,.8,.95,.55,.76,.45,.15,.02,.99,.54,.2,.73,.96,.24,.55,.36,.05,.95,.13,.75,.55,.77,.25,.36,.13,.8,.19,.29,.71,.36,.45,.65,.33,.61,.51,.37,1,.56,.46,.89,.23,.5,.4,.91,.58,.07,.83,.65,.12,.25,.61,.79,.14,.97,.63,.78,.12,.89,.43,.38,.61,.69,0,.45,.19,.6,.02,.92,.5,.42,.09,.24,.42,.16,.89,.48,.99,.76,.66,.87,.27,.45,.16,.62,.89,.25,.04,.33,.22,.62,.37,0,.67,.18,.45,.75,.62,.42,.18,.57,.01,.36,.8,.05,.68,.4,1,.27,.86,.4,.22,.37,.83,.44,.68,.05,.56,.35,.06,.59,.94,.49,.38,.58,.16,.53,.13,.29,.36,.51,.2,.26,.36,.89,.69,.31,.42,.63,.91,.5,.04,.31,.85,.72,.47,.83,.61,.36,.48,.07,.93,.64,.72,1,.6,.49,.89,.54,.08,.76,.92,.16,.09,.82,.29,.14,.61,.18,.75,.65,.11,.29,.78,.15,.42,.36,.99,.01,.49,.69,.31,.89,.25,.18,.94,.58,.7,.85,.09,.5,.22,.85,.69,.39,.33,.78,.15,.58,.85,.04,.72,.35,.84,.28,.4,.16,.33,.56,.01,.69,.96,.06,.47,.83,.56,.69,.93,.54,.74,.94,.86,.53,.98,.38,.24,.95,.11,.67,.86,.51,.3,.96,.46,.57,.34,.05,.15,.71,.31,.77,.03,.6,.2,.94,.72,.45,.82,.17,.31,.8,.2,.05,.69,.84,.76,.01,1,.09,.84,.44,.62,.11,.22,.5,.81,.05,.29,.45,.77,.68,.09,.91,.2,.28,0,.89,.18,.69,.32,.51,.44,.03,.35,.25,.67,.03,.84,.2,.56,.46,.89,.23,.69,.78,.95,.37,.09,.55,.87,.44,.73,.95,.52,.82,.23,.73,.91,.44,.04,.55,.46,.73,.41,.03,.31,.14,.78,.36,.97,.56,.8,.11,.99,.52,.27,.91,.64,.95,.49,.19,.66,.03,.55,.85,.13,.62,.8,.41,.29,.75,.39,.13,.99,.45,.05,.27,.47,.12,.41,.63,.29,.15,.84,.54,.32,.74,.22,.13,.64,.85,.08,.16,.75,.51,.47,.64,.95,.58,.14,.91,.51,.39,.13,.25,.97,.69,.01,.56,.87,.28,.93,.38,.62,.44,.67,.57,.7,.01,.8,.98,.6,.89,.73,.16,.71,.12,.59,.36,.54,.15,.57,.67,.45,.25,.95,.83,.11,.22,.84,.09,.77,.92,.16,.41,.96,.35,.25,.75,.65,0,.44,.53,.06,.28,.83,.99,.23,0,.59,.24,.05,.63,.28,.55,.36,.16,.83,.72,.31,.08,.66,.81,.53,.22,.9,.62,.28,.05,.45,.64,.22,.71,.07,.35,.45,.31,.1,.77,.6,.95,.24,.73,.49,.99,.22,.1,.55,.91,.63,.24,.74,.41,.79,.16,.81,.33,.22,.04,.81,.67,.48,.04,.8,.44,.99,.41,.78,.25,.6,.94,.28,.82,.91,.2,.11,.44,.73,.34,.79,.06,.85,.63,.51,.42,.9,.73,.44,.64,.05,.49,.24,.9,.2,.33,.93,.15,.48,.34,.19,0,.45,.34,.97,.84,.21,.95,.26,.41,.82,.98,.72,.54,.34,.62,.39,.57,.93,.69,.53,.44,.8,.64,.53,.71,.11,.94,.37,.58,.87,.2,.73,.47,.42,.67,.34,.49,.91,.38,.72,.13,.89,.77,.08,.96,.64,.19,1,.85,.47,.25,.96,.71,.47,.12,.76,.16,.91,.3,.51,.85,.8,.15,.75,.55,.89,.36,.46,.07,.89,.43,.04,.36,.87,.48,.85,.17,.02,.52,.31,.09,.87,.64,.97,.58,.71,.91,.51,.1,.9,.59,.27,.16,.62,.57,.01,.49,.38,.73,.42,0,.6,.38,.86,.28,.64,.24,1,.56,.3,.76,.18,.1,.35,.23,.14,.98,.31,.8,.72,.15,.84,.53,.25,.4,.73,.85,.55,.67,.91,.25,.55,.51,.03,.69,.88,.75,.03,.34,.09,.16,.78,.05,.75,.88,.28,.2,.37,.13,.3,.22,.04,.87,.44,.54,.15,.25,1,.32,.64,.93,.25,.13,.64,.8,.16,.55,.97,.41,.48,.24,.61,.4,.27,.53,.12,.36,.16,.6,.36,.05,.4,.58,.82,.37,.69,.95,0,.56,.39,.66,.23,0,.81,.18,.69,.32,.8,.28,.67,.62,.26,.73,.58,.27,.67,.83,.94,.55,.2,.36,.5,.08,.84,.42,.35,.2,.74,.38,.93,.71,.08,.3,.97,.83,.19,.88,.15,.67,.24,.8,.07,.51,.84,.02,.18,.69,.45,.04,.91,.58,.8,.47,.71,.6,.08,.56,.41,.04,.36,.77,.09,.9,.58,.05,.31,.39,.09,.75,.63,.31,.82,.45,.12,.61,.51,.22,.63,.93,.51,.2,.47,.32,.06,.66,.59,.97,.9,.69,.58,.16,.31,.82,.06,.76,.41,.1,.82,.02,.58,.89,.05,.28,.84,.08,.3,.77,.02,.67,.33,.81,.02,.67,.75,.57,.91,.8,.09,.85,.67,.99,.25,.51,.13,.45,.25,.12,.88,.46,.95,.6,.28,.98,.49,.16,.57,.18,.95,.81,.16,.04,.98,.44,.35,.77,.04,.61,.7,.29,.01,.67,.16,.27,.99,.63,.47,0,.2,.83,.47,.88,.13,.66,.54,.08,.98,.5,.32,.56,.97,.69,.4,.61,.48,.94,.37,.83,.6,.29,.94,.03,.87,.37,.16,.91,.65,.49,.97,.45,.64,.67,.22,.13,1,.84,.49,.16,.94,.07,.42,.19,.28,.94,.36,.89,.46,.83,.29,.7,.91,.14,.42,.8,.73,.07,.47,.75,.38,.97,.63,.69,.91,.47,.69,.56,.14,.47,.76,.52,.97,.44,.75,.5,.64,.19,.84,.99,.13,.5,.91,.86,.32,.05,.23,.42,.52,.3,.17,.33,.04,.89,.61,.73,.34,.93,.75,.15,.31,.7,.41,.07,.64,.84,.75,.41,.08,.48,.32,.39,.7,.11,.87,.14,.47,.27,.95,.77,.47,.93,.62,.53,.77,.12,.31,.96,.67,.49,.38,.73,.24,.4,.33,.6,.78,.39,.85,.15,.44,.2,.11,.89,.78,.09,.24,.73,.14,.45,.67,.22,.53,.83,.27,.75,.3,.2,.85,0,.28,.83,.37,.52,.78,.71,.6,.22,.37,.89,.66,.78,.57,.03,.68,.74,.17,.38,.03,.59,.81,.63,.98,.52,.22,.35,.27,.12,.85,.01,.25,.35,.19,.6,.3,.92,.8,.35,.3,.17,.36,.7,.23,.1,.88,.38,.55,.28,.72,.57,.17,.38,.47,.98,.72,.63,.89,.75,.55,.93,.64,.08,.78,.82,.19,.62,.53,.37,.05,.84,.49,.94,.23,.35,.01,.99,.53,.66,.76,.95,.57,.23,.64,.31,.89,.4,.12,.86,.16,.41,.31,.81,.03,.86,.56,.81,.25,.11,.58,.19,.8,.93,.05,.84,.25,.11,.73,.02,.67,.93,.36,.55,.31,.66,.2,.51,.41,.86,.06,.33,.63,.42,.01,.98,.59,.1,.7,.57,.18,.44,.92,.64,.27,.42,.04,.81,.54,.71,.25,.99,.49,.82,.11,.25,.55,.66,.95,.12,.24,.38,.03,.28,.88,.57,.92,.42,.53,.59,.77,.44,.12,.88,.02,.24,.7,.09,.86,.67,.03,.93,.58,.33,.95,.6,.06,.44,.9,.08,.24,.63,.14,.79,.28,.16,.02,.39,.12,.8,.44,.36,.28,.49,.42,.02,.24,.91,.66,.13,.59,.2,.73,.47,.6,.3,.21,.89,.26,.07,.48,.79,.01,.95,.52,.66,.07,.55,.73,.89,.07,.2,.49,.38,.61,.17,.4,.78,.97,.01,.62,.48,.69,.22,.47,.97,.59,.52,.8,.26,.72,.05,.42,.89,.8,.03,1,.76,.17,.93,.78,.09,.69,.45,.89,.39,.82,.34,.98,.75,.1,.04,.34,.17,.9,.32,.11,.49,.05,.15,.33,.38,.61,.97,.07,.85,.34,.44,.77,.54,.73,.17,.69,.8,.05,.65,.19,.93,.09,.83,.51,.97,.36,.53,.43,.62,.97,.51,.81,.16,.45,.03,.75,.27,.16,.8,.35,.67,.77,.85,.53,.11,.56,.36,.96,.6,.24,.48,.69,.23,.91,.12,1,.69,.8,.55,.44,.98,.31,.8,.08,.89,.69,.84,.39,.12,.62,.18,.88,.31,.7,.56,.2,.78,.35,.62,.24,.58,.97,.65,.7,.95,.04,.49,.91,.33,.68,.47,.29,.38,.95,.16,.67,.37,.29,.19,.89,.49,.61,.16,.95,.56,.48,.27,.62,.34,.56,.48,.28,.92,.55,.15,.77,.05,.63,.24,.12,.49,.59,.84,.97,.53,.75,.64,.97,.44,.86,.62,.91,.22,.79,.44,.31,.72,.52,.19,.93,.09,.88,.49,.41,.11,.98,.31,.72,.28,.41,.58,.3,.74,.66,.15,.84,.05,.2,.41,.27,.62,.87,.82,.53,.67,.47,.86,.58,.04,.42,.94,.33,.69,.88,.45,.83,.67,.05,.86,.98,.01,.66,.57,.3,.85,.05,.22,.27,.71,.03,.37,.53,.27,.16,.03,.57,.69,.82,.42,.53,.99,.36,.09,.83,.28,.98,.02,.46,.15,.33,.43,.18,.28,.75,.24,.82,.08,.22,.89,.85,.13,.76,.58,.07,.89,.77,.07,.42,.04,.83,.22,.7,.34,.13,.9,.7,.06,.25,.74,.11,.83,.35,.25,.52,.43,.94,.53,.86,.72,.31,.2,.7,.56,.36,.27,.2,.58,.36,.74,.1,.5,.69,.16,.93,.04,.78,.6,.28,.65,.34,.96,.23,.62,.36,.47,.88,.06,.72,.95,.21,.04,.79,.27,.91,.59,.33,.77,.1,.69,.31,.21,.36,.12,.95,.31,.2,1,.28,.48,.03,.24,.76,.07,.19,.34,.76,.15,.33,.55,.39,.76,.16,.48,.37,.94,.51,.84,.62,.92,.67,.42,.94,.79,.45,.97,.36,.03,.75,.13,.24,.46,.73,.14,.4,.85,.69,.5,.83,.76,.09,.89,.45,.68,.56,.4,.64,.52,.05,.23,.53,.34,.81,.44,.24,.67,.56,.98,.37,.52,.78,.02,.4,.21,.81,.45,.87,.59,.4,.2,.66,1,.08,.29,.2,.67,.01,.39,.27,.79,.45,.09,0,.78,.94,.07,.8,.28,.66,.02,.88,.39,.58,.23,.42,.91,.13,.38,.82,.03,.56,.77,.16,.82,.54,.16,.61,.33,.12,.63,.44,.37,.48,.73,0,.91,.56,1,.44,.07,.92,.63,0,.77,.52,.12,.8,.18,.59,.4,.99,.29,.56,.52,.94,.42,.62,.84,.08,.95,.25,.6,.74,.65,.11,.16,.45,.21,.06,.76,.32,.49,.18,.07,.66,.27,.61,.86,.66,.91,.48,.61,.89,.19,.75,.29,.04,.91,.54,.6,.34,.01,.99,.14,.31,.72,.81,.41,.99,.62,.05,.49,.96,.73,.33,.13,.67,.27,.88,.59,.94,.65,.16,.37,.99,.05,.81,.53,0,.73,.6,.85,.8,.36,.47,.09,.94,.64,.13,.91,.84,.47,.67,.53,.22,.42,.96,.55,.34,.76,.12,.48,.69,.04,.75,.53,.47,.2,.71,.9,.26,0,.67,.85,.42,.91,.78,.55,.87,.19,.11,.97,.66,.37,.48,.16,.65,.8,.56,.27,.72,.4,.61,.47,.71,.92,.67,.83,.15,.64,.92,.05,.47,.12,.28,.73,.2,.51,.82,.42,0,.32,.77,.56,.29,.8,.98,.59,.11,.63,.27,.87,.54,.92,.19,.42,.02,.8,.18,.07,.53,.32,.13,.99,.63,.38,.24,.15,.84,.77,.18,.85,.49,.93,.59,.16,.69,.27,.84,.12,.59,.18,.89,.45,.83,.19,.44,.11,.75,.5,.56,.09,.31,.65,.25,.92,.44,.35,.7,.13,.55,.97,.76,.59,.86,.55,.36,.25,.62,.17,.32,.11,.61,.85,.13,.45,.23,.64,.84,.99,.34,.86,.29,.98,.78,.09,.63,.31,.5,1,.38,.22,.08,.49,.26,.02,.99,.71,.59,.31,.22,.13,.84,.24,.04,.35,.84,.44,.17,.89,.05,.86,.38,.25,.07,.53,.45,.36,.25,.7,.8,.66,.91,.5,.36,.06,.69,.89,.2,.82,1,.39,.7,.09,.36,.19,.91,.72,.37,.78,.16,.47,.81,.34,.56,.29,.95,.37,.8,.67,.44,.58,.2,.49,.71,.96,.29,.49,.71,.44,.25,.11,.34,.01,.46,.91,.22,.37,.55,.28,.01,.79,.59,.05,.98,.36,.29,.23,.85,.78,.71,.47,.11,.76,.87,.22,.96,.39,.28,.09,.23,.17,.31,.05,.46,1,.69,.39,.88,.77,.98,.36,.05,.73,.94,.06,.18,.44,.57,.1,.17,.59,.25,.35,.94,.42,.08,.59,.74,.33,.95,.61,.81,.41,.33,.08,.52,.79,.45,.91,.72,.58,.95,.75,.49,.17,.99,.33,.23,.65,.15,.55,.31,.84,0,.76,.87,.17,.38,.22,0,.87,.99,.63,.3,.11,.54,.5,.05,.24,.86,.52,.64,.47,.4,0,1,.61,.33,.69,.08,.98,.52,.12,.71,.43,.25,.92,.02,.86,.35,.78,.05,.65,.41,.1,.63,.05,.77,.65,.96,.4,.81,.66,.09,.78,.71,.86,.42,.35,.22,.72,.52,.86,.71,.04,.97,.4,.19,.95,.15,.37,.57,.06,.79,.46,.65,.72,.51,.93,.69,.82,.74,.07,.57,.28,.03,.43,.72,.56,.3,.81,.52,.4,.7,.28,.81,.66,.42,.91,.67,.12,.82,.55,.87,.18,.45,.77,.09,.69,.16,.77,.65,.24,.92,.39,.64,.08,.51,.32,.41,.23,.09,.7,.58,.8,.49,.1,.79,.96,.72,.2,.95,.53,.09,.61,.98,.52,.33,.54,.15,.78,.39,.94,.73,.17,.66,.6,.12,.92,.77,.27,.83,.57,.11,.23,.43,.03,.87,.25,.75,.63,.84,.08,.61,.76,.15,.53,.94,.27,.08,.91,.53,.22,.94,.36,.9,.5,.21,.56,.16,.56,.34,.97,.49,.1,.62,.67,.93,.49,.14,.62,.2,.58,.12,.34,.63,.55,.84,.68,.3,.51,.2,.91,.02,.89,.38,.45,.13,.27,.41,.18,.79,.94,.52,.11,.25,.19,.66,.89,.14,.59,.88,.02,.49,.21,.78,.51,0,.47,.75,.21,.03,.7,.84,.27,.54,.38,.22,.91,.56,.84,.02,.73,.18,.28,.83,.02,.92,.64,.88,.29,.04,.44,.75,.93,.45,.39,.61,.11,.67,.42,.28,.47,.82,.06,.75,.69,.43,.23,.04,.58,.33,.45,.96,.32,.41,.22,.05,.32,.16,.91,.49,.81,.95,.65,.55,.38,.21,.47,.17,1,.31,.49,.22,.69,.42,.69,.56,.84,.34,.73,.82,.56,.13,.3,.84,.73,.89,.29,.44,.03,.24,.92,.21,.84,.06,.28,.38,.81,.42,.94,.48,.82,.27,.01,.44,.23,.94,.05,.56,.33,.62,.3,.05,.8,.98,.61,.51,.86,.14,.36,.62,.81,.94,.48,.08,.4,.22,.31,.95,.73,.35,.99,.06,.3,.87,.62,.37,.27,.92,.36,.12,.64,.02,.88,.47,.29,.13,.44,.36,.88,.49,.99,.6,.7,.12,.47,.8,.36,.95,.65,.28,.19,.02,.27,.86,.49,.27,.77,.92,.15,.63,.43,.29,.12,.84,.94,.48,.8,.86,.06,.77,.37,.58,.8,.98,.62,.75,.68,.27,.18,.35,.73,.14,.9,.8,.01,.35,.56,.89,.36,.08,.84,.3,.12,.21,.44,.16,0,.29,.47,.17,.71,.04,.27,.06,.94,.62,.83,.69,.53,.36,.15,.56,.77,.97,0,.25,.75,.09,.67,.76,.89,.09,.72,.59,.83,.69,.23,.84,.16,.72,.56,.33,0,.25,.91,.67,.47,.22,.74,.38,.59,.96,.7,.77,.55,.11,.62,.14,.82,.58,.27,.72,.15,.98,.58,.67,.52,.43,.99,.57,.76,.95,.03,.61,.78,.18,.58,.09,.23,.42,.36,.2,.55,.25,.6,.18,.13,.55,.84,.63,.7,.06,.18,.84,.35,.04,.7,.2,.88,.97,.36,.62,.08,.64,.19,.27,.1,.63,.89,.01,.71,.53,.47,.04,.4,.58,.78,.51,.08,.26,.68,.49,.6,.83,.7,.11,.67,.57,.97,.64,.76,.48,1,.6,.76,.66,.88,.99,.61,.4,.47,.69,.51,.17,.13,.32,.58,.78,1,.45,.33,.59,.88,.52,.31,1,.37,.14,.59,.96,.42,.32,.12,.99,.42,.54,.95,.49,.18,.83,.64,.73,.37,.09,.84,.03,.3,.16,.84,.34,.01,.84,.17,.44,.29,.54,.39,.66,.89,.43,.11,.83,.06,.78,.2,.88,.3,.15,.41,.33,.73,.51,.97,.67,.31,.92,.65,.75,.84,.98,.74,0,.9,.49,.77,.36,.89,.4,.52,.96,.75,.42,.58,1,.5,.33,.01,.67,.18,.53,.33,.7,.39,.55,.93,.22,.51,.15,.28,.35,.23,.89,.13,.96,0,.88,.44,.99,.33,.09,.95,.28,.21,.45,.78,.16,.33,0,.91,.36,.82,.08,.4,.53,.09,.35,.53,.78,.93,.34,.84,.76,.43,.87,.08,.27,.02,.66,.22,.69,.1,.16,.64,.55,.22,.47,.31,.51,.18,.78,.46,.09,.8,.03,.67,.26,.4,.88,.12,.45,.28,.58,.97,.48,.79,.65,.11,.5,.27,.47,.94,.67,.86,.94,.19,.06,.8,.2,.53,.33,.47,.41,.09,.71,.81,.23,.71,.1,.83,.25,.14,.37,.81,.03,.51,.11,.33,.06,.42,.82,.31,.69,1,.08,.25,.12,.81,.33,.09,.65,.24,.09,.75,.86,.58,.47,.78,.27,.89,.06,1,.47,.79,.68,.42,.86,.95,.06,.83,.77,.55,.31,.23,.67,.63,.8,.2,.73,.41,.65,.04,.98,.84,.27,.47,.53,.09,.24,.69,.31,.94,.2,.24,.85,.03,.16,.22,.1,.38,.01,.66,.95,.48,.73,.88,.4,.12,.89,.45,.8,.4,.85,.03,.89,.8,.66,.01,.88,.25,.58,.18,.36,.75,.91,.08,.52,.76,.97,.18,.75,.24,.42,.55,1,.22,.77,.63,.38,.05,.58,.23,.02,.75,.48,.35,.59,.93,.74,.24,.96,.62,.02,.52,.46,.88,.22,.56,.42,.05,.86,.58,.45,.18,.88,.27,.63,.58,.41,.09,.21,.44,.58,.73,.47,.2,.92,.56,.37,.91,.46,.17,.26,.38,.95,.09,.83,.42,.74,.15,.6,.31,.04,.33,.73,.56,.46,.66,.18,.44,.73,.48,.16,.38,.51,.03,.59,.13,.88,.52,.35,.14,.62,.95,.8,.73,.44,.57,.15,.76,.59,.73,.44,.78,.89,.66,.6,1,.27,.55,.22,.36,.16,.53,.63,.84,.35,.28,.95,.05,.7,.61,.13,.7,.25,.95,.55,.69,.92,.49,.86,.14,.31,.58,.22,.33,.04,.55,.68,.12,.88,.06,.35,.45,.93,.83,.15,.7,.32,.77,.42,.69,.98,.12,.86,0,.66,.16,.82,.44,.33,.93,.58,.05,.99,.64,.75,.93,.26,.71,.34,1,.69,.51,.92,.7,.16,.95,.64,.81,.02,.86,.68,.59,.28,.02,.84,.69,.31,.82,.63,.06,.69,.16,.56,.63,.36,.22,.87,.09,.97,.18,.62,.11,.32,1,.02,.64,.94,.84,.11,.91,.22,.84,.93,.45,.73,.31,.58,.71,.05,.38,.29,.19,.97,.87,0,.46,.93,.11,.39,.57,.28,.49,.73,.45,.8,.06,.72,.84,.78,.31,.92,.05,.57,.73,.53,.24,.33,.98,.49,.41,.34,.06,.44,.31,.71,.07,.64,.44,.81,.7,.95,.65,.42,.91,.81,.33,.62,.16,.72,.59,.28,.09,.51,.97,.88,.12,.53,.28,.61,.25,.4,.52,.3,.58,.89,.22,.76,.18,.38,.7,.29,.36,.47,.18,.55,.11,.22,.8,.39,.14,.05,.24,.86,.53,.33,.51,.27,.37,.11,.98,.4,.75,.14,.49,.02,.92,.54,.73,.31,.96,.45,.02,.84,.49,.67,.44,.53,.84,.89,.25,.52,.8,.39,.25,.06,.77,.29,.67,.61,.42,.34,.25,.8,.07,.18,.91,.49,.87,.67,.12,.62,.33,.52,.81,.32,.66,.19,.96,.06,.35,.08,.2,.9,.64,.48,.13,.05,.44,.22,.5,.18,.65,.13,.45,.78,.16,.25,.76,.92,.63,.84,.15,.38,.22,.98,.27,.53,.01,.16,.79,.62,.27,.06,.41,.53,.94,.26,.03,.87,.42,.24,.6,.35,.21,.83,.56,.04,.78,.7,.97,.07,.37,.11,.53,.65,.08,.85,.5,.12,.8,.01,.87,.41,.75,.63,.01,.56,.77,.36,.45,.8,.04,.69,.14,.95,.44,.83,.16,.53,.67,.24,.99,.61,.41,.23,.12,.38,.78,.21,.3,.92,.11,.8,.27,.72,.37,.45,.04,.73,.87,.16,.6,.51,.34,.56,.02,.76,.12,.69,0,.63,1,.42,.77,.24,.56,.02,.46,.84,.27,.69,.07,.23,.84,.48,.76,.68,.85,.94,.53,.16,.31,.38,.98,.6,.67,.76,.96,.08,.88,.38,.95,.67,.56,.87,.06,.2,.52,.11,.77,.47,.55,.69,.09,.91,.39,.48,.24,.13,.45,.91,.19,.84,.75,.48,.78,.55,.66,.75,.02,.44,.65,.96,.16,.91,.34,.45,.19,.84,.7,.78,.41,.28,.93,.42,.74,.24,.91,.6,.68,.31,.84,.95,.48,.29,.86,.94,.61,.29,.41,.72,.87,.2,.58,.77,.3,.05,.88,.44,.35,.19,.77,.96,.49,.91,.62,.53,.7,.38,.58,.31,.95,.06,.16,.65,.93,.21,.42,.67,.95,.21,.89,.46,.97,.27,.49,.95,.88,.17,.51,.36,.84,.16,.31,.7,.96,.2,.75,.42,.15,.98,.55,.01,.31,.22,.42,.6,.25,.76,.44,.89,.23,.55,.16,.33,.85,.28,.71,.59,.03,.3,.09,.63,.34,.58,.7,.23,.96,0,.33,.82,.18,.74,.31,.87,.98,.56,.77,.7,.58,.06,.3,.12,.98,.19,.13,.95,.31,.8,.09,.49,.39,.76,.08,.55,.28,.62,.46,1,.13,.84,.57,.03,.64,.34,.52,.09,.22,.46,.16,.07,.24,.66,.18,.12,.7,.21,.99,.07,.34,.62,.04,.73,.38,.94,.62,.81,.09,.69,.07,.66,.27,0,.83,.09,.99,.66,.05,.19,.75,.61,.5,.78,.31,.56,.08,.48,.33,.82,.12,.71,.16,.86,.2,.36,.55,.45,.28,.69,.09,.61,.94,.78,.37,.53,.05,.9,.57,.71,.36,.88,.63,.09,.48,.82,.02,.72,.67,.11,.74,.84,.4,0,.62,.47,.36,.2,.82,.49,.92,.41,.82,1,.45,.31,.88,.66,.14,.94,.45,.58,.64,.07,.69,.37,.02,.33,.96,.43,.67,.56,.35,.4,.84,.5,.56,.71,.9,.26,.67,.23,.64,.82,.93,.04,.23,.34,.07,.49,.31,.96,.17,.83,.39,.73,.99,.8,.36,.55,.92,.73,.44,.53,.02,.85,.56,.47,.79,.26,.97,.49,.22,.12,.57,.28,.38,.87,.53,.84,.44,.57,.35,.24,.14,.77,.47,.91,.41,.25,1,.35,.13,.73,.96,.61,0,.73,.24,.59,.42,.62,.75,.08,.82,.1,.74,.96,.01,.5,.42,.17,.09,.3,.63,.45,.81,.28,.11,.44,.77,1,.71,.36,.18,.96,.49,.03,.29,.93,.52,.7,.89,.13,.54,.99,.76,.13,.69,.25,.17,0,.77,.09,.59,.55,.42,.71,.24,.05,.93,.19,.44,.82,.14,.51,.23,.82,.16,.91,.61,.04,.7,.24,.05,.17,.34,.55,.03,.98,.5,.13,.39,.71,.57,.91,.64,.75,.21,.7,.11,.45,.92,.26,.04,.51,.63,.87,.02,.33,.8,.93,.39,.31,.65,.15,.43,.87,.11,.67,.35,.85,.72,.01,.95,.45,.31,.13,.19,.75,.68,.86,.44,.26,.58,.86,.09,.55,.83,.02,.88,.53,.38,.16,.9,.53,.37,.95,.09,.3,.55,.67,.33,.23,.86,.4,.62,.25,.85,.58,.66,.98,.86,.12,.19,.66,.94,.2,.53,.16,.06,.58,.87,.33,.54,.86,.36,.17,.11,.45,.23,.79,.07,.42,.27,.48,.36,.88,.55,.66,.4,.22,.84,.18,.29,.87,.5,.33,.78,.51,.27,.95,.62,.88,.09,.4,.77,.27,.47,.8,.91,.32,.64,.98,.41,.84,.78,.42,.31,.88,.1,.77,.43,.18,.85,.55,.39,.88,.78,.56,.15,.64,.3,.75,.18,.69,.42,.21,.6,.15,.74,.25,.89,.05,.71,.3,.56,.92,.44,.78,.2,.5,.69,.22,.64,1,.38,.93,.05,.53,.95,.35,.02,.69,.33,.15,.67,.45,.27,.81,.23,.84,.31,.66,.05,.83,.49,.89,.01,.44,1,.6,.48,.14,.91,.32,.74,.03,.45,.24,.72,.35,.41,.51,.04,.74,.33,.84,.27,.75,.44,.24,.16,.61,.76,.64,.99,.75,.31,.94,.65,.85,.05,.64,.96,.07,.32,.57,.92,.49,.92,.7,.05,.99,.11,.6,.88,.04,.72,.11,.47,.75,.64,.53,0,.71,.22,.08,.53,.43,.76,.5,.13,.61,.06,.18,.58,.67,.25,.53,.3,.81,.02,.11,.43,.29,.04,.34,.85,.6,.44,.91,.12,.27,.5,.99,.06,.69,.45,.52,.94,.61,.79,.39,.19,.01,.61,.07,.39,.96,.16,.76,.04,.6,.78,.28,.49,.11,.64,.21,.8,.5,.96,.39,.77,.62,.08,.42,.68,.11,.49,.42,.78,.19,.71,.23,.93,.8,.18,.7,.05,.55,.77,.2,.95,.36,.82,.49,.02,.94,.57,.88,.84,.59,.41,.93,.5,.63,.02,.8,.89,.39,.47,.28,.55,.03,.6,.38,.16,.54,.31,.72,.19,.79,.84,.27,.75,.06,.34,.81,.56,.37,.75,.19,.45,.39,.85,.59,.22,.36,.27,.94,.34,.97,.59,.86,.17,.97,.03,.22,.88,.29,.7,.95,.82,.34,.92,.06,.97,.49,.34,.93,.77,.64,.96,.51,.21,.82,.02,.99,.35,.56,.88,.76,.36,.27,.87,0,.35,.12,.22,.67,1,.81,.26,.65,.89,.29,.53,.36,.86,.45,.08,.22,.67,.83,.4,.73,.91,.23,.12,.58,.89,.2,1,.55,.76,.94,.59,.15,1,.63,.35,.57,.13,.28,.41,.87,.24,.35,.69,.07,.5,.11,.89,.6,.21,.7,.08,.3,.15,.26,.04,.67,.13,.39,.98,.7,.09,.67,.05,.89,.15,.84,.48,.71,.12,.77,.95,.57,.03,.44,.58,.12,.17,.43,.63,.11,.22,.66,.31,.94,.69,.24,.33,.95,.05,.78,.13,.85,.18,.49,.42,.3,.66,.37,.59,.78,.68,.36,.52,.24,.03,.45,.15,.59,.65,.21,.7,.59,.15,.23,.67,.08,.36,.7,.23,.47,.63,.73,.04,.17,.53,.64,.8,.19,.44,.83,.57,.46,.32,.5,.75,.11,.47,.8,.03,.7,.25,.91,.51,.73,.97,.33,.05,.56,.08,.42,.78,.27,.02,.49,.3,.14,.33,.03,.88,.25,.32,0,.45,.75,.64,.51,.09,.64,.96,.45,.84,.6,.42,.66,.16,.28,.78,.43,.84,.64,.47,.73,.96,.22,.83,.29,.17,.52,.34,.22,.96,.31,.78,.36,.22,.96,.28,.44,.22,.67,.4,.98,.48,.67,.86,.97,.51,.86,.95,.45,.55,.08,.79,.15,.55,.67,.5,.91,.59,.45,.66,.09,.81,.73,.13,.84,.27,.08,.46,.91,.12,.64,.55,.75,.83,.4,.87,.27,.08,.96,.33,.83,.43,.91,.78,.14,.52,.84,.09,.22,.43,.84,.97,.09,.31,.73,.99,.66,.03,.87,.08,.16,.95,.35,.22,.58,.78,.42,.19,.65,.33,.16,.42,.58,.18,.95,.35,.66,.62,.85,.36,.75,.92,.84,.64,.47,.38,.74,.55,.89,.81,.16,.98,.38,.78,.57,.11,.31,.19,.87,.25,.98,.73,.39,.55,.11,.99,.18,.38,.89,.53,.45,.76,.58,.87,.46,.78,.58,.73,.5,.42,.67,.08,.63,.87,.5,.09,.91,.14,.29,.21,.36,.77,.24,.3,.74,.15,.03,.83,.27,.63,.99,0,.41,.26,.73,.04,.25,.56,.9,0,.22,.55,.48,.94,.64,.33,.17,.83,.4,.99,.21,.33,.11,.73,.53,.43,.78,.48,.09,.55,.31,.59,.95,.31,.75,.4,.92,.67,.33,.24,.43,.61,.53,.15,.41,.28,.94,.71,.61,.38,.83,.7,.09,.98,.51,.11,.94,.8,.03,.87,.27,.75,.86,.48,.15,.99,.07,.44,.68,.11,.56,.22,.86,.18,.64,.8,.08,.39,.27,.05,.84,.23,.91,.73,.5,.01,.76,.33,.09,.46,.02,.91,.27,.49,.73,.01,.56,.09,.31,.7,.02,.24,.1,.93,.39,.01,.62,.11,.89,.55,.73,.02,.81,.35,.77,.62,.83,.73,.01,.55,.06,.38,.48,.67,.35,.89,.42,.49,.33,.77,.88,.18,.46,.98,.38,.76,.29,.63,1,.4,.76,.2,.01,.98,.58,.77,.05,.3,.68,.5,0,.94,.19,.65,.05,.88,.37,.73,0,.18,.47,.07,.65,.27,.86,.13,.51,.71,.87,.03,.92,.24,.77,.49,.34,.2,.78,.02,.49,.91,.16,.32,.75,.59,.28,.39,.55,.95,.65,.46,0,.7,.31,.23,.8,.2,.53,.25,.39,0,.51,.95,.11,.22,.5,.94,.62,.69,.47,.33,.16,.41,.96,.64,.54,.91,.59,.8,.69,.87,.62,.31,.67,.8,.28,.85,.15,.48,1,.6,.66,.29,.15,.86,.2,.99,.27,.33,.16,.4,.66,.19,.58,.07,.54,.94,.45,.63,.81,.59,.04,.25,.57,.76,.08,.18,.59,.8,.09,.29,.64,.81,.15,.53,.86,.45,.32,.05,.89,.66,.42,.72,.24,.48,.35,.88,.61,.81,.45,.58,.84,.36,.25,.63,.22,.99,.66,.84,.36,.91,.56,.15,.45,.59,.02,.79,.2,.47,.37,.82,.59,.06,.86,.44,.56,.31,.53,.25,.62,.44,.01,.82,.2,.69,.48,.09,.37,.21,.82,.42,.9,.58,.45,.93,.64,.87,.98,.75,.7,.29,.44,.58,.31,.72,.18,.55,.88,0,.61,.27,.82,.19,.38,.13,.27,.45,.19,.34,.15,.08,.4,.96,.23,.64,.91,.41,.2,.81,.42,.92,.75,.49,.35,.75,.52,.45,.89,.96,.29,.45,.94,.24,.33,.13,.27,.99,.19,.9,.79,.96,.22,.71,.86,.94,.24,.45,.69,.91,.58,.33,.07,.69,.18,.12,.71,.59,.14,.52,.3,.83,.15,.86,.62,.09,.16,.97,.23,.29,.91,.12,.78,.94,.44,.15,.53,.8,.24,.72,.05,.96,.81,.29,.37,1,.64,.27,.07,.69,.15,.97,.64,.11,.8,.98,.07,.88,.73,.37,.89,.55,1,.06,.77,.15,.88,.55,.07,.63,.11,.34,.75,.05,.33,.12,.46,.36,.05,.62,.82,.97,.03,.87,.11,.28,.42,.78,.93,.7,.06,.45,.67,.9,.63,.07,.97,.53,.77,.92,.48,.12,.36,.53,.8,.04,.7,.34,.06,.53,.23,.66,.59,.08,.82,.69,.05,.55,.09,.86,.69,.43,.78,.86,.7,.38,.14,.33,.63,.52,.4,.13,.31,.67,.04,.39,.52,.21,.02,.75,.92,.61,.42,.95,.8,.25,.86,.34,.94,.05,.45,.69,.22,.75,.44,.38,.71,.05,.66,.46,.53,.7,.03,.57,.29,.11,.61,.42,.52,.19,.69,.92,.07,.55,.85,.41,.95,.79,.45,.3,.4,.24,.69,.15,.42,.79,.2,.11,.67,.14,.28,.42,.61,.31,.69,.98,.3,.76,.94,.52,.85,.09,.59,.7,.19,.57,.91,.23,.15,.75,.37,.47,.79,.99,.62,.09,.5,.36,.56,.86,.01,.25,.75,.39,.81,.65,.22,.58,.87,.72,.02,.62,.44,.28,.92,.5,.12,.85,.33,.04,.94,.4,.14,.23,.6,.8,.24,.73,.02,.16,.6,.5,.04,.55,.72,.44,.07,.86,0,.6,.47,.54,.84,.95,.14,.86,.41,.48,.24,.29,.54,.01,.65,.48,.09,.74,.2,.61,.37,1,.31,.91,.55,.06,.86,.58,.4,.21,.09,.31,.82,.4,.87,.49,.93,.76,.33,.11,.44,.64,.22,.14,.73,.32,.12,.58,.5,.01,.86,.93,.51,.36,.6,.3,.56,.95,.34,.48,.85,.73,.92,.24,.81,.41,.57,.15,.22,.68,.27,.41,.78,.95,.29,.84,.68,.49,.41,.09,.65,.58,.24,.05,.38,.84,.23,.13,.97,.3,.77,.51,.96,.31,.1,.46,.03,.39,.29,.18,.82,.97,.3,.17,.67,.76,.6,.99,.44,.8,.26,.89,.31,.73,.38,.92,.34,.52,.39,.99,.3,.91,.23,.67,.94,.28,.17,.73,.36,1,.77,.27,.07,.75,.28,.61,.99,.8,.11,.84,.91,.36,.22,.98,.38,.68,.56,.78,.11,.53,0,.66,.25,.76,.17,.49,.99,.81,.89,.6,.25,.95,.75,.05,.17,.27,.84,.56,.88,.35,.84,.45,.52,.62,.2,.86,.27,.73,.59,.17,.75,.05,.92,.71,.09,.51,.75,.63,.09,.36,.02,.5,.13,.04,.49,.87,.38,.02,.99,.54,.23,.5,.39,.02,.13,.8,.27,.9,.51,.19,.85,.69,.54,.17,.76,.64,.43,.6,.18,.45,.13,.58,.91,.27,.8,.99,.67,.51,.72,.08,.88,.56,.08,.39,.28,.2,.7,.09,.56,.64,.51,1,.08,.48,.13,.63,.87,.54,.09,.8,.35,.1,.58,.81,.48,.92,.57,.22,.15,.9,.42,.48,.68,.09,.36,.17,.64,.58,.73,.16,.78,.55,.29,.03,.93,.27,.85,.72,.17,.81,.45,.92,.31,.64,0,.28,.72,.16,.53,.08,.36,.69,.59,1,.01,.49,.16,.76,.06,.27,.95,.02,.99,.68,.36,.11,.67,.08,.47,.81,.26,.44,.86,.02,.25,.91,.19,.56,.84,.65,.95,.73,.31,.8,.62,.45,.72,.16,.87,.09,.76,.61,.99,.34,.71,.95,.03,.73,.3,.42,.94,.58,.88,.33,.09,.94,.85,.34,.66,.87,.18,.72,.62,.16,.08,.42,.24,.34,.47,.69,.85,.96,.02,.5,.89,.36,.17,.75,.01,.82,.2,.67,.96,.04,.75,.27,.15,.63,.47,.89,.39,.23,.65,.35,.83,.04,.66,.79,.32,.18,.55,.77,.25,.53,.39,.05,.33,.45,.09,.62,.89,.48,.14,.44,.33,.95,.41,.6,.35,.11,.7,.22,.84,.38,.47,.44,.66,.82,.22,.45,.54,.38,.86,.69,.28,.95,.55,.68,.81,.39,.16,.77,.42,.91,.84,.42,.32,.64,.13,.19,.98,.61,.39,.8,.69,.3,.46,.26,.37,.6,.22,.95,.05,.31,.89,.59,.36,.66,.88,.43,.22,.56,.45,.17,.61,.34,.91,.12,.07,.24,.47,.8,.56,.05,.69,.23,.06,.53,.4,.48,.36,.84,.56,.91,.64,.97,.13,.2,.43,.24,.79,.62,.72,.4,.97,.47,.24,.58,.42,.3,.81,.22,.45,.69,.36,.84,.71,.15,1,.02,.52,.11,.29,.43,.49,.11,.61,.95,.86,.01,.92,.71,.88,.97,.27,.69,.93,.84,.17,.35,.78,.65,.05,.51,.14,.88,.04,.73,.96,.43,.58,.13,.96,.04,.86,.31,.94,.14,.77,.23,.09,.64,.2,.47,.37,.12,.6,.31,.49,.09,.56,.3,.22,.52,.97,.87,.56,.74,.38,.28,.12,.53,.98,.14,.75,.09,.87,.17,.55,.69,.12,.52,.8,.19,.05,.29,.51,.15,.73,.03,.86,.38,.11,.8,.47,.66,.77,.41,.01,.71,.18,.27,.49,.79,1,.75,.25,0,.95,.2,.76,.33,.03,.8,.59,.75,.55,.34,.89,.15,.55,.22,.07,.78,.33,.94,.72,.59,.35,.55,.85,.03,.98,.5,.05,.31,.6,.76,.18,.69,.88,.75,.97,.24,.71,.37,.14,.43,.32,.6,.12,.22,.75,.5,.02,.24,.44,.7,.56,.89,.21,.69,.76,.28,.62,.22,.53,.07,.82,.67,.25,.75,.59,.4,.49,.91,.72,.32,.42,.94,.8,.02,.91,.71,.2,.84,.91,.63,.03,1,.8,.06,.16,.72,.01,.48,.78,.66,.89,.43,.03,.36,.93,.67,.81,.01,.44,.92,.24,.65,.4,.47,.74,.96,.23,.8,.92,.32,.65,.25,.58,.97,.19,.28,.61,.86,.99,.36,.61,.94,.41,.58,.31,.15,.95,.68,.44,.09,.48,.72,.16,.4,.29,.91,.03,.67,.47,.07,.3,.91,.68,.6,.85,.12,.05,.77,.08,.93,.29,.13,.57,.2,.75,.26,.44,.85,.95,.41,.63,.15,.55,.84,.04,.46,.75,.53,.83,.05,.47,.56,.82,.36,.59,.75,.13,.95,.08,.28,.85,.55,.08,.99,.48,.88,.37,.75,.3,.91,.2,.36,.07,.64,.17,.01,.62,.85,.55,.15,.58,.34,.85,.44,.07,.55,.26,.73,.38,.6,.45,.67,.37,.27,.43,.1,.94,.19,.07,.73,.63,.21,.53,.58,.3,.48,.77,.37,.84,.15,.96,.08,.89,.69,.37,.57,.07,.48,.78,.88,.7,.43,.05,.94,.55,.14,.22,.5,.76,.11,.88,.04,.46,.64,.53,.82,.29,.61,.91,.24,.84,.52,.65,.11,.95,.19,.56,.99,.83,.42,.02,.52,.19,.39,.51,.84,.15,.47,.62,.8,.42,.89,.65,.95,.37,.08,.22,.48,.01,.27,.36,.19,.64,.28,1,.18,.24,.67,.96,.36,.06,.16,.97,.31,.52,.78,.38,.48,.16,.4,.83,.36,.19,.65,.12,.18,.45,.61,.5,.95,.82,.23,.78,.45,.27,.05,.96,.39,.69,.23,.53,.17,.77,.98,.36,.14,.84,.2,.12,.73,.58,.99,.81,.62,.32,.24,.56,.81,.27,.87,.41,.05,.92,.25,.62,.08,.76,.56,.33,.62,.42,0,.16,.63,.39,.97,.19,.16,.03,.53,.33,.74,.39,.69,.09,.84,.44,.17,.67,.73,.2,.36,.09,.89,.16,.69,.37,.06,.58,.97,.24,.36,.8,.4,.26,.77,.36,.16,.75,.31,.98,.65,.27,.97,.41,.68,.25,.73,.32,.12,.51,.02,.72,.58,.88,.82,.67,.93,.42,.91,.8,.11,.58,.89,.38,.76,.31,.71,.92,.64,.44,.84,.2,.62,.02,.99,.72,.64,.45,.03,.71,.8,.6,1,.02,.72,.09,.42,.71,.32,.98,.88,.37,.73,.18,.51,.77,.03,1,.62,.41,0,.67,.47,.94,.52,.32,.89,.48,.23,.14,.89,.52,.78,.39,1,.49,.12,.77,.18,.68,.13,1,.2,.52,.05,.27,.78,.22,.54,.82,.92,.11,.27,.53,.37,.77,.89,.24,.85,.03,.47,.31,.96,.57,.25,.34,.97,.85,.27,.76,.59,.03,.5,.99,.74,.44,0,.73,.47,.6,.71,.01,.49,.66,.59,.25,.88,.45,.1,.71,.21,.55,0,.9,.09,1,.48,.18,.82,.63,.29,.34,.11,.53,.75,.05,.7,.49,.33,.69,0,.84,.44,.09,.19,.5,.27,.04,.69,.15,.5,.66,.33,.24,.12,.91,.56,.26,.42,.91,.51,.3,.38,.89,.16,.54,.02,.41,.58,.66,.11,.81,.28,.88,.13,.66,.82,.29,.87,.57,.09,.77,.26,.03,.93,.09,.41,.66,.02,.47,.67,.05,.16,.31,.72,.96,.61,.36,.84,.55,.42,.67,.93,.89,.7,.13,1,.35,.47,.68,.75,.6,.94,.45,.63,.16,.58,.78,.9,.63,.73,.03,.81,.53,.59,.03,.49,.98,.41,.23,.8,.34,.16,.82,.2,.93,.3,.14,.86,.95,.21,.11,.94,.78,.06,.55,.81,.36,.9,.74,.37,.83,.28,.59,.69,.25,.92,.4,.17,.65,1,.18,.59,.29,.14,.58,.97,.27,.51,.15,.58,.95,.63,.41,.88,.77,.34,.92,.42,.81,.88,.59,.79,.31,.96,.15,.06,.35,.23,.86,.67,.78,.25,.63,.84,.11,.21,.51,.97,.59,.44,.2,.38,.48,.34,.13,.52,.2,.89,.39,.63,.7,.55,.18,.73,.86,.3,.96,.21,.89,.44,.64,.55,.02,.47,.25,.73,.05,.8,.35,.18,.47,.38,.51,.74,.27,.07,.86,.31,.02,.83,.09,.28,.98,.11,.41,.19,.26,.13,.39,.89,.22,.42,.12,.67,.32,.72,.11,.91,.64,.27,.38,.66,.51,.8,.05,.34,.45,.55,.85,.33,.4,.17,.7,.59,.13,.09,.63,.16,.51,.42,.03,.76,.39,.52,.05,.78,.45,.23,.39,.85,.47,.22,.87,.09,.36,.77,.71,.33,.01,.8,.55,.11,.58,1,.05,.27,.19,.09,.52,.05,.69,.47,.82,.71,.63,.75,.56,.04,.21,.99,.47,.31,.75,.8,.27,.33,0,.72,.91,.56,.93,.05,.74,.96,.3,.72,.07,.36,.97,.42,.8,.35,.59,.51,.13,.35,.6,.81,.08,.25,.83,.33,.9,.51,.29,.1,.88,.59,.03,.84,.07,.62,.42,.78,.15,.53,.24,.39,.67,.48,.71,.36,.67,.53,.87,.5,.67,.09,.62,.93,.8,.87,.2,.62,.47,.84,.53,.07,.59,.88,.12,.27,.58,.93,.67,.27,.03,.7,.48,.91,.28,.96,.42,.49,.31,.97,.78,.64,.22,.85,.12,.97,.71,.53,.87,.73,.04,.92,.67,.78,.42,.63,.2,.91,.44,1,.22,.76,.34,.25,.16,.45,.63,.55,.75,.36,.95,.42,.22,.36,.89,.52,.07,.95,.13,.47,.36,.58,.07,.9,.68,.05,.91,.42,.15,.64,.08,.78,.19,.69,.6,.4,.8,.53,.17,.83,.22,.05,.64,.27,.98,.07,.73,.78,.52,.93,.31,.75,.96,.17,.11,.64,.97,.4,.71,.25,.66,.31,.95,.22,.92,.55,.64,.98,.77,.9,.17,.03,.83,.24,.94,.02,.79,.34,1,.77,.29,.07,.36,.55,.09,.9,.36,0,.21,.79,.44,.94,.36,.72,.64,.41,.15,.78,.89,.57,.12,.63,.02,.23,.77,.88,.7,.25,.1,.94,.34,.56,.65,.31,.22,.08,.32,.63,.13,.55,.28,0,.95,.73,.51,.05,.27,.66,.47,.09,.94,.65,.73,.83,.31,.92,.69,.12,.84,.63,.73,.09,.25,.39,.2,.44,.3,.91,.82,.75,.16,.45,.37,.61,.53,.75,.87,.5,.33,.28,.42,.84,.23,.12,.03,.45,.93,.59,.5,.88,.11,.55,.16,.83,.41,.25,.16,.02,.38,.59,.49,.68,.42,.8,.56,.19,.77,.97,.53,.16,.77,.48,.02,.31,.38,.12,.44,.59,.34,.96,.58,.47,.74,.11,.6,.22,.45,.16,.58,.71,.25,.45,.77,.28,.56,.74,1,.69,.33,.03,.17,.47,.99,.2,.09,.51,.36,.22,.76,.86,.51,.37,.66,.2,.03,.45,.37,.68,.06,.89,.46,.4,.8,.93,.49,.69,.19,.8,.36,.49,.16,.34,.82,.61,.12,.86,.56,.38,.9,.49,.03,.38,.09,.2,.57,.47,.27,.15,.92,.57,1,.76,.6,.84,.7,.64,.08,.32,.55,.97,.22,.14,.28,1,.2,.67,.83,.98,0,.55,.48,.88,.64,.27,.76,.13,.32,.4,.71,.89,.47,.68,.57,.97,.66,.84,.71,.12,.22,.86,.01,.28,.33,.14,.49,.08,.44,.87,.36,.59,.82,.71,.95,.05,.25,.62,.12,.78,.22,.13,.42,.31,.71,.86,.04,.39,.9,.48,.97,.64,.05,.95,.18,.42,.28,.14,.86,.63,.76,.84,.01,.87,.76,.65,.97,.05,.44,.31,1,.1,.83,.56,.91,.59,.84,.55,.27,.16,.75,0,.58,.15,.37,.91,.42,.98,.65,.87,.58,.1,.42,.98,.35,.76,.18,.69,.14,.31,.6,.95,.78,.42,0,.99,.81,.3,.49,.04,.45,.15,.3,.02,.49,.23,.4,.69,.85,0,.67,.83,.48,.08,.39,.11,.45,.58,.15,.79,.34,.71,1,.38,.2,.67,.96,.78,.27,.2,.37,0,.29,.09,.34,.55,.45,1,.36,.6,.76,.92,.69,.88,.64,.37,.81,.21,.69,.11,.4,.18,.5,.67,.86,.74,.5,.36,.69,.87,.65,.98,.18,.52,.95,.66,.8,.2,.11,.83,.33,.69,.5,.86,.65,.55,.39,.23,.5,.27,.39,.55,.33,.25,.47,.82,.2,.61,.71,.16,.3,.73,.34,.14,.2,.76,.99,.62,.25,.95,.67,.27,.05,.78,.09,.3,.05,.24,.7,.92,.22,.69,.49,.03,.31,.8,.44,.85,.2,.71,.51,.87,.34,.67,.07,.4,.87,.71,.82,.67,.95,.55,.78,.12,1,.19,.49,.78,.28,.94,.73,.56,.8,.25,.36,.73,.66,.91,.29,.17,.04,.81,.58,.08,.46,.03,.55,.87,.75,.95,.8,.5,.86,.2,.04,.78,.31,.08,.51,.18,.44,.84,.03,.27,.67,.05,1,.26,.9,.86,.34,.22,.97,.42,.06,.92,.27,.02,.77,.49,.26,.57,.1,.3,0,.59,.27,.41,.54,.21,.82,.11,.02,.48,.78,.92,.07,.61,.7,.11,.92,.59,.15,.72,.9,.05,.58,.48,.42,.06,.97,.64,.44,.02,.37,.51,.83,.13,.54,.83,.22,.56,.63,.75,.46,.81,.55,.4,.13,.85,.25,.92,.62,.95,.08,.56,.36,.12,.25,.59,.17,.75,.53,.61,.12,.37,.29,.22,.07,.88,.35,.58,.89,.03,.56,.38,.11,.45,.33,.03,.64,.95,.84,.03,.21,.42,.06,.61,.52,.43,.87,.33,.89,.64,.14,.42,.09,.6,.2,.4,.74,.92,.28,.64,.83,.91,.39,.13,.59,.25,.53,.93,.79,.57,.45,.51,.65,.08,.61,.57,.16,.29,.82,.16,.55,.61,.35,.06,.84,.42,.69,.34,.76,.52,.85,.91,.02,.75,.38,.6,.31,.95,.11,.67,.35,.97,.45,.19,.85,.03,.38,.55,.28,.35,.94,.75,.89,.25,.49,.8,.31,.91,.71,.06,.42,.35,.74,.45,.86,.97,.52,.19,.14,.98,.31,.05,.77,.47,.57,.06,.41,.51,.25,.91,.64,.8,.08,.45,.94,.84,.24,.93,.2,.96,.52,.59,.41,.18,.46,.27,.75,.65,.31,.95,.62,.18,.75,.89,.48,.15,.53,.31,.95,.56,.76,.94,.7,.13,.23,.73,.53,.25,.97,.69,.31,.51,.65,.16,.05,.59,.53,.13,.22,.67,.56,.79,.99,.09,.75,.17,.39,.12,.33,.77,.03,.73,.4,.8,.01,.72,.47,.67,1,.45,.89,.16,.76,.92,.2,.82,.95,.45,.09,.67,.47,.97,.25,.89,.73,.19,.43,.74,.17,.86,.24,.73,.49,.77,1,.65,.08,.79,.23,.14,.62,0,.59,.73,.09,.23,.55,.87,.18,.59,.93,.13,.4,.33,.28,.69,.41,.84,.63,.25,.95,.67,.35,.75,.2,.67,.76,0,.48,.99,.73,.3,.14,.37,.05,.47,.78,.65,0,.76,.95,.72,.84,.09,.51,.43,.14,.87,.52,.81,.22,.31,.11,.42,.76,.63,.09,.49,.24,.35,.78,.29,.94,.04,.8,.38,.19,.75,.88,.11,.98,.78,.38,.69,.97,.43,.47,.03,.34,.27,.66,.44,.32,.48,.7,.89,.2,.96,.44,.23,.92,.44,.88,.64,.35,.24,.12,.7,.21,.53,.38,.03,.64,.47,.16,.25,.71,.31,.18,.59,.14,.45,.53,.84,.29,.57,.01,.52,.64,.09,.37,.28,.21,.88,.44,.51,.69,.38,.84,.95,.34,.16,.85,.64,.47,.76,.96,.3,.64,.02,.77,.07,.82,.95,.01,.57,.18,.73,.43,.09,.16,.99,.84,.12,.37,.32,.18,.41,.87,.52,.7,.64,.56,.27,.41,.1,.33,.85,.48,.04,.63,.2,.97,.8,.25,.7,.01,.47,.99,.68,.58,.89,.24,.39,.78,.87,.13,.4,0,.55,.64,.45,.11,.6,.48,.03,.54,.34,.44,.27,.87,.31,0,.82,.75,.94,.88,.2,.78,.02,.92,.85,.08,.59,.82,.1,.67,.29,.11,.51,.19,.09,.95,.78,.4,.07,.81,.95,.68,.31,.55,.07,.88,.37,.55,.09,.78,.85,.41,.07,.69,.05,1,.39,.79,.31,.81,.92,.69,.58,.12,.63,.16,.95,.05,.29,.47,.18,.53,.42,.98,.37,.13,.32,.07,.22,.49,.71,.17,.56,.65,.46,.35,.89,.08,.51,.87,.81,.54,.29,.47,.92,.59,.87,.67,.56,.04,.22,.94,.09,.82,.98,.72,.89,.58,.15,.26,.31,.55,.89,.35,.04,.59,.93,.38,.09,.56,.36,.02,.72,.96,.05,.69,.19,.98,.58,.82,.89,.2,.73,.31,.92,.85,.28,.95,.22,.81,.64,.09,.55,.18,.36,.26,.6,.13,.72,.47,.55,.63,.22,.28,.52,.35,.72,.53,.88,.59,.98,.69,.29,.55,.89,.52,.31,.61,.46,.25,.12,1,.75,.27,.67,.89,.99,.52,.3,.64,.93,.32,.2,.61,.89,.47,.23,.13,.42,.05,.86,.75,.41,.32,.72,.91,.59,.75,.11,.69,.78,.27,.02,.51,.73,.8,.57,.92,.45,.28,1,.11,.22,.78,.28,.67,.39,.24,0,.36,.65,.09,.53,.04,.8,.27,.17,.62,.34,.77,.42,.31,.15,.66,.2,.45,.98,.7,.39,.77,.13,.67,.47,.16,.33,.67,.28,.76,.84,.2,.48,.14,.56,.35,.51,.67,.29,.47,.09,.38,1,.56,.05,.64,.42,.7,.58,.05,.71,.5,.93,.77,.64,.11,.53,.4,.05,.95,.36,.14,.69,.99,.41,0,.47,.17,.79,.02,.35,.75,.44,.14,.02,.73,.2,.85,.09,.76,.91,.4,.49,.79,.02,.45,.34,.19,0,.72,.88,.48,.77,.26,.08,.71,.59,.99,.55,.27,.49,.94,0,.81,.27,.56,.16,.81,.24,.91,.08,.62,.84,.93,.68,.43,.06,.37,.84,.23,.87,.44,.73,.53,.16,1,.76,.6,.95,.71,.83,.24,.73,.33,.45,.92,.71,.82,.48,.1,.92,.55,0,.5,.34,.06,.78,.53,.03,.95,.43,.28,.95,.55,.78,.89,.61,.17,.43,.94,.33,.81,.22,.45,.91,.09,.74,.16,.69,.26,.83,.51,.15,.23,.78,.14,.36,.89,.16,.41,.22,.88,.44,1,.84,.67,.25,.85,.29,.79,.44,.16,.77,.86,.96,.27,.39,.83,.05,.25,.84,.5,.63,.98,.36,.64,.42,.58,.19,.68,.34,.22,.62,.16,.76,.68,.42,.25,.56,.13,.37,.53,.92,.05,.36,.84,.72,.17,.35,.56,.2,.64,.49,.08,.35,.99,.41,.47,.31,.67,.21,.33,.15,.27,.98,.12,.64,.03,.58,.37,.05,.91,.64,.44,.11,.33,.18,.48,.42,.15,.99,.17,.51,.09,.39,1,.27,.2,.73,.61,.27,.95,.84,.64,.28,.9,.66,.15,.84,.6,.73,.04,.22,.13,.5,.97,.08,.52,.67,.61,.86,.73,.03,.4,.84,.94,.63,.42,.05,.76,.3,.87,.53,.02,.47,.99,.3,.69,.03,.57,.29,.07,.33,.16,.5,.73,.07,.58,.89,.09,.64,.3,.58,.15,.67,.45,.56,.64,.94,.31,.7,.25,.13,.93,0,.29,.84,.04,.94,.11,.86,.56,.95,.09,.89,.8,.04,.97,.67,.82,.3,.42,.65,.23,.02,.8,.91,.7,.12,.76,.87,.42,.71,.64,.03,.57,.87,.44,.11,.56,.48,.85,.63,.75,.51,.8,.93,.7,.31,.83,.25,.06,.8,.55,.84,.04,.91,.56,.77,.67,.86,.22,.02,.56,.67,.06,.39,.84,.69,.12,.77,.41,.09,.21,.35,.49,.24,.09,.4,.86,.47,.33,.81,.6,.25,.79,.04,.37,.09,.98,.3,.57,.23,.33,.54,.14,.92,.63,.38,.96,.6,.74,.82,.25,.55,.8,.73,.13,.48,.69,.78,.91,.63,.44,.2,.93,.35,.7,.23,.52,.07,.75,.91,.33,.97,.09,.16,.78,.09,.4,.55,.8,.51,.73,.39,.62,.53,.79,.27,.38,.3,.61,.51,.35,.28,.58,.21,.07,.73,.19,.87,.5,.41,.63,.3,.45,1,.38,.05,.95,.2,.28,.84,.75,.15,1,.69,.78,.89,.04,.31,.38,.16,.29,.45,.13,.19,.48,.57,.39,.94,.65,.23,.69,.34,.27,.05,.45,.61,.31,.73,.89,.49,.79,.97,.45,.33,.2,.58,.47,.71,.82,.58,.98,.72,.34,.64,.96,.55,.7,.02,.39,.72,.2,.89,.29,.48,.17,.67,.79,.51,.01,.89,.8,.19,.69,.47,.09,.33,.22,.42,.64,.09,.34,.96,.38,.86,.22,.56,.01,.36,.83,.65,.03,.48,.37,.81,1,.41,.84,.2,.6,.27,.71,.38,.58,.84,.45,.89,.22,.33,.96,.1,.23,.45,.99,.7,.49,.06,.8,.16,.45,.72,.91,.4,.49,.96,.56,.11,.68,.94,.11,.58,.06,.23,.54,.3,.8,.45,.53,.1,.23,.36,.3,.01,.39,.22,.72,.47,.93,.7,.05,.55,.91,.66,.77,.85,.17,.31,.45,.75,.09,.6,.92,.4,.15,.95,.83,.44,.13,.35,.16,.22,.03,.53,.92,.04,.96,.31,.14,.41,0,.8,.46,.2,.11,.27,.92,.16,.32,.99,.45,.57,.72,.8,.6,.39,.11,.96,.64,.36,.3,.59,.25,.02,.85,.15,.69,.94,.04,.86,.19,.5,.66,.27,.97,.41,.11,.29,1,.15,.28,.56,.85,.19,.03,.58,.37,.11,.53,0,.87,.48,.23,1,.04,.71,.62,.13,.67,.91,.58,.31,.16,.01,.64,.91,.24,1,.2,.85,.11,.32,.78,.62,.28,.89,.33,.2,.48,.71,.88,.82,.67,.61,.14,.9,.68,.96,.72,.51,.81,.92,.64,.33,.07,.56,.2,.83,.63,.41,.24,.98,.1,.34,.71,.04,1,.36,.88,.44,.82,.69,.2,.55,.05,.67,.29,.65,.87,.58,.68,.85,.37,.65,.23,.87,.62,.69,.93,.14,.58,.89,.67,.42,.78,.61,.86,.65,.12,.34,.94,0,.22,.91,.47,.2,.08,.75,.43,.95,.53,.77,.9,.56,.49,.28,.77,.59,.43,.91,.1,.05,.62,.74,.88,.6,.51,.77,.69,.96,.11,.61,.73,.28,.69,.96,.79,.42,.81,.67,.12,.31,.53,.11,.26,.84,.47,.03,.79,.71,.88,.38,.2,.75,.42,.58,.68,.01,.56,.83,.14,.03,.37,.71,.06,.78,.98,.25,.36,.17,.41,.74,.02,.25,.34,.4,.63,.07,.6,.11,.53,.86,.78,.99,.14,.35,.75,.83,.33,.03,.52,.43,.89,.59,.08,.53,.26,.17,.02,.49,.91,.33,.18,.93,.46,.95,.07,.42,.76,.15,.27,.81,.44,.18,.53,.23,.37,.28,.52,.82,.04,.25,.52,.09,.47,.04,.24,.78,.42,.09,.88,.31,.71,.83,.62,.85,.16,.07,.35,.63,.42,.25,.97,.36,.67,.12,.23,.7,.33,.81,.53,.33,.2,.25,.05,.89,.41,.22,.46,.33,.92,.49,.23,.16,.63,.07,.34,.95,.59,.76,.36,.94,.78,.41,.55,.2,.28,.51,.11,.6,.83,.53,.07,.31,.77,.39,.65,.51,.25,1,.47,.82,.53,.41,.12,.54,.63,.05,.95,.49,.87,.56,.08,.87,.18,.31,.85,.47,.25,.17,.66,.44,.53,.88,.05,.15,.48,.68,.79,.27,.65,.22,.84,.77,.63,.97,.31,.58,.75,.41,.8,.56,.22,.75,.52,.3,.97,.1,.49,.73,.59,.03,.76,.95,.09,.67,.75,.4,.33,1,.73,.35,.79,.94,.55,.67,.17,.51,.63,.56,.06,.36,.28,.48,.69,.99,.83,.12,.19,.71,0,.1,.84,.54,1,.39,.76,.16,.47,.94,.67,.78,.48,.31,.07,.64,.77,.15,.87,.06,.76,.39,.92,.55,.24,.18,.04,.67,.5,.23,.7,.01,.34,.95,.81,.41,.93,.47,.27,.88,.14,.49,.96,.27,.2,.92,.75,.66,.11,.22,.58,.3,.87,.75,.45,.82,.28,.2,.36,.8,.64,.47,.77,.94,.2,.73,.97,.38,.01,.31,.22,.66,.27,.97,.6,.86,.18,.97,.11,.5,.33,.4,.13,.47,.67,.84,.09,.27,.66,.11,.38,0,.82,.2,.56,.4,.89,.05,.98,.32,.39,.82,.44,.2,.92,.09,.16,.58,.89,.2,.26,.4,.86,.32,.98,.83,.38,.78,.17,.99,.53,0,.24,.57,.31,.47,.88,.6,.8,.47,.2,.31,.8,.01,.58,.93,.29,.06,.11,.64,.39,.85,.58,.95,.35,.56,.66,.4,.58,.83,.3,.47,.75,.84,.42,.91,.83,.17,.57,.88,.64,.07,.72,.15,.65,.05,.34,.62,.73,.9,.09,.82,.45,.05,.58,.36,.87,.92,.67,.01,.67,.22,.09,.92,.58,.7,.11,.99,.16,.27,0,.66,.4,.05,.67,.56,.82,.75,.93,.5,.38,.77,.11,.28,.55,.37,.77,.67,.93,.03,.73,.9,.21,.38,.04,.98,.48,.86,.69,.91,.34,.65,.88,.6,.25,.69,.2,.55,.89,.62,0,.56,.85,.63,.49,.69,0,.56,.12,.71,.49,.08,.22,.72,.27,.12,.89,.43,.75,.91,.38,.79,.08,.67,.93,.33,.38,.95,.74,.61,.08,.49,.2,.65,.84,.42,.55,.99,.13,.72,.2,.01,.83,.24,.09,.99,.19,.03,.69,.09,.88,.58,.28,.07,.31,.45,1,.08,.5,.25,.56,.86,.23,.75,.99,.19,.41,.24,.67,.6,.13,.86,.41,.28,.06,.43,.17,.97,.37,.89,.33,.51,.01,.42,.76,.31,.5,.92,.55,.84,.35,.49,.11,.9,.47,.15,.09,.57,.2,.91,.42,.72,.05,.45,.06,.28,.85,.56,.35,.05,.55,.93,.44,.58,.16,.29,.53,.14,.23,.45,.05,.15,.35,.84,.47,.11,.28,.16,.73,.33,.41,.24,.8,.37,.97,.44,.63,.76,.05,.35,.59,.45,.03,.49,.67,.31,.11,.62,.16,.73,.52,.22,.06,.53,.16,.23,.67,.44,.95,.87,.37,.14,.72,.31,.78,.24,.88,.51,.28,.67,.46,.77,.31,.7,.5,.59,.95,.15,.36,.71,.48,.81,.13,.73,.2,.38,.78,.92,.43,.32,.51,.07,.8,.56,.01,.53,.36,.31,.97,.77,.19,.64,.8,.52,.73,.27,.47,.62,.8,.25,.67,.88,.19,.61,.73,.39,.24,.11,.61,.86,.2,.31,.25,.61,.82,.72,.01,.51,.25,.64,.85,.92,.62,.53,.15,.22,.67,.8,.28,.76,.7,.24,.77,.93,.44,.63,1,.78,.71,.95,.45,.77,.66,.95,.78,.69,.51,.99,.13,.91,.28,.07,.8,.33,.92,.18,.97,.81,.66,.94,.84,.58,.94,.2,.8,.47,.9,.34,.97,.84,.3,.69,.56,.86,.04,.36,.16,.26,.56,.98,.52,.19,.59,0,.34,.45,.95,.12,.57,.91,.16,.87,.35,.27,.78,.44,.22,0,.97,.6,.68,.53,.85,.29,.66,.12,.18,.97,.6,.48,.38,.29,.85,.95,.76,.47,.05,.68,.49,.93,.13,.57,.34,.84,.08,.55,.14,.41,.96,.34,.54,.1,.91,.03,.67,.95,.29,.79,.66,1,.54,.4,.95,.31,.66,.81,.98,.35,.08,.22,.79,.41,1,.44,.91,.49,.17,.11,.52,.87,.02,.37,.73,.06,.2,.51,.3,.11,.55,.02,.28,.4,.06,.34,.24,.82,.04,.58,.71,.53,.2,.11,.68,.38,.25,.53,.14,.31,.08,.4,.73,.06,.53,.27,.03,.4,.11,.61,.45,.99,.76,.11,.48,.83,.77,.69,.07,.8,.05,.94,.47,.81,.7,.09,.63,.85,.37,.05,.62,.41,.8,.05,.91,.52,.63,.83,.17,.34,.25,.95,.04,.59,.81,.47,.01,.67,.83,.14,.92,.72,.63,.1,.16,.83,.2,.55,.36,.02,.87,.23,.97,.03,.69,.92,.73,.06,.82,.14,.27,.83,.44,.32,.8,.16,.48,.41,.02,.8,.07,.73,.13,.44,.61,.09,.16,.7,.5,.31,.66,.02,.76,.29,.09,.62,.95,.41,.31,.64,.09,.48,.28,.84,.6,.38,.88,.63,.23,.97,.59,.18,.87,.56,.43,.62,.78,.47,.15,.88,.43,.84,.57,.49,.08,.88,.42,.76,.28,.17,.65,.37,1,.84,.69,.56,.77,.17,.36,0,.25,.41,.92,.55,.31,.47,.61,.38,.35,.64,.27,.89,.55,.22,.78,.34,.49,.73,.22,.47,.12,.57,.65,.32,.75,.93,.41,.06,.87,.41,.15,.34,.9,.53,.35,.75,.28,.2,.44,.07,.26,.42,.58,.91,.65,.29,.83,.3,.7,.42,.64,.2,.38,.31,.22,.51,.63,.7,.59,.97,.19,.63,.51,.91,.08,.56,.23,.35,.62,.18,.29,.9,.36,.49,.27,.78,.42,.96,.55,.15,.87,.69,.36,0,.85,.67,.25,.99,.58,.84,.68,.17,.91,.09,.8,.35,.73,.13,.85,.53,.71,.98,.09,.19,.37,.97,.31,.61,.75,0,.28,.95,.73,.59,.2,.52,.81,.95,.78,.42,.13,.6,.09,.22,.95,.51,.69,.89,.8,.16,.66,.22,.01,.91,.16,.85,.22,.74,.1,.16,.39,.95,.02,.27,.18,1,.85,.69,.97,.18,.4,.04,.13,.25,.53,.73,.66,.78,.48,.2,.71,.26,.99,.1,.58,.89,.66,.97,.51,.78,.34,.03,.43,.11,.96,.61,.17,.47,.81,.51,.89,.66,.44,1,.19,.3,.38,.47,.06,.78,.25,.38,.75,.64,.95,.88,.49,.85,.56,.78,.02,.86,.94,.57,.12,.85,.2,.47,.28,.58,.78,.2,.47,.58,.13,.75,.18,.39,.96,.34,.5,.44,.04,.53,.9,.47,.38,.24,0,.77,.29,.85,.67,.03,.25,.12,.97,.45,.69,.16,.35,.04,.99,.7,.1,.56,0,.25,.51,.76,.33,.88,.64,.28,.08,.6,.47,.33,.64,.99,.38,.69,.25,.94,.45,.58,.85,.49,.66,.6,.75,.89,.55,.64,.03,.31,.33,.88,.71,.49,.96,.61,.45,.08,.31,.58,.1,.91,.62,.05,.84,.42,.52,.34,.02,.73,.16,.88,.29,.99,.75,.51,.77,.39,.06,.91,.1,.59,.05,.77,.11,.56,.87,.01,.92,.75,.14,.87,.56,.01,.84,.31,.16,.42,.69,.05,.96,.24,.67,.41,.18,.64,.05,.73,.34,.64,.93,.09,.51,.98,.29,.8,.06,.89,.45,.01,.55,.12,.75,.7,.27,.18,.69,.05,.62,.81,.34,.47,.16,.5,.93,.55,.8,.65,.36,.51,.24,.79,.84,.65,.46,.25,.35,.46,.89,.71,.92,.2,.45,.39,.04,.82,.91,.22,.53,.85,.07,.73,.09,.58,.51,.73,.02,.37,.99,.3,.06,.35,.45,.14,.43,.36,.1,.53,.62,.78,.23,.85,.16,.69,.89,.21,1,.83,.38,.75,.45,.31,.18,.64,.8,.16,.54,.39,.6,.09,.49,.64,.14,.2,.86,.55,.25,.76,.28,.36,.16,.91,.26,.35,.78,.69,.23,.6,.32,.66,.42,1,.22,.47,.78,.1,.25,.33,.42,.16,.75,.53,.33,.99,.25,.39,.91,.01,.8,.41,.19,.88,.33,.71,.41,.54,.27,.73,.64,.25,.94,.62,.84,.99,.4,.29,.12,.96,.64,.92,.59,.73,.09,.42,.2,.91,.06,.86,.11,.4,.53,.32,.12,.91,.72,.62,.13,.33,.65,.03,.97,.72,.53,.16,.35,.72,.12,.95,.29,.48,.88,.81,.19,.32,.63,.07,.69,.2,.81,.87,.23,.72,.8,.91,.76,.45,.16,.06,.43,.58,.3,.38,.79,.02,.34,.69,.23,0,.96,.56,.73,.87,.09,.95,.3,.85,.94,.24,.7,.83,.35,.59,.08,.32,.69,.98,.66,.83,.45,.69,.6,.42,.51,.07,.47,.54,.95,.08,.28,.7,.08,.58,.54,.95,.71,.81,.62,.89,.28,.8,.01,.45,.83,.52,.6,.7,.31,.45,.75,.64,.03,.13,.61,.92,.34,.87,.8,.08,.41,.15,.35,.55,.78,.89,.73,.53,.21,.09,.37,.25,.31,.84,.48,.71,.29,.56,.96,.62,.03,.93,.78,.37,.06,.86,.21,.42,.84,.57,.27,.12,.9,.62,.44,.78,.02,.4,.59,.23,.43,.34,.09,.95,.81,.53,.91,.42,.61,.52,.95,.08,.31,.58,.2,.92,.85,.64,1,0,.75,.11,.51,.63,.48,.16,.9,.52,.13,.37,.25,.47,.23,.63,.7,.45,.11,.56,.39,.01,.25,.95,.42,.9,.49,.01,.4,.22,.54,.95,.02,.21,.97,.14,.82,.36,.18,.83,.49,.91,.75,.34,.87,.19,.01,.59,.49,.1,.96,.62,.12,.7,.77,.1,.2,.14,.99,.08,.23,.56,.48,.95,.22,.65,.09,.18,.49,.29,.89,.53,.01,.22,.09,.49,.17,.27,.42,.88,.8,.66,.98,.02,.6,.14,.43,.75,.2,.27,.49,.71,.2,.52,.27,.8,.55,.97,.08,.38,.78,.69,.47,.25,.99,.31,.67,.9,.78,.16,.94,.64,.77,.26,.45,.11,.25,.77,0,.16,.38,.64,.02,.5,.24,.68,.27,.35,.5,.22,.86,.93,.25,.74,.96,.31,.6,.78,.64,.84,.93,.04,.41,.76,.08,.26,.78,.17,.93,.88,.5,.73,.79,.18,.64,.14,.56,.89,.11,.31,.73,.86,.64,.28,.9,.76,0,.62,.37,.16,.25,.44,.65,.41,.28,.94,.2,.38,.47,.24,.91,.42,.27,.95,.37,.48,.57,.83,.91,.37,.8,.42,.84,.31,.55,1,.67,.44,.59,.96,.72,.63,.34,.94,.67,.56,.75,.01,.49,.14,.45,.77,.27,.95,.05,.82,.67,.36,.84,.09,.59,.98,.65,.44,.16,.7,.49,.62,.16,.33,.02,.84,.09,.55,.19,.51,.06,.69,.53,.01,.4,.58,.69,.85,.33,.48,.98,.29,.72,.83,.34,.96,.73,.4,.09,.55,.84,.67,.45,.58,.4,.19,.05,.86,.42,.21,.08,.31,.7,.58,.99,.53,.87,.36,.49,.73,.33,.64,.12,.22,.04,.38,.28,.85,.76,.45,.25,.67,.17,.47,.35,.71,.59,.44,.25,.72,.97,.58,.02,.81,.13,.91,.73,.42,.84,.05,.71,.86,.2,.55,.06,.62,.87,.78,.67,.32,.02,.7,.27,.16,.05,.75,.4,.07,.82,.2,.1,.28,.78,.44,.89,.05,.38,.1,.97,.34,.62,.92,.18,.36,.88,.66,.39,.49,.12,.91,.42,.78,.25,.31,.02,.9,.09,.28,.78,.24,.97,.87,.52,.39,.66,.79,.45,.95,.31,.24,.61,.84,.09,.89,.17,.37,.74,.09,.67,.44,.85,.55,.48,.14,.8,.62,.04,.94,.18,.29,.08,.15,.66,.83,.53,.12,.69,.45,.9,.15,.5,.12,.33,.19,.67,.01,.97,.63,.08,.44,.55,.84,.67,.99,.53,.71,.33,.04,.99,.8,.4,.54,.04,.23,.09,.94,.12,.33,.45,.86,.69,.53,.33,.04,.61,.15,.53,.78,.02,.38,.64,1,.35,.71,.05,.26,.11,.42,.19,.64,.98,.55,.69,.9,.51,.25,.63,.75,.91,.36,.16,.85,.26,.6,.8,.45,.86,.22,.71,.3,.56,.73,.13,.53,.2,.33,1,.03,.62,.16,.89,.47,.76,.62,.35,.93,.45,.04,.59,.44,.74,.18,.92,.27,.13,.85,.37,.75,.97,.3,.21,.52,1,.05,.59,.91,.54,.12,.27,.2,.08,.89,.31,.44,.91,.77,.38,.72,.89,.97,.33,.77,.36,.27,.78,.98,.56,.37,.75,.81,.24,.84,.44,.56,.2,.83,.25,.39,.95,.31,.6,.42,.07,.94,.2,.65,.49,.61,.12,.86,.75,.98,.46,.66,.53,.81,.22,.09,.28,.95,.77,.56,.99,.26,.65,.33,.57,.29,.12,.79,.51,.16,.45,.89,.95,.58,.5,.88,.11,.33,.45,.21,.95,.13,.34,.55,.01,.49,.66,.08,.53,.2,.72,.31,.16,.54,.08,.82,.05,.47,.94,.25,.69,.8,.58,.24,.71,.37,.55,.12,.82,.22,.56,.84,.67,.15,.89,.29,.07,.71,.35,.01,.71,.58,.05,.48,.12,.43,.71,.35,.78,.45,.28,.18,.83,.34,.95,.78,.58,.67,.17,.52,.25,.13,.58,.46,.24,.53,.02,.46,.93,.62,.15,.34,.04,.86,.42,.64,.04,.72,.92,.12,.3,.72,.89,.05,.75,.19,.1,.8,.25,.47,.13,.88,.36,.24,.95,.31,.42,.78,.18,.38,.84,.05,.62,.75,.38,.17,.47,.22,.34,.81,.11,.95,.89,.45,.75,.04,.9,.58,.65,.2,.36,.73,.07,.77,.4,.8,.59,.01,.66,.83,.44,.96,.71,.33,.58,.99,.75,.43,.93,.01,.67,.88,.42,.98,.42,.63,.83,0,.44,.87,.07,.46,.93,.66,.29,.96,.4,.51,.02,.28,.39,.72,.51,.22,.8,.55,.98,.48,.6,.89,.19,.67,.9,.79,.6,.06,.65,.23,.94,.7,.42,.62,.02,.72,.39,1,.05,.87,.7,.35,.82,.06,.63,.82,.69,.2,.87,.07,.52,.73,.22,.61,.11,.96,.27,.55,.37,.8,.47,.52,.15,.6,.82,.48,.37,.91,.61,.68,.55,.78,.03,.7,.17,.64,.08,.61,.25,.9,.51,.3,1,.43,.58,.84,.66,.08,.45,.85,.5,.19,.43,.61,.83,.23,.31,.42,.1,.82,.52,.85,.3,.23,.64,.17,.89,.28,.71,.37,.05,.2,.82,.88,.23,.05,.33,.13,.49,.78,.36,.58,.21,.76,.25,.13,.35,.6,.75,.15,.63,.31,.19,.77,.03,.85,.14,.71,.78,.17,.99,.32,.64,.92,.47,.15,.83,.22,.41,.29,.8,.53,.04,.27,.15,.87,.53,.83,.12,.47,.06,.91,.5,.27,.47,.35,.22,.59,.48,.96,.19,.92,.44,.35,.11,.58,.25,.44,.67,.84,.29,.91,.2,.34,.49,.76,.08,.23,.99,.05,.69,.43,.28,.89,.21,.73,0,.32,.4,.96,.3,.46,.84,.53,.92,.34,.05,.71,.15,.67,.24,.89,.02,.13,.78,.91,.63,0,.29,.74,.06,.15,.36,.53,.67,.96,.76,.28,.04,.15,.45,.96,.5,.93,.11,.41,.79,.5,.59,.29,.12,.41,.48,.64,.9,.84,.61,.27,.95,.12,.31,.67,.53,.91,.18,.97,.29,.39,.94,.81,.07,.45,.58,.24,.63,.31,.91,.47,.55,.09,.01,.37,.65,.31,.05,.75,.07,.95,.16,.35,.42,.98,.74,.31,.41,.02,.77,.57,.31,.77,.15,.86,.09,.75,.82,.41,.01,.67,.11,.27,.73,.16,.78,.91,.39,.75,.97,.01,.36,.78,.53,.69,.83,.15,.65,.61,.39,.85,.32,.95,.03,.65,.55,.44,.86,.18,.84,.08,.58,.76,.38,.13,.69,.43,.81,.56,.41,.09,.49,.82,.56,.31,.27,.4,.72,.35,.56,.91,.23,.69,.98,.11,.86,.16,.5,.69,.63,.89,.58,.67,.01,.35,.53,.23,.97,.16,.91,.76,.65,.95,.16,.8,.28,.55,.18,.05,.69,.47,.84,.02,.73,.37,.8,.64,.51,.11,.69,.53,.89,.35,.5,.74,.95,.37,.06,.67,.86,.75,.81,.23,.97,.58,.89,.53,.69,.47,.65,.84,.59,.5,.66,.19,.47,.91,.27,.68,.98,.22,.38,.64,.93,.53,.92,.14,.72,.38,.85,.55,.9,.48,.65,.31,.55,.16,.11,.58,.48,.66,.14,.97,.03,.43,.95,.29,.74,.19,.78,.56,.4,.15,.79,.09,1,.24,.66,.52,.2,.94,.02,.25,.84,.5,.2,.97,.86,.76,.35,.19,.64,.97,.52,.08,.99,.22,.8,.66,.36,.5,.78,.45,.61,0,.37,.22,1,.4,.34,.13,.75,.83,.62,.67,.05,.47,.2,.55,.31,.5,0,.7,.37,.07,.46,.91,.38,.8,.16,.95,.58,.1,.44,.06,.89,.22,.37,.25,.72,.15,.87,.01,.41,.54,.15,.28,.22,.42,.53,.12,.71,.19,.44,.35,.13,.89,.27,.05,.22,.11,.82,.05,.96,.6,.37,.11,.44,.81,.6,.3,.05,.2,.62,.27,.78,.31,.46,.6,.24,.01,1,.05,.84,.34,.8,.26,.92,.06,.41,.24,.33,.56,.9,0,.52,.11,.48,.24,.71,.92,.29,.48,.59,.35,.74,.44,.88,.31,.68,.55,.98,.09,.3,.63,0,.25,.94,.71,.04,.44,.75,.6,.16,.45,.12,.86,.56,.03,.19,.27,.34,.89,.56,.84,.08,.78,.2,.86,.27,.45,.16,.88,.3,.84,.69,.39,.08,.84,.56,.22,.98,.74,.85,.65,.25,.55,.34,.27,.44,.23,.7,.31,.77,.56,.84,.03,.62,.3,.99,.2,.69,.82,.93,.46,.62,.98,.3,.89,.46,.05,.64,.99,.21,.78,.58,.93,.76,.89,.34,.54,.69,.24,.87,.17,.54,0,.88,.73,.51,.42,.37,.07,.52,.98,.15,.09,.77,.37,.42,.2,.72,.48,.63,.86,.18,.7,.83,.62,.75,.22,.8,.35,.64,.84,.98,.06,.62,.83,.4,.2,.69,.05,.82,.11,.15,.61,.8,.29,.74,.38,.15,.68,.53,.44,.61,.15,.88,.35,.22,.83,.67,.89,.52,.31,.95,.88,.73,.93,.64,.73,.19,.43,.53,.03,.66,.59,.98,.04,.75,.51,.36,.01,.81,.99,.26,.77,.93,.42,.11,.52,.33,.12,1,.05,.62,.74,.92,.84,.6,1,.15,.45,.75,.96,.44,.51,.66,.1,.25,.59,.16,.8,.71,.04,.17,.58,.76,.85,.29,.73,.51,.01,.31,.4,.52,.43,.29,.79,.14,.43,.75,.64,.96,.47,.24,.14,.98,.81,.87,.69,.91,.22,.82,.72,.93,.53,.82,.6,.1,.95,.04,.44,.3,.58,.36,.91,.06,.5,.7,.12,.41,.27,.67,.33,.17,.53,.02,.88,.94,.55,.29,.97,.5,.39,.05,.46,.05,.64,.78,.92,.23,.06,.83,.31,.55,.11,.91,.29,.01,.35,.73,.08,.66,.15,.55,.4,.05,.13,.96,.29,.72,.92,.47,.31,.53,.4,.13,.96,.61,.58,.44,.16,.12,.62,.36,.18,.67,.8,.28,.6,.42,.69,.83,.13,.51,.05,.27,.4,.02,.64,.28,.11,.18,.81,.76,.33,.47,.73,.39,.09,.33,.84,.39,.67,.24,.36,.07,.4,.81,.63,.18,.72,.07,.17,.64,.99,.01,.51,.31,.08,.74,.34,.42,.69,.08,.31,.59,0,.45,.58,.4,.04,.33,.67,.16,.92,.41,.23,.53,.75,.98,.01,.51,.16,.94,.27,.58,1,.17,.53,.8,.89,.42,.75,.23,.65,.13,.45,.23,.64,.91,.73,.19,.95,.88,.5,.35,.89,.41,.74,.38,.96,.68,.78,.48,.39,.55,.94,.22,.42,.27,.84,.36,.24,.51,.66,.85,.57,.36,.16,.89,.07,.24,.81,.73,.28,.09,.23,.91,.52,.72,.47,.29,.9,.56,.03,.95,.2,.87,.08,.33,.37,.18,.66,.83,.53,.92,.88,.33,.58,.92,.05,.36,.91,.83,.02,.97,.24,.52,.59,.94,.02,.45,.98,.6,.16,.93,.45,.85,.98,.67,.82,.25,.6,.37,.84,.94,.26,.61,.2,.91,.76,.55,.22,.75,.28,.13,.33,.65,.26,.49,.14,.27,.77,.73,.33,.67,.15,.8,.23,.66,.4,.76,.45,.03,.85,.72,.09,.38,.03,.58,.99,.31,.81,.37,.77,.71,0,.36,.25,.82,.59,.22,.14,.56,.03,.19,.67,.13,.47,.2,.04,.65,.71,.14,.81,.61,.48,.76,.08,.61,.99,.76,.47,.22,.01,.62,.25,.69,.77,.61,.93,.45,.53,.85,.76,.33,.67,.95,.02,.82,.08,.48,.37,.72,.45,.78,.53,.95,.47,.89,.76,.31,.11,.7,.5,.22,.67,.47,.55,.23,.62,.15,.52,.64,.89,.75,.13,.28,.8,.17,.71,.87,.55,.24,.08,.36,.26,.55,.03,.47,.91,.72,.19,.56,.05,.83,.52,.11,.86,.16,.39,1,.81,.68,.87,.95,.75,.84,.98,.45,0,.57,.09,.85,.36,.45,.58,.87,.09,.66,.22,.36,.64,.31,.51,.96,.22,.7,.11,.49,.59,.07,.53,.16,.86,.56,.11,.69,.34,.43,.7,.28,.99,.6,.83,.25,.58,.93,.33,.18,.99,.27,.04,.86,.18,.32,.57,.03,.88,.3,.09,.41,.89,.8,.46,.41,.12,.34,.19,0,.67,.14,.42,.05,.22,.37,.6,.25,.69,1,.22,.65,.05,.34,.14,.65,.22,.01,.58,.44,.25,.15,.8,.08,.84,.29,.73,.09,.44,.96,.21,.33,.42,.17,.48,.93,.63,.33,.52,.11,.29,.67,.73,.6,.14,.87,.41,.76,.31,.11,.45,.71,.4,.99,.44,.3,.6,.47,.64,.44,.1,.51,.18,.02,.44,.09,.62,.35,.88,.49,.94,.2,.96,.07,.73,.26,.33,.97,.83,.58,.9,.24,.75,.61,.8,.29,.41,.91,.19,.87,1,.41,.3,.94,.45,.49,.97,0,.78,.85,.36,.1,.49,.9,.02,.74,.55,.81,.47,.37,.69,.52,.98,.71,.93,.45,.18,.69,.6,.95,.75,.09,.52,1,.84,.66,.5,.89,.38,.8,.5,1,.8,.13,.44,.86,.77,.12,.42,.85,.91,.26,.56,.85,.71,.29,.94,.55,.96,.36,.6,.4,1,.14,.91,.8,.29,.69,.56,.05,.81,.67,.06,.56,.42,.07,.84,.77,.37,.47,.9,.79,.32,.51,.94,.2,.06,.62,.89,.25,.78,.14,.73,0,.68,.95,.05,.24,.92,.35,.62,.37,.55,.22,.7,.19,.65,.25,.6,.43,.29,.63,.12,.91,.54,.18,0,.49,.14,.06,.46,.35,.16,.65,.85,0,.67,.35,.25,.58,.66,.05,.88,.17,.75,.08,.64,.45,.54,.76,.31,.71,.42,.37,.88,.08,.62,.91,.3,.1,.41,.64,.12,.25,.55,.84,.16,.34,.54,.19,.29,.02,.56,.25,.96,.06,.3,.62,.25,.69,.58,.93,.53,.18,.33,.53,.58,.16,.78,.38,.98,.08,.42,.79,.16,.04,.85,.73,.28,.52,0,.64,.39,.51,.05,.77,.88,.47,1,.36,.79,.22,.71,.96,.25,.16,1,.01,.19,.45,.04,.71,.65,.34,.58,.97,.51,.33,.07,.59,.36,.89,.2,.34,.77,.58,.83,.48,.75,.88,.28,.79,.94,.42,.05,.8,.16,.72,.55,.78,.48,.82,.44,.62,.75,.4,.8,1,.7,.04,.93,.49,.56,.24,.44,.75,.12,.8,.09,.76,.24,.61,.33,.91,.25,.21,.15,.92,.06,.22,.17,.64,.28,.13,.22,.73,.55,.85,.22,.47,.88,.39,.77,.48,.05,.42,.64,.85,.73,.92,.17,.39,.75,.58,.8,.94,.1,.35,.04,.3,.64,.73,.01,.92,.28,.08,.48,.7,.03,.61,.52,.35,.69,.65,.45,.07,.89,.66,.77,.25,.55,.18,.94,.35,.14,.27,.11,.63,.29,.92,.03,.61,.45,.69,.59,.81,.29,.63,.98,.16,.25,.84,.78,.12,.42,.83,.65,.95,.27,.45,.8,.53,.14,.7,.02,.22,.14,.98,.7,.06,.53,.34,.75,1,.09,.34,.88,.02,.24,.37,.05,.29,.95,.25,.67,.41,.53,.21,.84,.37,.09,.78,.63,.93,.52,.91,.47,.34,.55,.82,.38,.48,.59,.96,.4,.68,.61,.84,.99,.78,.53,.68,.93,.4,.16,.04,.78,.53,.72,.01,.98,.27,.92,.79,.23,.05,.6,.32,.78,.64,.08,.45,.2,.16,.53,.77,.45,.83,.09,.39,.69,.45,.83,.64,.72,.24,.31,.89,.23,.11,1,.22,.34,.56,.12,.18,.36,.95,.11,.83,.62,.41,.56,.67,.85,.4,.15,.48,.86,.35,.21,.49,.12,.36,.73,.52,.84,.07,.53,.45,0,.28,.73,.19,.48,.11,.56,.85,.07,.41,.28,.97,.36,.65,.43,.1,.58,.47,.16,.91,.58,.44,.52,.84,.4,.17,.99,.67,.87,.72,.56,.09,.18,.88,.31,.75,.27,.63,1,.33,.15,.05,.28,.39,.19,.64,.99,.14,.05,.87,.71,.02,.82,.28,.37,.55,.44,.07,.34,.83,.02,.49,.97,.64,.27,.19,.33,.11,.62,.68,.12,.58,.98,.44,.38,.12,.47,.87,.25,.51,.85,.67,.42,.9,.23,.98,.61,.25,.89,.2,.97,.36,.13,.54,.95,.43,.77,.84,.51,.37,.94,.82,.45,.86,.5,.69,.31,.47,.02,.73,.95,.2,.51,.78,.7,.56,.09,.66,.78,.95,.88,.07,.92,.22,.41,.33,.76,.9,.38,.98,.63,.05,.93,.3,.76,.16,.61,.67,.89,.46,.56,.85,.78,.23,.35,.87,.64,.25,.11,.2,.69,.25,.64,.74,.59,.5,.15,.22,.46,.91,.35,.6,.06,.81,.47,.05,.72,.42,.89,.56,.67,.84,.01,.73,.27,.44,.65,.17,.33,.78,.1,.52,.73,.03,.2,.94,.42,.59,.26,.66,.76,.38,.91,.95,.6,.84,.22,.41,.36,.52,.17,.76,.88,.53,.23,.97,.03,.71,.36,.95,.02,.32,.72,.15,.49,.76,.11,.56,.03,.44,.78,.86,.18,.66,.06,.27,.59,.01,.75,.16,.28,.94,.04,.6,.77,.9,.23,.83,.3,.09,.89,0,.24,.97,.82,.27,.03,.42,.3,.64,.45,.13,.69,.97,.6,.19,.66,.22,.52,.87,.42,.69,.39,.99,.3,.06,.75,.18,.1,.3,.49,.95,.71,.02,.81,.4,.73,.86,.05,.95,.11,.42,.29,.08,.93,.41,.83,0,.76,.52,.98,.13,.58,.89,.19,.53,.82,.33,.22,.76,.52,.95,.09,.78,.91,.56,.29,.47,.64,.95,.18,.88,.72,.63,.12,.9,.2,.33,.08,.45,.11,.68,.42,.53,.79,.9,.71,.02,.84,.27,.04,.69,.83,.57,.31,.75,.12,.25,.78,.63,.55,.05,.42,.87,.33,.52,.71,.24,.61,.3,.02,.57,.74,.47,.87,.09,.66,.51,.71,.56,.08,.4,.16,.53,.12,.6,.41,.68,.45,.31,.63,.36,.44,.18,.59,.7,.23,.53,.77,.86,.27,.05,.5,.09,.31,.78,.11,.34,.8,.02,.21,.64,.49,.92,.24,.82,.62,.03,.89,.17,.61,.22,.53,.95,.34,.63,.48,.36,.55,.82,.89,.25,.76,.56,.65,.27,.71,.45,.22,.34,.69,.4,.11,.25,.66,.08,.95,.42,.16,.33,.6,.5,.22,.76,.98,.16,.85,.24,.42,.33,.49,.28,.76,.53,.86,.72,.56,.8,.23,.77,.07,.29,.16,.1,.96,.6,.32,.64,.92,.35,.07,.19,.39,.95,.59,.49,.19,.37,.81,.27,.94,.64,.18,.82,.91,.09,.98,.47,.41,.92,.35,.25,.96,.34,.78,.11,.37,.23,.82,.96,.27,.87,.35,.7,.49,.17,.8,.93,.56,.06,.75,.94,.49,.84,.99,.15,.04,.59,.37,.8,.9,.42,.71,.94,.48,.58,.25,.9,.55,.12,.78,.36,.44,.55,.99,.39,.66,.46,.12,.75,.44,.06,.18,.78,.28,.9,.2,.06,.7,.36,.61,.07,.33,.18,.95,.06,.64,.85,.28,.78,.97,.47,.73,.04,.47,.61,.86,.25,.7,.36,.04,.42,.09,.58,.37,.05,.67,.78,.89,.09,.36,.05,.42,.94,.02,.51,.86,.27,.63,.99,.55,.44,.25,.75,.46,.15,.43,.5,.61,.8,.46,.85,.56,.07,.86,1,.51,.11,.74,.46,.02,.6,.38,.15,.75,.65,.22,.8,.15,.69,.42,.17,.87,.44,.61,.91,.32,.64,.67,.45,.09,1,.89,.03,.27,.73,.14,.22,.87,.52,.13,.06,.35,.67,.42,.95,.2,.64,.24,.56,.03,.83,.17,.66,.05,.73,.45,.86,.27,0,.69,.13,.33,.71,.27,.77,.37,.31,.91,.67,.59,.93,.11,.75,.6,.42,.95,.5,.16,1,.85,.6,.38,.82,.17,.94,.53,.02,.61,.36,.88,.3,.8,.12,.55,.91,.07,.81,.63,.89,.69,.49,.71,.94,.54,0,.59,.24,1,.68,.17,.63,.29,.38,.15,.92,.37,0,.83,.67,.4,.06,.87,.2,1,.78,.24,.93,.05,.14,.28,.68,.43,.7,.16,.6,.36,.23,.97,.29,.69,.45,.34,.88,.08,.84,.54,0,.63,.58,.27,.99,.03,.75,.15,.5,0,.55,.76,.21,.62,.54,.85,.41,.49,.8,.31,.66,.25,.38,.6,.91,.3,.51,.71,.12,.31,.99,.63,.38,.27,.89,.42,.33,1,.19,.61,.94,.75,.57,.22,.92,.08,.55,1,.83,.1,.48,.25,.4,.01,.52,.68,.22,.1,.78,.4,.73,.45,.12,.52,.75,.49,.11,.45,.2,.84,.13,.58,.24,.98,.36,.66,.2,.45,.97,.16,.27,.85,.3,.19,.81,.37,.16,.45,.84,.56,.8,.47,.22,.97,.69,.6,.21,.71,.5,.78,.19,.94,.53,.81,.69,.55,.13,.28,.66,.38,.74,.98,.33,.24,0,.3,.91,.86,.58,.76,.12,.83,.55,.05,.27,.57,.44,.29,.75,.92,.09,.5,.72,.23,.54,.42,.87,.17,.82,.31,.05,.42,.33,.11,.6,.98,.07,.62,.42,.89,.7,.82,.21,.79,.07,.41,.87,.76,.45,.2,.09,.96,.55,.77,.14,.69,.39,.56,.11,.39,.8,.05,.87,.45,.69,.02,.62,.2,.75,.86,.69,.47,.99,.34,.85,.28,.57,.01,.21,.27,.91,.04,.31,.24,.62,.79,.33,.93,.39,.7,.18,.49,.72,0,.27,.77,.5,.35,.56,.03,.44,.08,.62,.27,.97,.73,.33,.11,.27,.72,.34,.83,.06,.46,.09,.81,.33,.12,.28,.63,.09,.36,.3,.01,.41,.89,.49,.56,.21,.61,.78,.89,.58,.75,.47,.17,.06,.5,.41,.96,.2,.79,.92,.73,.11,.98,.33,.83,.19,.67,.37,.81,.27,.06,.99,.71,.37,.94,.65,.79,.95,.19,.7,.35,.23,.91,.03,.17,.53,.02,.47,.15,.59,.93,.02,.53,.15,.84,.73,.51,.22,.01,.82,.49,.05,.26,.84,.47,.3,.52,.6,.16,.23,.4,.51,.95,.36,.04,.31,.82,.17,.09,.93,.64,.53,.89,.82,.63,.77,.68,.95,.87,.4,.72,.05,.65,.53,.92,.05,.8,.33,.6,.95,.43,.06,.73,.62,.95,.78,.91,.53,.11,.88,.68,.19,.41,.94,.03,.58,.13,.89,.55,.96,.61,.41,.94,.84,.47,.22,.97,.65,.83,.71,.18,.95,.03,.82,.11,.45,.09,.52,.79,.4,.67,.33,.89,.65,.01,.31,.62,.51,.38,.19,.61,.47,.23,.41,.88,.04,.95,.57,.64,.36,.26,.53,.12,.5,.27,.71,.46,.07,.84,.58,.46,.73,.98,.33,.85,.25,.95,.66,.37,.22,.68,.28,.43,.65,.34,.6,.94,.31,.62,.9,.69,.94,.16,.66,.96,.35,.78,.94,.72,.29,.16,.58,.91,.64,.22,.55,.4,.75,.44,.2,.69,.32,.08,.44,.36,.18,.58,.14,.99,.5,.25,.09,.29,.64,.44,.92,.13,.84,.64,.22,.86,.13,.36,.25,.69,.32,.42,.55,.06,.5,.62,.91,.66,.51,.8,.42,.31,.77,.13,.23,.7,.56,.01,.78,.44,.15,.5,.26,.61,.44,.33,.93,.5,.37,.2,.96,.25,.04,1,.22,.78,.44,.73,.16,.87,.42,.04,.78,.89,.05,.77,.56,.31,.47,.13,.7,.44,.84,.1,.61,.8,.17,.08,.88,.53,.92,.15,.3,.8,.39,.12,.65,.44,.56,.74,.3,.5,.82,.59,.91,.96,.02,.81,.11,.45,.4,.19,.78,.44,.33,.2,.02,.74,.25,.09,.49,.05,.88,.8,.43,.11,.49,.77,.86,.61,.03,.26,.12,.99,.46,.56,.15,.86,.51,.05,.83,.35,.18,.76,.86,.39,.8,.2,.24,.56,.37,.16,.48,.32,.69,.45,.17,.84,.02,.73,.24,.82,.3,.76,.17,.25,.39,.19,.67,.27,.64,.51,.07,.73,.34,.64,.89,.7,.57,.06,.9,.77,.08,.7,.24,.66,.86,.71,.33,.65,.13,.71,.6,.09,.25,.36,.59,.97,.67,.25,.55,.27,.69,.13,.97,.62,.8,.25,.9,.18,.01,.74,.91,.41,.96,.56,.35,.25,.41,.66,.01,.52,.19,.6,.76,.07,.39,.1,.89,.16,.1,.38,.06,.49,.17,.26,.87,.71,1,.11,.54,.04,.6,.8,.55,.87,.42,.58,.84,.63,.33,.55,.67,.25,.99,.03,.29,.47,.95,.8,.37,.86,.07,.65,.95,.27,.75,.45,.29,.62,.91,.56,.67,.13,.99,.53,.69,.05,.89,.72,1,.81,.08,.93,.55,.6,.98,.49,.89,.36,.97,0,.47,.88,.08,1,.83,.03,.92,.87,.42,1,.18,.11,.3,.19,.38,.99,.34,.2,.53,.87,.16,.59,.28,.02,.55,.86,.49,.4,.88,.53,.95,.82,.48,.07,.14,.82,.94,.43,.5,.37,.19,.72,.01,.53,.38,.77,.56,.49,.22,.28,.68,.64,.02,.78,.74,.6,.98,.86,.69,.26,.87,.94,.2,.69,.45,.98,.79,.72,.64,.32,.76,.53,.66,.06,.57,.31,.85,.27,.72,.39,.99,.06,.67,.15,.38,.22,.95,.07,.19,.74,.43,.35,.13,.7,.19,.53,.58,.73,.24,.39,.73,.02,.87,.64,.22,.7,.02,.44,.22,.35,.74,.06,.33,.76,.47,.27,.02,.58,.42,.75,.06,.34,.14,.27,.62,.09,.67,.41,.59,.73,.33,.55,.49,.37,.57,.33,.27,.79,.52,.4,.93,.5,.81,.09,.47,.69,.38,.8,.42,.1,.99,.8,.44,.16,.93,.29,.33,.18,.02,.67,.22,.3,.52,.34,.63,0,.75,.84,.25,.94,.43,.09,.98,.33,.64,.94,.35,.05,.83,.47,.22,.94,.12,.44,.31,.08,.41,.15,.46,.31,.81,.61,.03,.53,.27,.47,.22,.84,.92,.44,.36,.23,.77,.16,.66,.92,.11,.18,.47,.3,.52,.91,.05,.75,.47,.37,.85,.9,.6,.55,.83,.89,.33,.64,.03,.29,.94,.5,.18,.6,.35,.1,.95,.8,.47,.09,.95,.61,.44,.58,.91,.41,.61,.2,.36,.64,.25,.89,.28,.81,.71,.42,.8,.18,.53,.27,.93,.21,.8,.65,.09,.16,.78,.12,.65,.01,.61,.85,.71,.04,.62,.75,.88,.56,.01,.28,.91,.5,.67,.36,.22,.75,.05,.8,.55,.73,.64,.37,.93,.76,.88,.7,.16,.22,.9,.58,.15,.53,.84,.67,.6,.16,.25,.86,.14,.55,.76,.14,.52,.85,.28,.17,.48,.77,.91,.55,.01,.65,.48,.24,.34,.67,.14,.9,.01,.56,.11,.14,.83,.95,.45,.88,.4,.49,.83,.64,.78,.24,.84,.6,.8,.27,.58,.71,0,.29,.14,.23,.69,.41,.09,1,.45,.13,.63,.81,.29,.98,.55,.4,.14,.51,.33,.89,.27,.78,0,.2,.83,.12,.53,.96,.8,.13,.5,.19,.63,.46,.9,.06,.51,.92,.74,.83,.14,.05,.43,.94,.25,.71,.95,.2,.38,.94,.47,.24,.16,.55,.31,.28,.13,.16,.96,.74,.61,.21,.06,.53,.96,.6,.67,.09,.47,.99,.12,.83,.43,.58,.04,.42,1,.31,.47,.09,.34,.65,.29,.21,.81,.45,.05,.79,.67,.41,.99,.33,.71,.37,.56,.67,.84,.25,.63,.35,.98,.77,.11,.88,.95,.78,.51,.4,.75,.61,.29,.71,.49,.01,.28,.6,.05,.23,.58,.36,.01,.95,.12,.34,.44,.97,.13,.89,.51,.63,.8,.99,.03,.49,.26,.78,.87,.35,.71,.05,.44,.08,.78,.67,.24,.98,.73,.16,.51,.67,.97,.39,.24,.88,.05,.73,.44,.85,.7,.98,0,.54,.21,.67,.33,.03,.25,.47,.36,.67,.52,.29,.87,.42,.49,.55,.71,.82,.07,.34,.7,.89,.45,.94,.66,.41,.52,.09,.34,.77,.25,.88,.11,.32,.41,.19,.89,.25,.31,.51,.19,.09,.24,.66,.53,.78,.69,.92,.82,.49,.05,.73,.36,.95,.52,.59,.19,.89,.07,.25,.64,.01,.9,.09,1,.03,.72,.19,.83,.38,.17,.58,.39,.04,.85,.18,.99,.34,.8,.9,.21,.64,.75,.13,.79,.99,.08,.91,.42,.65,.54,.74,.03,.19,.67,.35,.25,.43,.11,.33,.76,.62,.15,.72,.51,.21,.56,.84,.91,.49,.31,.86,.61,.08,.6,.41,.72,.11,.3,.44,.65,.71,.35,.29,.61,.09,.4,.33,.75,.13,.95,.84,.6,.44,.99,.63,.91,.61,.83,.16,0,.63,.08,.89,.15,.29,.56,.75,.96,0,.22,.53,.82,.71,.23,.84,.55,.96,.62,.44,.72,.47,.84,.56,.73,.64,0,.8,.69,.95,.87,.47,.12,.37,.03,.25,.41,.98,.13,.91,.57,0,.72,.29,.35,.47,.58,.81,.92,.49,.75,.34,.39,.47,.54,.3,.05,.69,.45,.74,.2,.62,.29,.69,.08,.23,.47,.41,.07,.53,.92,.37,.43,.69,.28,.51,.73,.18,.27,.87,.49,.61,.82,.05,.96,.72,.46,.87,.57,.37,.96,.29,.09,.94,.42,.13,.25,.73,.18,.02,.45,.36,.82,.05,.23,.56,.84,.78,.54,.09,.49,.92,.16,.24,.9,.47,.84,.44,.25,.36,.15,.78,.11,.31,.04,.17,.37,.97,.67,.32,.8,.25,.44,.93,.19,.49,.39,.63,.77,.08,.35,.04,.94,.45,.15,.01,.37,.18,.83,.03,.95,.35,.08,.42,.89,.55,.36,.58,.28,.81,.19,.87,.6,.7,.19,.58,.68,.33,.19,.42,.92,.1,.84,.73,.16,.42,.23,.11,.55,.18,.61,.86,.14,.95,.58,.93,.28,.07,.98,.47,.13,.45,.53,.88,.15,.66,.98,.33,.23,.84,.17,.65,.87,.13,.58,1,.36,.08,.92,.4,.3,.53,.83,.16,.65,.27,.2,.03,.83,.66,.49,0,.75,.67,.33,.59,.95,.58,.92,.28,.78,.99,.48,.89,.15,.04,.99,.22,.81,.41,.67,.77,.05,.58,.18,.64,.04,.72,.89,.67,.42,.81,.55,.73,.25,.51,.77,.18],yi=Ue({name:"SC-system-filter-do-not-remove"}),FilterEngine=function(){return this.cache=null,this.actions=[],this};let bi=FilterEngine.prototype=Object.create(Object.prototype);bi.type="FilterEngine";let Si=1e3;const ki=function(t){t.toFixed&&!isNaN(t)&&t>=200&&t<=1e4&&(Si=t)};bi.action=function(t){let{identifier:e,filters:i,image:s}=t,{workstoreLastAccessed:n,workstore:r,actions:o,theBigActionsObject:a}=this,l=Object.keys(r),h=Date.now()-Si;for(let t,e=0,i=l.length;e0?255:0}return r},bi.buildImageGrid=function(t){let{cache:e,workstore:i,workstoreLastAccessed:s}=this;t||(t=e.source);let{width:n,height:r}=t;if(n&&r){let t=`grid-${n}-${r}`;if(i[t])return s[t]=Date.now(),i[t];let e=[],o=0;for(let t=0;t0;t-=e)for(let t=0;t0;t-=e)t0;t-=n)for(let t=0;t0;t-=n)t=u&&(t=u-i-1),e+(s=s.toFixed&&!isNaN(s)?s:1)>=d&&(e=d-s-1),t<1&&(t=1),e<1&&(e=1),t+i>=u&&(i=u-t-1),e+s>=d&&(s=d-e-1);let o=t+i,a=e+s;(n=n.toFixed&&!isNaN(n)?n:0)<0&&(n=0),n>=o&&(n=o-1),(r=r.toFixed&&!isNaN(r)?r:0)<0&&(r=0),r>=a&&(r=a-1);const l=`alphatileset-${u}-${d}-${t}-${e}-${i}-${s}-${n}-${r}`;if(h[l])return c[l]=Date.now(),h[l];let f,p,m,g,y,b,S,k=[];for(g=r-a,y=d;g=0&&b=0&&e=0&&b=0&&e=0&&b=0&&e=0&&b=0&&e=l&&(t=l-1),(e=e.toFixed&&!isNaN(e)?e:1)<1&&(e=1),e>=h&&(e=h-1),(i=i.toFixed&&!isNaN(i)?i:0)<0&&(i=0),i>=t&&(i=t-1),(s=s.toFixed&&!isNaN(s)?s:0)<0&&(s=0),s>=e&&(s=e-1);const n=`simple-tileset-${l}-${h}-${t}-${e}-${i}-${s}`;if(o[n])return a[n]=Date.now(),o[n];const r=[];for(let n=s-e,o=h;n=0&&r=0&&e=d&&(m=d-1),r.substring?g=Math.round(parseFloat(r)/100*f):r.toFixed&&!isNaN(r)&&(g=r),g<0?g=0:g>=f&&(g=f-1),o.toFixed&&!isNaN(o)&&(y=o);let S=`${b}-tileset-${d}-${f}-${l}-${h}-${p}-${m}-${g}-${y}`;if("points-array"===b?S+=`-${t.join(",")}`:"random-points"===b&&(S+=`-${t}-${a}`),c[S])return u[S]=Date.now(),c[S];if("rect-grid"===b&&1===l&&1===h)return c[S]=[],u[S]=Date.now(),[];const k=fi(),A=[m,g],O=[0,0];let v,x,C,w,P,D,R,F,E=[],M=[],H=[],I=[],B="";"hex-grid"===b&&h/p<1.05&&(h=1.05*p);let T,L,$,j,X,Y,N,G,z,W=0,V=Math.floor(l/2),Z=Math.floor(h/2),_=2*p,U=Math.round(h/p*p),K=0;switch(b){case"rect-grid":if(B=`rect-grid-points-${d}-${f}-${l}-${h}-${m}-${g}`,c[B])u[B]=Date.now(),M=c[B];else{for(R=g-2*f+Z,F=g+2*f+Z;R-l&&P-h&&R=0&&C=0&&vp)continue;j=v*d+C,I[j]||(I[j]=[]),I[j].push(W)}W++}if(!H.length)return H;for(v=0;v{[P,R,$]=H[t],z=k.zero().add(O).subtract([P,R]).getMagnitude(),(X<0||z=0&&E[X].push(N);return pi(k),E=E.filter((t=>null!=t)),c[S]=E,u[S]=Date.now(),E}return[]},bi.buildHorizontalBlur=function(t,e){const{workstore:i,workstoreLastAccessed:s}=this;e&&e.toFixed&&!isNaN(e)||(e=0);const n=t.length,r=t[0].length,o=`blur-h-${r}-${n}-${e}`;if(i[o])return s[o]=Date.now(),i[o];let a=[];for(let i=0;i=0&&o=0&&r=t&&(i=t-1),null==s||s<0?s=0:s>=e&&(s=e-1);const u=`matrix-${l}-${h}-${t}-${e}-${i}-${s}`;if(o[u])return a[u]=Date.now(),o[u];let d,f,p,m,g,y,b,S,k,A=c.length,O=[],v=[];for(p=-s,m=e-s;p=A&&(k-=A),S.push(k);v.push(S)}return o[u]=v,a[u]=Date.now(),v},bi.checkChannelLevelsParameters=function(t){const e=function(t,e=!1){if(t.toFixed)return t<0?[[0,255,0]]:t>255?[[0,255,255]]:isNaN(t)?e?[[0,255,255]]:[[0,255,0]]:[[0,255,t]];if(t.substring&&(t=t.split(",")),Array.isArray(t)){if(!t.length)return t;if(Array.isArray(t[0]))return t;if((t=t.map((t=>parseInt(t,10)))).sort(((t,e)=>t-e)),1==t.length)return[[0,255,t[0]]];let e,i,s=[];for(let n=0,r=t.length;n0){s=1-i;for(let t=0,e=n.length;t{for(e=y[r%4],i=0,s=t.length;i=0&&i=0&&s255*(t+e*(1-t));let[r,o,a]=this.getInputAndOutputLines(t),{width:l,height:h,data:c}=r,{width:u,height:d,data:f}=o,{width:p,height:m,data:g}=a;c.length;let y,b,S,k,A,O,v,x,C,w,P,D,R,F,E,M,H,I,B,T,L,{opacity:$,blend:j,offsetX:X,offsetY:Y,lineOut:N}=t;switch(null==$&&($=1),null==j&&(j=""),null==X&&(X=0),null==Y&&(Y=0),j){case"color-burn":const t=(t,e)=>1==e?255:0==t?0:255*(1-Math.min(1,(1-e)/t));for(b=0;b0==e?0:1==t?255:255*Math.min(1,e/(1-t));for(b=0;bt255*Math.abs(t-e);for(b=0;b255*(t+e-2*e*t);for(b=0;bt<=.5?t*e*255:255*(e+(t-e*t));for(b=0;bt>e?t:e;for(b=0;b255*(t+e);for(b=0;bt*e*255;for(b=0;bt>=.5?t*e*255:255*(e+(t-e*t));for(b=0;b255*(e+(t-e*t));for(b=0;b{let i=e<=.25?((16*e-12)*e+4)*e:Math.sqrt(e);return t<=.5?255*(e-(1-2*t)*e*(1-e)):255*(e+(2*t-1)*(i-e))};for(b=0;be*t+s*i*(1-e);for(b=0;b=t&&r<=s&&o>=e&&o<=n&&a>=i&&a<=h){c=!0;break}}p[e]=r,p[i]=o,p[s]=a,p[n]=c?0:f[n]}b?this.processResults(d,u,1-g):this.processResults(this.cache.work,d,g)},"clamp-channels":function(t){let e,i,s,n,r,o,a,l,h,[c,u]=this.getInputAndOutputLines(t),d=c.data,f=u.data,p=d.length,{opacity:m,lowRed:g,lowGreen:y,lowBlue:b,highRed:S,highGreen:k,highBlue:A,lineOut:O}=t;null==m&&(m=1),null==g&&(g=0),null==y&&(y=0),null==b&&(b=0),null==S&&(S=255),null==k&&(k=255),null==A&&(A=255);const v=S-g,x=k-y,C=A-b;for(h=0;hv?255:(s-O)/x*255};let i,s,n,r,o,a,l,[h,c]=this.getInputAndOutputLines(t),u=h.data,d=c.data,f=u.length,{opacity:p,red:m,green:g,blue:y,opaqueAt:b,transparentAt:S,lineOut:k}=t;null==p&&(p=1),null==m&&(m=0),null==g&&(g=255),null==y&&(y=0),null==b&&(b=1),null==S&&(S=0);let A=Math.max((m+g+y)/3,(255-m+(255-g)+(255-y))/3),O=S*A,v=b*A,x=v-O;for(let t=0;t=0&&i=0&&se*t*s+s*i*(1-e);for(x=0;x=0&&(g=m+1,y=g+1,b=y+1,k=S+1,A=k+1,O=A+1,C=l[b]/255,w=p[O]/255,u[m]=t(l[m],C,p[S],w),u[g]=t(l[g],C,p[k],w),u[y]=t(l[y],C,p[A],w),u[b]=255*(C*w+w*(1-C)));break;case"source-in":const s=(t,e,i)=>e*t*i;for(x=0;x=0&&(g=m+1,y=g+1,b=y+1,O=S+3,C=l[b]/255,w=p[O]/255,u[m]=s(l[m],C,w),u[g]=s(l[g],C,w),u[y]=s(l[y],C,w),u[b]=C*w*255);break;case"source-out":const r=(t,e,i)=>e*t*(1-i);for(x=0;x=0&&e(S,m,p);break;case"destination-atop":const h=(t,e,i,s)=>e*t*(1-s)+s*i*e;for(x=0;xe*t*(1-s)+s*i;for(x=0;xe*t*i;for(x=0;x=0&&(g=m+1,y=g+1,b=y+1,k=S+1,A=k+1,O=A+1,C=l[b]/255,w=p[O]/255,u[m]=d(p[S],C,w),u[g]=d(p[k],C,w),u[y]=d(p[A],C,w),u[b]=C*w*255);break;case"destination-out":const f=(t,e,i)=>i*t*(1-e);for(x=0;x=0&&(g=m+1,y=g+1,b=y+1,k=S+1,A=k+1,O=A+1,C=l[b]/255,w=p[O]/255,u[m]=f(p[S],C,w),u[g]=f(p[k],C,w),u[y]=f(p[A],C,w),u[b]=w*(1-C)*255);break;case"clear":break;case"xor":const P=(t,e,i,s)=>e*t*(1-s)+s*i*(1-e);for(x=0;xe*t+s*i*(1-e);for(x=0;xr&&(r=s);switch(y){case"lowest":return o;case"highest":return r;default:return a(o+(r-o)/2)}};let[i,s]=this.getInputAndOutputLines(t),n=i.data,r=s.data,o=n.length,a=Math.floor,{opacity:l,includeRed:h,includeGreen:c,includeBlue:u,includeAlpha:d,width:f,height:p,offsetX:m,offsetY:g,operation:y,lineOut:b}=t;null==l&&(l=1),null==h&&(h=!1),null==c&&(c=!1),null==u&&(u=!1),null==d&&(d=!0),(null==f||f<1)&&(f=3),(null==p||p<1)&&(p=3),null==m&&(m=1),null==g&&(g=1),null==y&&(y="mean");let S,k,A,O,v,x=this.buildMatrixGrid(f,p,m,g,i),C=a(o/4);for(v=0;v=0&&i=0&&s=0?(P=Math.floor(C+(127-p[E+x])/127*b),D=Math.floor(w+(127-p[E+M])/127*S),O?R=P<0||P>=o||D<0||D>=a?-1:4*(D*o+P):(P<0&&(P=0),P>=o&&(P=o-1),D<0&&(D=0),D>=a&&(D=a-1),R=4*(D*o+P)),e(R,F,l)):e(F,F,l);v?this.processResults(n,s,1-m):this.processResults(this.cache.work,n,m)},emboss:function(t){const e=function(t,e,i){let s=0;for(let n=0,r=e.length;n=v-c&&P<=v+c&&D>=x-c&&D<=x+c&&R>=C-c&&R<=C+c&&(u?r[O]=0:(r[S]=127,r[k]=127,r[A]=127))));f?this.processResults(s,i,1-a):this.processResults(this.cache.work,s,a)},flood:function(t){let e,i,s,[n,r]=this.getInputAndOutputLines(t),o=n.data,a=r.data,l=o.length,{opacity:h,red:c,green:u,blue:d,alpha:f,excludeAlpha:p,lineOut:m}=t;for(null==h&&(h=1),null==c&&(c=0),null==u&&(u=0),null==d&&(d=0),null==f&&(f=255),null==p&&(p=!1),e=0;e>8&255,h=o>>16&255,c=o>>24&255,v=a*s[6],x=l*s[6],C=h*s[6],w=c*s[6],S=v,k=x,A=C,O=w,M=s[0],H=s[1],I=s[4],B=s[5],E=0;E>8&255,f=o>>16&255,p=o>>24&255,m=u*M+a*H+S*I+v*B,g=d*M+l*H+k*I+x*B,y=f*M+h*H+A*I+C*B,b=p*M+c*H+O*I+w*B,v=S,x=k,C=A,w=O,S=m,k=g,A=y,O=b,a=u,l=d,h=f,c=p,i[R]=S,i[R+1]=k,i[R+2]=A,i[R+3]=O,R+=4,P++;for(P--,R-=4,D+=r*(n-1),o=t[P],a=255&o,l=o>>8&255,h=o>>16&255,c=o>>24&255,v=a*s[7],x=l*s[7],C=h*s[7],w=c*s[7],S=v,k=x,A=C,O=w,u=a,d=l,f=h,p=c,M=s[2],H=s[3],E=n-1;E>=0;E--)m=u*M+a*H+S*I+v*B,g=d*M+l*H+k*I+x*B,y=f*M+h*H+A*I+C*B,b=p*M+c*H+O*I+w*B,v=S,x=k,C=A,w=O,S=m,k=g,A=y,O=b,a=u,l=d,h=f,c=p,o=t[P],u=255&o,d=o>>8&255,f=o>>16&255,p=o>>24&255,o=(i[R]+S<<0)+(i[R+1]+k<<8)+(i[R+2]+A<<16)+(i[R+3]+O<<24),e[D]=o,P--,R-=4,D-=r}};let[c,u]=this.getInputAndOutputLines(t),d=c.data,f=u.data,{width:p,height:m}=c,{opacity:g,radius:y,lineOut:b}=t;null==g&&(g=1),null==y&&(y=1);const S=new Uint8ClampedArray(d),k=new Uint32Array(S.buffer),A=new Uint32Array(k.length),O=new Float32Array(4*Math.max(p,m)),v=function(t){t<.5&&(t=.5);let h=Math.exp(.527076)/t,c=Math.exp(-h),u=Math.exp(-2*h),d=(1-c)*(1-c)/(1+2*h*c-u);return e=d,i=d*(h-1)*c,s=d*(h+1)*c,n=-d*u,r=2*c,o=-u,a=(e+i)/(1-r-o),l=(s+n)/(1-r-o),new Float32Array([e,i,s,n,r,o,a,l])}(y);h(k,A,O,v,p,m),h(A,k,O,v,m,p),f.set(S),b?this.processResults(u,c,1-g):this.processResults(this.cache.work,u,g)},glitch:function(t){let e,i,s,n,r,o,a,l,h,c,u,d,f,p,m,g,y,b,S,k,A,O,v,x,C,[w,P]=this.getInputAndOutputLines(t),D=w.data,R=P.data,F=D.length,E=w.width,M=w.height,{opacity:H,useMixedChannel:I,seed:B,level:T,step:L,offsetMin:$,offsetMax:j,offsetRedMin:X,offsetRedMax:Y,offsetGreenMin:N,offsetGreenMax:G,offsetBlueMin:z,offsetBlueMax:W,offsetAlphaMin:V,offsetAlphaMax:Z,transparentEdges:_,lineOut:U}=t;null==H&&(H=1),null==I&&(I=!0),null==B&&(B="some-random-string-or-other"),null==T&&(T=0),null==L&&(L=1),null==$&&($=0),null==j&&(j=0),null==X&&(X=0),null==Y&&(Y=0),null==N&&(N=0),null==G&&(G=0),null==z&&(z=0),null==W&&(W=0),null==V&&(V=0),null==Z&&(Z=0),null==_&&(_=!1);const K=this.getRandomNumbers({seed:B,length:5*M}),q=j-$,Q=Y-X,J=G-N,tt=W-z,et=Z-V;let it=-1;const st=[];for(L=Math.floor(L),L<1&&(L=1),e=0;eg||vg||xg||Cg?0:D[C]):R[d]=D[C];U?this.processResults(P,w,1-H):this.processResults(this.cache.work,P,H)},grayscale:function(t){let e,i,s,n,r,o,[a,l]=this.getInputAndOutputLines(t),h=a.data,c=l.data,u=h.length,{opacity:d,lineOut:f}=t;null==d&&(d=1);const p=this.getGrayscaleValue;for(r=0;r=s&&t<=n)return r}};this.checkChannelLevelsParameters(t);let i,s,n,r,o,[a,l]=this.getInputAndOutputLines(t),h=a.data,c=l.data,u=h.length,{opacity:d,red:f,green:p,blue:m,alpha:g,lineOut:y}=t;for(null==d&&(d=1),null==f&&(f=[0]),null==p&&(p=[0]),null==m&&(m=[0]),null==g&&(g=[255]),o=0;ofunction(t,e,i){d.length=0,f.length=0;let s,n,r,a,l,h,p,m=0,g=i.length;for(i[0],s=0;s=0&&i=0&&r=0&&i=0&&r=0&&p=0&&m=0&&g=0&&y=0&&b=0&&Se+t[i+s]),0);n=Math.floor(n/i.length);for(let t=0,r=i.length;t{d?e(r,o,t,0):i(r,o,t,0),f?e(r,o,t,1):i(r,o,t,1),p?e(r,o,t,2):i(r,o,t,2),m?e(r,o,t,3):i(r,o,t,3)})),g?this.processResults(n,s,1-a):this.processResults(this.cache.work,n,a)},"process-image":function(t){const{assetData:e,lineOut:i}=t;if(i&&i.substring&&i.length){let{width:t,height:s,data:n}=e;if(t&&s&&n){let{width:e,height:r}=this.cache.source;if(e!==t||r!==s){let i,o,a,l,h=new ImageData(e,r).data,c=(e-t)/2,u=(r-s)/2;for(c<0&&(c=0),u<0&&(u=0),o=0;o=f)?(d[e]=u[e],d[i]=u[i],d[s]=u[s],d[n]=u[n]):(l<0?l+=f:l>=f&&(l-=f),!w||u[n]&&u[l+3]?(d[e]=O?u[l]:u[e],l++,d[i]=v?u[l]:u[i],l++,d[s]=x?u[l]:u[s],l++,d[n]=C?u[l]:u[n]):(d[e]=u[e],d[i]=u[i],d[s]=u[s],d[n]=u[n]))):(d[e]=u[e],d[i]=u[i],d[s]=u[s],d[n]=u[n])}P?this.processResults(c,h,1-m):this.processResults(this.cache.work,c,m)},"reduce-palette":function(t,e){this.predefinedPalette||(this.predefinedPalette={});this.colorSpaceIndices();const{rgbIndices:i,labIndices:s,indicesMemoRecord:n,predefinedPalette:r,getGrayscaleValue:o,tfx:a,tfx2:l,tfx3:h,indicesLen:c,labIndicesMultiplier:u}=this;let d;const f=(t,e)=>{if(t||(t=e.join(",")),t&&r[t])return r[t];const o=[];return e.forEach((t=>{yi.convert(t);const[e,r,h]=yi.rgb,c=e*l+r*a+h;if(o.push(c),!n[c]){n[c]=1;const[t,o,a]=yi.convertRGBtoOKLAB(e,r,h);let l=3*c;i[l]=e,s[l]=t*u,l++,i[l]=r,s[l]=o*u,l++,i[l]=h,s[l]=a*u}})),r[t]=o.sort(((t,e)=>t-e)),o};r["black-white"]||(f("black-white",["#000","#fff"]),f("monochrome-4",["#222","#777","#bbb","#fff"]),f("monochrome-8",["#000","#333","#555","#777","#999","#bbb","#ddd","#fff"]),f("monochrome-16",["#000","#111","#222","#333","#444","#555","#666","#777","#888","#999","#aaa","#bbb","#ccc","#ddd","#eee","#fff"]));const p=function(t,e){const s=e.length;if(!s)return 0;if(1===s)return e[0];const n=i[3*t];let r,o,a;const l=[];for(let t=0;tt[1]-e[1]));const[h,c]=l[0],[u,d]=l[1],f=c+d,p=f-c;return Z[P]*ft[1]-e[1]));const[k,A]=S[0],[O,v]=S[1];let x=Z[P];return y=A+v,b=y-A,x*=y,xe[1]-t[1])),f=0,p=r.length;f=n)break}else{for(g=i[m],m++,y=i[m],m++,b=i[m],O=!0,a=0,l=o.length;a=n)break}else o.push(t[0])}return o}(Q,z,X):[],F.length||(F=r["black-white"]),g=0;g<$;g++)P++,y=q[g],R=4*g,y<0?(T[R]=K[R],R++,T[R]=K[R],R++,T[R]=K[R],R++,T[R]=K[R]):(D=_?3*p(y,F):3*m(y,F),T[R]=i[D],R++,D++,T[R]=i[D],R++,D++,T[R]=i[D],R++,T[R]=K[R]);V?this.processResults(M,E,1-j):this.processResults(this.cache.work,M,j)},"set-channel-to-level":function(t){let e,i,s,n,r,[o,a]=this.getInputAndOutputLines(t),l=o.data,h=a.data,c=l.length,{opacity:u,includeRed:d,includeGreen:f,includeBlue:p,includeAlpha:m,level:g,lineOut:y}=t;for(null==u&&(u=1),null==d&&(d=!1),null==f&&(f=!1),null==p&&(p=!1),null==m&&(m=!1),null==g&&(g=0),r=0;r$){let t=j;j=$,$=t}const X=$-j;if(h=B-$,h<0&&(h=0),u=B+$,u>H&&(u=H),c=L-$,c<0&&(c=0),d=L+$,d>=I&&(d=I),h0&&c0){let e=E,o=E;st(e)?o=`ude-${e(0)}-${e(.1)}-${e(.2)}-${e(.3)}-${e(.4)}-${e(.5)}-${e(.6)}-${e(.7)}-${e(.8)}-${e(.9)}-${e(1)}`:e=null!=mt[e]?mt[e]:mt.linear;const H=`swirl-${a}-${v}-${x}-${C}-${P}-${o}-${D}-${R}`,I=this.getOrAddWorkstore(H);if(!I.length){const s=fi(),n=fi();for(s.setFromArray([B,L]),f=c;f$?g=i:m=D&&(k-=D),A<0?A+=R:A>=R&&(A-=R),g=4*t[A][k]):(O=1-(m-j)/X,O=e(O),n.rotate(P*O).add(s),k=F(n[0]),A=F(n[1]),k<0?k+=D:k>=D&&(k-=D),A<0?A+=R:A>=R&&(A-=R),g=4*t[A][k]),I.push(g);pi(n),pi(s)}let T=-1;for(f=c;fe+t[4*i+s]),0);n=Math.floor(n/i.length);for(let t=0,r=i.length;t{y?e(r,o,t,0):i(r,o,t,0),b?e(r,o,t,1):i(r,o,t,1),S?e(r,o,t,2):i(r,o,t,2),k?e(r,o,t,3):i(r,o,t,3)})):this.transferDataUnchanged(o,r,a),A?this.processResults(n,s,1-l):this.processResults(this.cache.work,n,l)},"tint-channels":function(t){let e,i,s,n,r,o,a,l,[h,c]=this.getInputAndOutputLines(t),u=h.data,d=c.data,f=u.length,{opacity:p,redInRed:m,redInGreen:g,redInBlue:y,greenInRed:b,greenInGreen:S,greenInBlue:k,blueInRed:A,blueInGreen:O,blueInBlue:v,lineOut:x}=t;for(null==p&&(p=1),null==m&&(m=1),null==g&&(g=0),null==y&&(y=0),null==b&&(b=0),null==S&&(S=1),null==k&&(k=0),null==A&&(A=0),null==O&&(O=0),null==v&&(v=1),r=0;r{const e=p[t];e&&(e.dirtyFilterIdentifier=!1)})),R.forEach((t=>{const e=D[t];e&&(e.dirtyFilterIdentifier=!1)}))}}),H.FilterEngine=FilterEngine;const Ai=new FilterEngine;function Oi(t=q){t.defs=at(t.defs,{sourceLoaded:!1,source:null,subscribers:null}),t.packetExclusions=ht(t.packetExclusions,["sourceLoaded","source","subscribers"]),t.finalizePacketOut=function(t,e){return this.subscribers&&this.subscribers.length&&(t.subscribers=this.subscribers.map((t=>t.name))),t},t.kill=function(t=!1){return t&&this.source&&this.source.remove(),this.deregister()},t.getters;const e=t.setters;return t.deltaSetters,e.source=function(t){t&&this.sourceLoaded&&this.notifySubscribers()},e.subscribers=Z,t.assetConstructor=function(t){return this.makeName(t.name),this.register(),this.subscribers=[],this.set(this.defs),this.set(t),t.subscribe&&this.subscribers.push(t.subscribe),this},t.subscribe=function(t){if(t&&t.name){const e=t.name;this.subscribers.every((t=>t.name!==e))&&this.subscribeAction(t)}},t.subscribeAction=function(t){t&&(this.subscribers.push(t),t.asset=this,t.source=this.source,this.notifySubscriber(t))},t.unsubscribe=function(t){if(t&&t.name){const e=t.name,i=this.subscribers.findIndex((t=>t.name===e));i>=0&&(t.source=null,t.asset=null,t.sourceNaturalHeight=0,t.sourceNaturalWidth=0,t.sourceLoaded=!1,this.subscribers.splice(i,1))}},t.notifySubscribers=function(){this.subscribers.forEach((t=>this.notifySubscriber(t)),this)},t.notifySubscriber=function(t){t.sourceNaturalWidth=this.sourceNaturalWidth,t.sourceNaturalHeight=this.sourceNaturalHeight,t.sourceLoaded=this.sourceLoaded,t.source=this.source,t.dirtyImage=!0,t.dirtyCopyStart=!0,t.dirtyCopyDimensions=!0,t.dirtyImageSubscribers=!0,t.dirtyFilterIdentifier=!0},t}const ImageAsset=function(t=q){return this.assetConstructor(t)};let vi=ImageAsset.prototype=Object.create(Object.prototype);vi.type="Image",vi.lib="asset",vi.isArtefact=!1,vi.isAsset=!0,vi=me(vi),vi=Oi(vi);vi.defs=at(vi.defs,{intrinsicDimensions:null}),vi.saveAsPacket=function(){return[this.name,this.type,this.lib,{}]},vi.stringifyFunction=Z,vi.processPacketOut=Z,vi.finalizePacketOut=Z,vi.clone=U;let xi=vi.getters,Ci=vi.setters;vi.deltaSetters,xi.width=function(){return this.sourceNaturalWidth||this.source.naturalWidth||0},xi.height=function(){return this.sourceNaturalHeight||this.source.naturalHeight||0},Ci.source=function(t){t&&(["IMG","PICTURE"].indexOf(t.tagName.toUpperCase())>=0&&(this.source=t,this.sourceNaturalWidth=t.naturalWidth,this.sourceNaturalHeight=t.naturalHeight,this.sourceLoaded=t.complete),this.sourceLoaded&&this.notifySubscribers())},Ci.currentSrc=function(t){this.currentSrc=t,this.currentFile=this.currentSrc.split("/").pop()},vi.checkSource=function(t,e){let i=this.source,s="element";if(this.sourceLoaded){let n=this.intrinsicDimensions[this.currentFile];switch(this.currentSrc!==i.currentSrc?(this.set({currentSrc:i.currentSrc}),n=this.intrinsicDimensions[this.currentFile],s=n?"intrinsic":"zero"):n&&(s="intrinsic"),s){case"zero":this.sourceNaturalWidth=0,this.sourceNaturalHeight=0,this.notifySubscribers();break;case"intrinsic":this.sourceNaturalWidth===n[0]&&this.sourceNaturalHeight===n[1]||(this.sourceNaturalWidth=n[0],this.sourceNaturalHeight=n[1],this.notifySubscribers());break;default:this.sourceNaturalWidth===i.naturalWidth&&this.sourceNaturalHeight===i.naturalHeight&&this.sourceNaturalWidth===t&&this.sourceNaturalHeight===e||(this.sourceNaturalWidth=i.naturalWidth,this.sourceNaturalHeight=i.naturalHeight,this.notifySubscribers())}}};const wi=[],Pi=[],Di=function(...t){let e=/.*\/(.*?)\./,i=[];return t.forEach((t=>{let s,n,r,o,a=!1,l=!1;if(t.substring){let i=e.exec(t);s=i&&i[1]?i[1]:"",n=t,r="",o=!1,l=!0}else(t=!!rt(t)&&t)&&t.src&&(s=t.name||"",n=t.src,r=t.className||"",o=t.visibility||!1,t.parent&&(a=document.querySelector(t.parent)),l=!0);if(l){let t=Hi({name:s,intrinsicDimensions:{}}),e=document.createElement("img");e.name=s,e.className=r,e.crossorigin="anonymous",e.style.display=o?"block":"none",a&&a.appendChild(e),e.onload=()=>{t.set({source:e})},e.src=n,t.set({source:e}),i.push(s)}else i.push(!1)})),i},Ri=function(t){let e=/.*\/(.*?)\./;document.querySelectorAll(t).forEach((t=>{let i;if(["IMG","PICTURE"].indexOf(t.tagName.toUpperCase())>=0){if(t.id||t.name)i=t.id||t.name;else{let s=e.exec(t.src);i=s&&s[1]?s[1]:""}let s=t.dataset.dimensions||{};s.substring&&(s=JSON.parse(s));let n=Hi({name:i,source:t,intrinsicDimensions:s,currentSrc:t.currentSrc});t.onload=()=>{n.set({source:t})}}}))},Fi=function(t,e=!1){let i=t.substring?u[t]||c[t]:t;"Canvas"===i.type&&(i=i.base),"Cell"===i.type&&(i.stashOutput=!0,e&&(i.stashOutputAsAsset=e))},Ei=function(t,e=!1){let i;t&&!t.substring?"Group"===t.type?i=t:"Cell"===t.type?i=g[t.name]:"Canvas"===t.type&&(i=g[t.base.name]):t&&t.substring&&(i=g[t]),i&&(i.stashOutput=!0,e&&(i.stashOutputAsAsset=e))},Mi=function(t,e=!1){let i=t.substring?o[t]:t;i.isArtefact&&(i.stashOutput=!0,e&&(i.stashOutputAsAsset=e))},Hi=function(t){return!!t&&new ImageAsset(t)};function Ii(t=q){t.defs=at(t.defs,{filters:null,isStencil:!1,memoizeFilterOutput:!1});let e=t.setters;return e.filters=function(t){Array.isArray(this.filters)||(this.filters=[]),t&&(Array.isArray(t)?(this.filters=t,this.dirtyFilters=!0,this.dirtyImageSubscribers=!0):t.substring&&(ht(this.filters,t),this.dirtyFilters=!0,this.dirtyImageSubscribers=!0),this.dirtyFilterIdentifier=!0)},e.memoizeFilterOutput=function(t){this.memoizeFilterOutput=t,this.updateFilterIdentifier(!!t)},t.updateFilterIdentifier=function(t){this.dirtyFilterIdentifier=!1,this.state&&(this.state.dirtyFilterIdentifier=!1),this.memoizeFilterOutput&&t?this.filterIdentifier=(()=>{function t(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return`${t()}${t()}-${t()}-${t()}-${t()}-${t()}${t()}${t()}`})():this.filterIdentifier=""},t.cleanFilters=function(){this.dirtyFilters=!1,this.dirtyFiltersCache=!0,this.filters||(this.filters=[]);let t,e,i=this.filters,s=Math.floor,n=[];i.forEach((i=>{t=p[i],t&&(e=s(t.order)||0,n[e]||(n[e]=[]),n[e].push(t))})),this.currentFilters=n.reduce(((t,e)=>t.concat(e)),[])},t.addFilters=function(...t){return Array.isArray(this.filters)||(this.filters=[]),t.forEach((t=>{t&&"Filter"===t.type&&(t=t.name),ht(this.filters,t)}),this),this.dirtyFilters=!0,this.dirtyImageSubscribers=!0,this.dirtyFilterIdentifier=!0,this},t.removeFilters=function(...t){return Array.isArray(this.filters)||(this.filters=[]),t.forEach((t=>{t&&"Filter"===t.type&&(t=t.name),ct(this.filters,t)}),this),this.dirtyFilters=!0,this.dirtyImageSubscribers=!0,this.dirtyFilterIdentifier=!0,this},t.clearFilters=function(){return Array.isArray(this.filters)||(this.filters=[]),this.filters.length=0,this.dirtyFilters=!0,this.dirtyImageSubscribers=!0,this.dirtyFilterIdentifier=!0,this},t.preprocessFilters=function(t){for(let e,i=0,s=t.length;is&&(r=s-2,a=1),o>n&&(o=n-2,l=1),a>s&&(a=s-1,r=0),l>n&&(l=n-1,o=0),r+a>s&&(r=s-a-1),o+l>n&&(o=n-l-1);const u=hi(),d=u.engine,f=u.element;f.width=h,f.height=c,d.setTransform(1,0,0,1,0,0),d.globalCompositeOperation="source-over",d.globalAlpha=1;const p=i.source||i.element;d.drawImage(p,r,o,a,l,0,0,h,c),t.assetData=d.getImageData(0,0,h,c),ci(u)}}e&&(t.assetData={width:1,height:1,data:new Uint8ClampedArray(4)})}e.dirtyFilterIdentifier&&(this.dirtyFilterIdentifier=!0)}const e=this.state;if(e)if(e.dirtyFilterIdentifier)this.dirtyFilterIdentifier=!0;else{let{fillStyle:t,strokeStyle:i}=e;(D[t]&&D[t].dirtyFilterIdentifier||D[i]&&D[i].dirtyFilterIdentifier)&&(this.dirtyFilterIdentifier=!0)}(this.dirtyFilterIdentifier||this.state&&this.state.dirtyFilterIdentifier)&&this.updateFilterIdentifier(!0)},t}H.ImageAsset=ImageAsset;const Group=function(t=q){return this.makeName(t.name),this.register(),this.artefacts=[],this.artefactCalculateBuckets=[],this.artefactStampBuckets=[],this.set(this.defs),this.onEntityHover=Z,this.onEntityNoHover=Z,this.isHovering=null,this.set(t),this};let Bi=Group.prototype=Object.create(Object.prototype);Bi.type="Group",Bi.lib="group",Bi.isArtefact=!1,Bi.isAsset=!1,Bi=me(Bi),Bi=Ii(Bi);Bi.defs=at(Bi.defs,{artefacts:null,order:0,visibility:!0,regionRadius:0,checkForEntityHover:!1,onEntityHover:null,onEntityNoHover:null}),Bi.packetExclusions=ht(Bi.packetExclusions,["artefactCalculateBuckets","artefactStampBuckets","batchResort"]),Bi.packetFunctions=ht(Bi.packetFunctions,["onEntityHover","onEntityNoHover"]),Bi.postCloneAction=function(t,e){let i;return i=e.host?o[e.host]:this.currentHost?this.currentHost:!!this.host&&o[this.host],i&&(i.addGroups(t.name),t.host||(t.host=i.name)),this.onEntityHover&&(t.onEntityHover=this.onEntityHover),this.onEntityNoHover&&(t.onEntityNoHover=this.onEntityNoHover),t},Bi.kill=function(t=!1){t&&this.artefactCalculateBuckets.forEach((t=>t.kill()));let e=this.name;return Object.entries(o).forEach((([t,i])=>{Array.isArray(i.groups)&&i.groups.indexOf(e)>=0&&(ct(i.groups,e),i.batchResort=!0)})),Object.entries(u).forEach((([t,i])=>{Array.isArray(i.groups)&&i.groups.indexOf(e)>=0&&(ct(i.groups,e),i.batchResort=!0)})),this.deregister()},Bi.killArtefacts=function(){return this.artefactCalculateBuckets.forEach((t=>t.kill())),this};let Ti=Bi.getters,Li=Bi.setters;Ti.artefacts=function(){return[].concat(this.artefacts)},Li.artefacts=function(t){this.artefacts=[],this.addArtefacts(t)},Li.host=function(t){let e=this.getHost(t);e&&e.addGroups&&(this.host=t,e.addGroups(this.name),this.dirtyHost=!0)},Li.order=function(t){let e=this.getHost(this.host);this.order=t,e&&e.set({batchResort:!0})},Li.noFilters=function(t){this.noFilters=t,this.dirtyFilterIdentifier=!0},Bi.getHost=function(t){if(t){if(t.type&&["Cell","Stack"].includes(t.type))return t;if(t.substring)return o[t]||u[t]}const e=this.currentHost;return e&&e.substring?o[e]||u[e]:e},Bi.forceStamp=function(){let t=this.visibility;this.visibility=!0,this.stamp(),this.visibility=t},Bi.stamp=function(){if(this.dirtyHost||!this.currentHost){this.dirtyHost=!1;let t=this.getHost(this.host);t?this.currentHost=t:this.dirtyHost=!0}if(this.visibility){const{currentHost:t,stashOutput:e,noFilters:i,filters:s}=this;if(t){this.sortArtefacts();const n=!!(e||!i&&s&&s.length)&&hi();if(n&&n.element){const e=t.currentDimensions,i=n.element;e&&i&&(i.width=e[0],i.height=e[1])}else t.engine&&t.engine.save();this.prepareStamp(n),this.stampAction(n),n?ci(n):t.engine&&(t.engine.restore(),t.setEngineFromState(t.engine))}}},Bi.sortArtefacts=function(){if(this.batchResort){this.batchResort=!1;let t=Math.floor,e=[];this.artefacts.forEach((i=>{let s=o[i],n=t(s.calculateOrder)||0;e[n]||(e[n]=[]),e[n].push(s)})),this.artefactCalculateBuckets=e.reduce(((t,e)=>t.concat(e)),[]),e.length=0,this.artefacts.forEach((i=>{let s=o[i],n=t(s.stampOrder)||0;e[n]||(e[n]=[]),e[n].push(s)})),this.artefactStampBuckets=e.reduce(((t,e)=>t.concat(e)),[])}},Bi.prepareStamp=function(t){let e=this.currentHost;t&&(e=t),this.artefactCalculateBuckets.forEach((i=>{"entity"===i.lib&&(i.currentHost&&i.currentHost.name===e.name||(i.currentHost=e,t||(i.dirtyHost=!0))),i.noDeltaUpdates||i.updateByDelta(),i.prepareStamp()}))},Bi.stampAction=function(t){!this.currentHost||this.currentHost.stashOutput;let{dirtyFilters:e,currentFilters:i,artefactStampBuckets:s,noFilters:n,filters:r,stashOutput:o,currentHost:a}=this;if(!e&&i||this.cleanFilters(),s.forEach((t=>{t&&t.stamp&&t.stamp()})),t)if(!n&&r&&r.length){let e=this.applyFilters(t);this.stashAction(e)}else if(o){let e=t.element,i=t.engine,s=!(!a||!a.engine)&&a.engine;if(s){s.save(),s.globalCompositeOperation="source-over",s.globalAlpha=1,s.setTransform(1,0,0,1,0,0),s.drawImage(e,0,0),s.restore();let t=i.getImageData(0,0,e.width,e.height);this.stashAction(t)}}},Bi.applyFilters=function(t){let e=this.currentHost,i=t;if(!e||!i)return!1;let s=e.element,n=e.engine,r=i.element,o=i.engine;this.isStencil&&(o.save(),o.globalCompositeOperation="source-in",o.globalAlpha=1,o.setTransform(1,0,0,1,0,0),o.drawImage(s,0,0),o.restore(),this.dirtyFilterIdentifier=!0),o.setTransform(1,0,0,1,0,0);let a=o.getImageData(0,0,r.width,r.height);this.preprocessFilters(this.currentFilters);let l=Ai.action({identifier:this.filterIdentifier,image:a,filters:this.currentFilters});return l&&(o.globalCompositeOperation="source-over",o.globalAlpha=1,o.setTransform(1,0,0,1,0,0),o.putImageData(l,0,0)),n.save(),n.setTransform(1,0,0,1,0,0),n.drawImage(r,0,0),n.restore(),l},Bi.stashAction=function(t){if(!t)return!1;if(this.stashOutput){this.stashOutput=!1;const[e,i,s,n]=this.getCellCoverage(t),r=hi(),o=r.engine,a=r.element;if(a.width=s,a.height=n,o.putImageData(t,-e,-i),this.stashedImageData=o.getImageData(0,0,s,n),this.stashOutputAsAsset){const t=this.stashOutputAsAsset.substring?this.stashOutputAsAsset:`${this.name}-groupimage`;if(this.stashOutputAsAsset=!1,this.stashedImage)this.stashedImage.src=a.toDataURL();else{const e=this.stashedImage=document.createElement("img");e.id=t,e.onload=function(){zt.appendChild(e),Ri(`#${t}`)},e.src=a.toDataURL()}}ci(r)}},Bi.getCellCoverage=function(t){let e,i,s=t.width,n=t.height,r=t.data,o=0,a=0,l=s,h=n,c=3;for(i=0;ie&&(l=e),oi&&(h=i),a{t&&(t.substring?ht(this.artefacts,t):t.name&&ht(this.artefacts,t.name))}),this),this.batchResort=!0,this},Bi.getArtefact=function(t){return this.artefacts.indexOf(t)>=0&&o[t]||!1},Bi.removeArtefacts=function(...t){return t.forEach((t=>{t&&(t.substring?ct(this.artefacts,t):t.name&&ct(this.artefacts,t.name))}),this),this.batchResort=!0,this},Bi.moveArtefactsIntoGroup=function(...t){let e,i;return t.forEach((t=>{t&&(i=t.substring?o[t]:t,i&&i.isArtefact&&(e=i.group?i.group:!!i.host&&g[i.host]),e&&(e.removeArtefacts(t),e.batchResort=!0),ht(this.artefacts,t))}),this),this.batchResort=!0,this},Bi.clearArtefacts=function(){return this.artefacts.length=0,this.artefactCalculateBuckets.length=0,this.artefactStampBuckets.length=0,this.batchResort=!0,this},Bi.updateArtefacts=function(t){return this.cascadeAction(t,"setDelta"),this},Bi.setArtefacts=function(t){return this.cascadeAction(t,"set"),this},Bi.updateByDelta=function(){return this.cascadeAction(!1,"updateByDelta"),this},Bi.reverseByDelta=function(){return this.cascadeAction(!1,"reverseByDelta"),this},Bi.addArtefactClasses=function(t){return this.cascadeAction(t,"addClasses"),this},Bi.removeArtefactClasses=function(t){return this.cascadeAction(t,"removeClasses"),this},Bi.cascadeAction=function(t,e){return this.artefacts.forEach((i=>{let s=o[i];s&&s[e]&&s[e](t)})),this},Bi.setDeltaValues=function(t=q){return this.artefactCalculateBuckets.forEach((e=>e.setDeltaValues(t))),this},Bi.addFiltersToEntitys=function(...t){return this.artefacts.forEach((e=>{let i=f[e];i&&i.addFilters&&i.addFilters(t)})),this},Bi.removeFiltersFromEntitys=function(...t){return this.artefacts.forEach((e=>{let i=f[e];i&&i.removeFilters&&i.removeFilters(t)})),this},Bi.clearFiltersFromEntitys=function(){return this.artefacts.forEach((t=>{let e=f[t];e&&e.clearFilters&&e.clearFilters()})),this},Bi.getArtefactAt=function(t){this.sortArtefacts();let e=hi(),i=this.artefactStampBuckets;for(let s=i.length-1;s>=0;s--){let n=i[s];if(n){let i=n.checkHit(t,e);if(i)return ci(e),i}}return ci(e),!1},Bi.getAllArtefactsAt=function(t){this.sortArtefacts();const e=hi(),i=this.artefactStampBuckets,s=[],n=[];for(let r=i.length-1;r>=0;r--){const o=i[r];if(o){const i=o.checkHit(t,e);if(i&&i.artefact){const t=i.artefact;s.indexOf(t.name)<0&&(s.push(t.name),n.push(i))}}}if(ci(e),this.checkForEntityHover){const t=!!n.length;this.isHovering!==t&&(this.isHovering=t,t?this.onEntityHover():this.onEntityNoHover())}return n};const $i=function(t){return!!t&&new Group(t)};function ji(t=q){t.defs=at(t.defs,{group:null,visibility:!0,calculateOrder:0,stampOrder:0,start:null,handle:null,offset:null,dimensions:null,pivoted:null,mimicked:null,particle:null,lockTo:null,bringToFrontOnDrag:!0,ignoreDragForX:!1,ignoreDragForY:!1,scale:1,roll:0,noUserInteraction:!1,noPositionDependencies:!1,noCanvasEngineUpdates:!1,noFilters:!1,noPathUpdates:!1,purge:null}),t.packetExclusions=ht(t.packetExclusions,["pathObject","mimicked","pivoted"]),t.packetExclusionsByRegex=ht(t.packetExclusionsByRegex,["^(local|dirty|current)","Subscriber$"]),t.packetCoordinates=ht(t.packetCoordinates,["start","handle","offset"]),t.packetObjects=ht(t.packetObjects,["group"]),t.packetFunctions=ht(t.packetFunctions,[]),t.processPacketOut=function(t,e,i){let s=!0;if("lockTo"===t)"start"===e[0]&&"start"===e[1]&&(s=i.indexOf("lockTo")>=0);else"entity"===this.lib?s=this.processEntityPacketOut(t,e,i):this.isArtefact&&(s=this.processDOMPacketOut(t,e,i));return s},t.handlePacketAnchor=function(t,e){if(this.anchor){let i=JSON.parse(this.anchor.saveAsPacket(e))[3];t.anchor=i}return t},t.kill=function(t=!1,e=!1){let i=this.name;return Object.entries(g).forEach((([t,e])=>{e.artefacts.indexOf(i)>=0&&e.removeArtefacts(i)})),this.anchor&&this.demolishAnchor(),Object.entries(o).forEach((([t,e])=>{e.name!==i&&(e.pivot&&e.pivot.name===i&&e.set({pivot:!1}),e.mimic&&e.mimic.name===i&&e.set({mimic:!1}),e.path&&e.path.name===i&&e.set({path:!1}),e.generateAlongPath&&e.generateAlongPath.name===i&&e.set({generateAlongPath:!1}),e.generateInArea&&e.generateInArea.name===i&&e.set({generateInArea:!1}),e.artefact&&e.artefact.name===i&&e.set({artefact:!1}),Array.isArray(e.pins)&&e.pins.forEach(((t,s)=>{rt(t)&&t.name===i&&e.removePinAt(s)})))})),Object.entries(w).forEach((([t,e])=>{e.checkForTarget(i)&&e.removeFromTargets(this)})),this.factoryKill(t,e),this.deregister(),this},t.factoryKill=Z;let e=t.getters,i=t.setters,s=t.deltaSetters;return e.positionX=function(){return this.currentStampPosition[0]},e.positionY=function(){return this.currentStampPosition[1]},e.position=function(){return[].concat(this.currentStampPosition)},e.startX=function(){return this.currentStart[0]},e.startY=function(){return this.currentStart[1]},e.start=function(){return[].concat(this.currentStart)},i.startX=function(t){null!=t&&(this.start[0]=t,this.dirtyStart=!0)},i.startY=function(t){null!=t&&(this.start[1]=t,this.dirtyStart=!0)},i.start=function(t,e){this.setCoordinateHelper("start",t,e),this.dirtyStart=!0},s.startX=function(t){let e=this.start;e[0]=G(e[0],t),this.dirtyStart=!0},s.startY=function(t){let e=this.start;e[1]=G(e[1],t),this.dirtyStart=!0},s.start=function(t,e){this.setDeltaCoordinateHelper("start",t,e),this.dirtyStart=!0},e.handleX=function(){return this.currentHandle[0]},e.handleY=function(){return this.currentHandle[1]},e.handle=function(){return[].concat(this.currentHandle)},i.handleX=function(t){null!=t&&(this.handle[0]=t,this.dirtyHandle=!0)},i.handleY=function(t){null!=t&&(this.handle[1]=t,this.dirtyHandle=!0)},i.handle=function(t,e){this.setCoordinateHelper("handle",t,e),this.dirtyHandle=!0},s.handleX=function(t){let e=this.handle;e[0]=G(e[0],t),this.dirtyHandle=!0},s.handleY=function(t){let e=this.handle;e[1]=G(e[1],t),this.dirtyHandle=!0},s.handle=function(t,e){this.setDeltaCoordinateHelper("handle",t,e),this.dirtyHandle=!0},e.offsetX=function(){return this.currentOffset[0]},e.offsetY=function(){return this.currentOffset[1]},e.offset=function(){return[].concat(this.currentOffset)},i.offsetX=function(t){null!=t&&(this.offset[0]=t,this.dirtyOffset=!0)},i.offsetY=function(t){null!=t&&(this.offset[1]=t,this.dirtyOffset=!0)},i.offset=function(t,e){this.setCoordinateHelper("offset",t,e),this.dirtyOffset=!0},s.offsetX=function(t){let e=this.offset;e[0]=G(e[0],t),this.dirtyOffset=!0},s.offsetY=function(t){let e=this.offset;e[1]=G(e[1],t),this.dirtyOffset=!0},s.offset=function(t,e){this.setDeltaCoordinateHelper("offset",t,e),this.dirtyOffset=!0},e.width=function(){return this.currentDimensions[0]},e.height=function(){return this.currentDimensions[1]},e.dimensions=function(){return[].concat(this.currentDimensions)},i.width=function(t){null!=t&&(this.dimensions[0]=t,this.dirtyDimensions=!0)},i.height=function(t){null!=t&&(this.dimensions[1]=t,this.dirtyDimensions=!0)},i.dimensions=function(t,e){this.setCoordinateHelper("dimensions",t,e),this.dirtyDimensions=!0},s.width=function(t){let e=this.dimensions;e[0]=G(e[0],t),this.dirtyDimensions=!0},s.height=function(t){let e=this.dimensions;e[1]=G(e[1],t),this.dirtyDimensions=!0},s.dimensions=function(t,e){this.setDeltaCoordinateHelper("dimensions",t,e),this.dirtyDimensions=!0},e.order=function(){return this.stampOrder},i.order=function(t){this.calculateOrder=t,this.stampOrder=t},i.particle=function(t){tt(t)&&!t?(this.particle=null,"particle"===this.lockTo[0]&&(this.lockTo[0]="start"),"particle"===this.lockTo[1]&&(this.lockTo[1]="start"),this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0):(this.particle=t,this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0)},i.lockTo=function(t){Array.isArray(t)?(this.lockTo[0]=t[0],this.lockTo[1]=t[1]):(this.lockTo[0]=t,this.lockTo[1]=t),this.dirtyLock=!0,this.dirtyStampPositions=!0},i.lockXTo=function(t){this.lockTo[0]=t,this.dirtyLock=!0,this.dirtyStampPositions=!0},i.lockYTo=function(t){this.lockTo[1]=t,this.dirtyLock=!0,this.dirtyStampPositions=!0},e.roll=function(){return this.currentRotation},i.roll=function(t){this.roll=t,this.dirtyRotation=!0},s.roll=function(t){this.roll+=t,this.dirtyRotation=!0},e.scale=function(){return this.currentScale},i.scale=function(t){this.scale=t,this.dirtyScale=!0},s.scale=function(t){this.scale+=t,this.dirtyScale=!0},i.host=function(t){if(t){let e=o[t];e&&e.here?this.host=e.name:this.host=t}else this.host="";this.dirtyDimensions=!0,this.dirtyHandle=!0,this.dirtyStart=!0,this.dirtyOffset=!0},i.group=function(t){let e;t&&(this.group&&"Group"===this.group.type&&this.group.removeArtefacts(this.name),t.substring?(e=g[t],this.group=e||t):this.group=t),this.group&&"Group"===this.group.type&&this.group.addArtefacts(this.name)},i.noFilters=function(t){this.noFilters=t,this.dirtyFilterIdentifier=!0},t.purgeArtefact=function(t){return t.substring&&(t="all"===t?["pivot","mimic","path","filter"]:[t]),Array.isArray(t)&&t.forEach((t=>function(t,e){switch(e){case"pivot":delete t.pivot,delete t.pivotCorner,delete t.pivotPin,delete t.addPivotHandle,delete t.addPivotOffset,delete t.addPivotRotation;break;case"mimic":delete t.mimic,delete t.useMimicDimensions,delete t.useMimicScale,delete t.useMimicStart,delete t.useMimicHandle,delete t.useMimicOffset,delete t.useMimicRotation,delete t.useMimicFlip,delete t.addOwnDimensionsToMimic,delete t.addOwnScaleToMimic,delete t.addOwnStartToMimic,delete t.addOwnHandleToMimic,delete t.addOwnOffsetToMimic,delete t.addOwnRotationToMimic;break;case"path":delete t.path,delete t.pathPosition,delete t.addPathHandle,delete t.addPathOffset,delete t.addPathRotation,delete t.constantPathSpeed;break;case"filter":delete t.filter,delete t.filters,delete t.isStencil}}(this,t))),this},t.initializePositions=function(){this.dimensions=mi(),this.start=mi(),this.handle=mi(),this.offset=mi(),this.currentDimensions=mi(),this.currentStart=mi(),this.currentHandle=mi(),this.currentOffset=mi(),this.currentDragOffset=mi(),this.currentDragCache=mi(),this.currentStartCache=mi(),this.currentStampPosition=mi(),this.currentStampHandlePosition=mi(),this.delta={},this.deltaConstraints={},this.lockTo=["start","start"],this.pivoted=[],this.mimicked=[],this.dirtyScale=!0,this.dirtyDimensions=!0,this.dirtyLock=!0,this.dirtyStart=!0,this.dirtyOffset=!0,this.dirtyHandle=!0,this.dirtyRotation=!0,this.isBeingDragged=!1,this.initializeDomPositions()},t.initializeDomPositions=Z,t.setCoordinateHelper=function(t,e,i){let s=this[t];Array.isArray(e)?(s[0]=e[0],s[1]=e[1]):rt(e)?pt(e.x,e.y)?(s[0]=ft(e.x,s[0]),s[1]=ft(e.y,s[1])):(s[0]=ft(e.width,e.w,s[0]),s[1]=ft(e.height,e.h,s[1])):(s[0]=e,s[1]=i)},t.setDeltaCoordinateHelper=function(t,e,i){let s=this[t],n=s[0],r=s[1];Array.isArray(e)?(s[0]=G(n,e[0]),s[1]=G(r,e[1])):rt(e)?pt(e.x,e.y)?(s[0]=G(n,ft(e.x,0)),s[1]=G(r,ft(e.y,0))):(s[0]=G(n,ft(e.width,e.w,0)),s[1]=G(r,ft(e.height,e.h,0))):(s[0]=G(n,e),s[1]=G(r,i))},t.getHost=function(){if(this.currentHost)return this.currentHost;if(this.host){let t=o[this.host];if(t)return this.currentHost=t,this.dirtyHost=!0,this.currentHost}return Se},t.getHere=function(){let t=this.getHost();if(t){if(t.here&&Object.keys(t.here))return t.here;if(t.currentDimensions){let e=t.currentDimensions;if(e)return{w:e[0],h:e[1]}}}return Se},t.cleanPosition=function(t,e,i){let s,n;for(let r=0;r<2;r++)s=e[r],n=i[r],s.toFixed?t[r]=s:t[r]="left"===s||"top"===s?0:"right"===s||"bottom"===s?n:"center"===s?n/2:parseFloat(s)/100*n;this.dirtyFilterIdentifier=!0},t.cleanScale=function(){this.dirtyScale=!1;let t,e=this.scale,i=this.mimic,s=this.currentScale;i&&this.useMimicScale?i.currentScale?(t=i.currentScale,this.addOwnScaleToMimic&&(t+=e)):(t=e,this.dirtyMimicScale=!0):t=e,this.currentScale=t,this.dirtyDimensions=!0,this.dirtyHandle=!0,s!==this.currentScale&&(this.dirtyPositionSubscribers=!0),this.mimicked&&this.mimicked.length&&(this.dirtyMimicScale=!0),this.dirtyFilterIdentifier=!0},t.cleanDimensions=function(){this.dirtyDimensions=!1;let t=this.getHost(),e=this.dimensions,i=this.currentDimensions;if(t){let s=t.currentDimensions?t.currentDimensions:[t.w,t.h],[n,r]=e,o=i[0],a=i[1];n.substring&&(n=parseFloat(n)/100*s[0]),r.substring&&(r="auto"===r?0:parseFloat(r)/100*s[1]);let l,h=this.mimic;h&&h.name&&this.useMimicDimensions&&(l=h.currentDimensions),l?(i[0]=this.addOwnDimensionsToMimic?l[0]+n:l[0],i[1]=this.addOwnDimensionsToMimic?l[1]+r:l[1]):(i[0]=n,i[1]=r),this.cleanDimensionsAdditionalActions(),this.dirtyStart=!0,this.dirtyHandle=!0,this.dirtyOffset=!0,o===i[0]&&a===i[1]||(this.dirtyPositionSubscribers=!0),this.mimicked&&this.mimicked.length&&(this.dirtyMimicDimensions=!0),this.dirtyFilterIdentifier=!0}else this.dirtyDimensions=!0},t.cleanDimensionsAdditionalActions=Z,t.cleanLock=function(){this.dirtyLock=!1,this.dirtyStart=!0,this.dirtyHandle=!0},t.cleanStart=function(){let t,e,i=this.getHost();i&&(this.dirtyStart=!1,dt(i.w,i.h)?(t=i.w,e=i.h):i.currentDimensions?[t,e]=i.currentDimensions:this.dirtyStart=!0),this.dirtyStart||(this.cleanPosition(this.currentStart,this.start,[t,e]),this.dirtyStampPositions=!0)},t.cleanOffset=function(){let t,e,i=this.getHost();i&&(this.dirtyOffset=!1,dt(i.w,i.h)?(t=i.w,e=i.h):i.currentDimensions?[t,e]=i.currentDimensions:this.dirtyOffset=!0),this.dirtyStart||(this.cleanPosition(this.currentOffset,this.offset,[t,e]),this.dirtyStampPositions=!0,this.mimicked&&this.mimicked.length&&(this.dirtyMimicOffset=!0))},t.cleanHandle=function(){this.dirtyHandle=!1;let t=this.currentHandle;this.cleanPosition(t,this.handle,this.currentDimensions),this.dirtyStampHandlePositions=!0,this.mimicked&&this.mimicked.length&&(this.dirtyMimicHandle=!0)},t.cleanRotation=function(){this.dirtyRotation=!1;let t,e=this.roll,i=this.currentRotation,s=this.path,n=this.mimic,r=this.pivot,o=this.lockTo;if(s&&o.indexOf("path")>=0){if(t=e,this.addPathRotation){let e=this.getPathData();e&&(t+=e.angle)}}else n&&this.useMimicRotation&&o.indexOf("mimic")>=0?ut(n.currentRotation)?(t=n.currentRotation,this.addOwnRotationToMimic&&(t+=e)):this.dirtyMimicRotation=!0:(t=e,r&&this.addPivotRotation&&o.indexOf("pivot")>=0&&(ut(r.currentRotation)?t+=r.currentRotation:this.dirtyPivotRotation=!0));this.currentRotation=t,t!==i&&(this.dirtyPositionSubscribers=!0),this.mimicked&&this.mimicked.length&&(this.dirtyMimicRotation=!0),this.dirtyFilterIdentifier=!0},t.cleanStampPositions=function(){this.dirtyStampPositions=!1;let{currentStampPosition:t,currentStart:e,currentOffset:i,currentStartCache:s,currentDragOffset:n}=this,[r,o]=t;if(this.noPositionDependencies)t[0]=e[0],t[1]=e[1];else{let{isBeingDragged:r,lockTo:o,pivot:a,pivotCorner:l,pivotPin:h,addPivotOffset:c,path:u,addPathOffset:d,mimic:f,useMimicStart:p,useMimicOffset:m,addOwnStartToMimic:g,addOwnOffsetToMimic:y,particle:S,ignoreDragForX:k,ignoreDragForY:A}=this;const O=function(t){return("pivot"!==t||a)&&("path"!==t||u)&&("mimic"!==t||f)&&("particle"!==t||b)?t:"start"},v={start:function(t){t.setFromArray(e).add(i)},path:function(t){P?(t.setFromVector(P),d||t.subtract(u.currentOffset)):t.setFromArray(e).add(i)},pivot:function(t){l&&a.getCornerCoordinate?t.setFromArray(a.getCornerCoordinate(l)):"Polyline"==a.type?t.setFromArray(a.getPinAt(h)):t.setFromArray(a.currentStampPosition),c||t.subtract(a.currentOffset),t.add(i)},mimic:function(t){p||m?(t.setFromArray(f.currentStampPosition),p&&g&&t.add(e),m&&y&&t.add(i),p||t.subtract(f.currentStart).add(e),m||t.subtract(f.currentOffset).add(i)):t.setFromArray(e).add(i)},particle:function(t){S.substring&&(S=b[S]),S?t.setFromVector(S.position):t.setFromArray(e).add(i)},mouse:function(t){t.setFromVector(w),r&&(s.setFromArray(t),t.add(n)),t.add(i)}};let x,C,w,P,D=fi(),R=!1;if(D.length=0,r)D.push(k?O(o[0]):"mouse"),D.push(A?O(o[1]):"mouse"),R=!0,this.getCornerCoordinate&&this.cleanPathObject();else for(x=0;x<2;x++)C=O(o[x]),"mouse"===C&&(R=!0),"start"!==C&&(this.dirtyFilterIdentifier=!0),D.push(C);R&&(w=this.getHere()),D.indexOf("path")>=0&&(P=this.getPathData());let[F,E]=D,M=fi(),H=fi();v[F](M),F==E?H.setFromArray(M):v[E](H),t[0]=M[0],t[1]=H[1],pi(D)}r===t[0]&&o===t[1]||(this.dirtyPositionSubscribers=!0)},t.cleanStampHandlePositions=function(){this.dirtyStampHandlePositions=!1;let t=this.currentStampHandlePosition,e=this.currentHandle,i=t[0],s=t[1];if(this.noPositionDependencies)t[0]=e[0],t[1]=e[1];else{let i,s,n,r=this.lockTo,o=this.pivot,a=this.path,l=this.mimic;for(s=0;s<2;s++){switch(i=r[s],"pivot"!==i||o||(i="start"),"path"!==i||a||(i="start"),"mimic"!==i||l||(i="start"),n=e[s],"start"!==i&&(this.dirtyFilterIdentifier=!0),i){case"pivot":this.addPivotHandle&&(n+=o.currentHandle[s]);break;case"path":this.addPathHandle&&(n+=a.currentHandle[s]);break;case"mimic":this.useMimicHandle&&(n=l.currentHandle[s],this.addOwnHandleToMimic&&(n+=e[s]))}t[s]=n}}this.cleanStampHandlePositionsAdditionalActions(),i===t[0]&&s===t[1]||(this.dirtyPositionSubscribers=!0)},t.cleanStampHandlePositionsAdditionalActions=Z,t.checkHit=function(t=[],e){if(this.noUserInteraction)return!1;this.pathObject&&!this.dirtyPathObject||this.cleanPathObject();let i=Array.isArray(t)?t:[t],s=!1;e||(e=hi(),s=!0);let n,r,o=e.engine,a=this.currentStampPosition,l=a[0],h=a[1];if(i.some((t=>{if(Array.isArray(t))n=t[0],r=t[1];else{if(!dt(t,t.x,t.y))return!1;n=t.x,r=t.y}return!(!n.toFixed||!r.toFixed||isNaN(n)||isNaN(r))&&(e.rotateDestination(o,l,h,this),o.isPointInPath(this.pathObject,n,r,this.winding))}),this)){let t=this.checkHitReturn(n,r,e);return s&&ci(e),t}return s&&ci(e),!1},t.checkHitReturn=function(t,e,i){return{x:t,y:e,artefact:this}},t.pickupArtefact=function(t=q){let{x:e,y:i}=t;return dt(e,i)&&(this.isBeingDragged=!0,this.currentDragCache.set(this.currentDragOffset),this.relativeCoordinates=[...this.start],"start"===this.lockTo[0]?this.currentDragOffset[0]=this.currentStart[0]-e:"pivot"===this.lockTo[0]&&this.pivot?this.currentDragOffset[0]=this.pivot.get("startX")-e:"mimic"===this.lockTo[0]&&this.mimic&&(this.currentDragOffset[0]=this.mimic.get("startX")-e),"start"===this.lockTo[1]?this.currentDragOffset[1]=this.currentStart[1]-i:"pivot"===this.lockTo[1]&&this.pivot?this.currentDragOffset[1]=this.pivot.get("startY")-i:"mimic"===this.lockTo[1]&&this.mimic&&(this.currentDragOffset[1]=this.mimic.get("startY")-i),this.bringToFrontOnDrag&&(this.stampOrder+=9999,this.group.batchResort=!0),ut(this.dirtyPathObject)&&(this.dirtyPathObject=!0)),this},t.dropArtefact=function(){this.start.set(this.currentStartCache).add(this.currentDragOffset),this.dirtyStart=!0;const t=this.currentHost;if(t){const[e,i]=t.get("dimensions"),[s,n]=this.start,[r,o]=this.relativeCoordinates;r.substring&&(this.start[0]=s/e*100+"%"),o.substring&&(this.start[1]=n/i*100+"%")}return delete this.relativeCoordinates,this.currentDragOffset.set(this.currentDragCache),this.bringToFrontOnDrag&&(this.stampOrder-=9999,this.stampOrder<0&&(this.stampOrder=0),this.group.batchResort=!0),ut(this.dirtyPathObject)&&(this.dirtyPathObject=!0),this.isBeingDragged=!1,this},t.updatePositionSubscribers=function(){this.dirtyPositionSubscribers=!1,this.pivoted&&this.pivoted.length&&this.updatePivotSubscribers(),this.mimicked&&this.mimicked.length&&this.updateMimicSubscribers(),this.pathed&&this.pathed.length&&this.updatePathSubscribers()},t.updatePivotSubscribers=Z,t.updateMimicSubscribers=Z,t.updatePathSubscribers=Z,t.updateImageSubscribers=Z,t}function Xi(t=q){const e={delta:null,noDeltaUpdates:!1,deltaConstraints:null,checkDeltaConstraints:!1,performDeltaChecks:!1};t.defs=at(t.defs,e),at(t,e);const i=t.setters;t.deltaSetters,i.delta=function(t=q){t&&(this.delta=lt(this.delta,t))},i.deltaConstraints=function(t=q){t&&(this.deltaConstraints=lt(this.deltaConstraints,t))},t.updateByDelta=function(){return this.setDelta(this.delta),this.checkDeltaConstraints&&this.performDeltaConstraintsChecks(),this},t.reverseByDelta=function(){const t={},e=this.delta,i=Object.keys(e),s=i.length;for(let n,r,o=0;o=0?(a<2?p=this.start:a<4?p=this.handle:a<6?p=this.offset:a<8&&(p=this.dimensions),n.indexOf(o)>=0&&(m=1),g=p[m]):g=this.get(o),S=parseFloat(h),k=parseFloat(c),A=parseFloat(g),d="",Ak&&(d=u,f=1),d)switch(d){case"reverse":t[o]=-parseFloat(t[o])+"%",this.set({[o]:A+parseFloat(t[o])+"%"});break;case"loop":f?this.set({[o]:A-(k-S)+"%"}):this.set({[o]:A+(k-S)+"%"})}}else if(g=this.get(o),d="",gc&&(d=u,f=1),d)switch(d){case"reverse":t[o]=-t[o],this.set({[o]:g+t[o]});break;case"loop":f?this.set({[o]:g-(c-h)}):this.set({[o]:g+(c-h)})}}else this.performDeltaChecks=!0},t.setDeltaValues=function(t=q){const e=this.delta,i=Object.keys(t),s=i.length;for(let n,r,o,a,l,h=0;h=0&&(this.pivotCorner=t)},i.addPivotHandle=function(t){this.addPivotHandle=t,this.dirtyHandle=!0},i.addPivotOffset=function(t){this.addPivotOffset=t,this.dirtyOffset=!0},i.addPivotRotation=function(t){this.addPivotRotation=t,this.dirtyRotation=!0},t.updatePivotSubscribers=function(){this.pivoted.forEach((t=>{let e=o[t];e||(e=l[t],e&&"Cell"===e.type||(e=!1)),e&&(e.dirtyStart=!0,e.addPivotHandle&&(e.dirtyHandle=!0),e.addPivotOffset&&(e.dirtyOffset=!0),e.addPivotRotation&&(e.dirtyRotation=!0),"Polyline"===e.type?e.dirtyPins=!0:"Line"!==e.type&&"Quadratic"!==e.type&&"Bezier"!==e.type||e.dirtyPins.push(this.name))}),this)},t}function Ni(t=q){let e={mimic:"",useMimicDimensions:!1,useMimicScale:!1,useMimicStart:!1,useMimicHandle:!1,useMimicOffset:!1,useMimicRotation:!1,useMimicFlip:!1,addOwnDimensionsToMimic:!1,addOwnScaleToMimic:!1,addOwnStartToMimic:!1,addOwnHandleToMimic:!1,addOwnOffsetToMimic:!1,addOwnRotationToMimic:!1};t.defs=at(t.defs,e),at(t,e),t.packetObjects=ht(t.packetObjects,["mimic"]),t.getters;let i=t.setters;return t.deltaSetters,i.mimic=function(t){if(tt(t)&&!t)this.mimic=null,"mimic"===this.lockTo[0]&&(this.lockTo[0]="start"),"mimic"===this.lockTo[1]&&(this.lockTo[1]="start"),this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0;else{let e=this.mimic,i=this.name,s=t.substring?o[t]:t;s||(s=l[t],s&&"Cell"!==s.type&&(s=!1)),s&&s.name&&(e&&e.name!==s.name&&ct(e.mimicked,i),ht(s.mimicked,i),this.mimic=s,this.useMimicDimensions&&(this.dirtyDimensions=!0),this.useMimicScale&&(this.dirtyScale=!0),this.useMimicStart&&(this.dirtyStart=!0),this.useMimicHandle&&(this.dirtyHandle=!0),this.useMimicOffset&&(this.dirtyOffset=!0),this.useMimicRotation&&(this.dirtyRotation=!0))}},i.useMimicDimensions=function(t){this.useMimicDimensions=t,this.dirtyDimensions=!0},i.useMimicScale=function(t){this.useMimicScale=t,this.dirtyScale=!0},i.useMimicStart=function(t){this.useMimicStart=t,this.dirtyStart=!0},i.useMimicHandle=function(t){this.useMimicHandle=t,this.dirtyHandle=!0},i.useMimicOffset=function(t){this.useMimicOffset=t,this.dirtyOffset=!0},i.useMimicRotation=function(t){this.useMimicRotation=t,this.dirtyRotation=!0},i.addOwnDimensionsToMimic=function(t){this.addOwnDimensionsToMimic=t,this.dirtyDimensions=!0},i.addOwnScaleToMimic=function(t){this.addOwnScaleToMimic=t,this.dirtyScale=!0},i.addOwnStartToMimic=function(t){this.addOwnStartToMimic=t,this.dirtyStart=!0},i.addOwnHandleToMimic=function(t){this.addOwnHandleToMimic=t,this.dirtyHandle=!0},i.addOwnOffsetToMimic=function(t){this.addOwnOffsetToMimic=t,this.dirtyOffset=!0},i.addOwnRotationToMimic=function(t){this.addOwnRotationToMimic=t,this.dirtyRotation=!0},t.updateMimicSubscribers=function(){let t=this.dirtyMimicHandle,e=this.dirtyMimicOffset,i=this.dirtyMimicRotation,s=this.dirtyMimicScale,n=this.dirtyMimicDimensions;this.mimicked.forEach((r=>{let a=o[r];a||(a=l[r],a&&"Cell"===a.type||(a=!1)),a&&(a.useMimicStart&&(a.dirtyStart=!0),t&&a.useMimicHandle&&(a.dirtyHandle=!0),e&&a.useMimicOffset&&(a.dirtyOffset=!0),i&&a.useMimicRotation&&(a.dirtyRotation=!0),s&&a.useMimicScale&&(a.dirtyScale=!0),n&&a.useMimicDimensions&&(a.dirtyDimensions=!0))})),this.dirtyMimicHandle=!1,this.dirtyMimicOffset=!1,this.dirtyMimicRotation=!1,this.dirtyMimicScale=!1,this.dirtyMimicDimensions=!1},t}function Gi(t=q){let e={path:"",pathPosition:0,addPathHandle:!1,addPathOffset:!0,addPathRotation:!1,constantSpeedAlongPath:!1};t.defs=at(t.defs,e),at(t,e),t.packetObjects=ht(t.packetObjects,["path"]);let i=t.setters,s=t.deltaSetters;return i.path=function(t){if(tt(t)&&!t)this.path=null,"path"===this.lockTo[0]&&(this.lockTo[0]="start"),"path"===this.lockTo[1]&&(this.lockTo[1]="start"),this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0;else{let e=this.path,i=t.substring?o[t]:t,s=this.name;i&&i.name&&i.useAsPath&&(e&&e.name!==i.name&&ct(e.pathed,s),ht(i.pathed,s),this.path=i,this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0)}},i.pathPosition=function(t){t<0&&(t=Math.abs(t)),t>1&&(t%=1),this.pathPosition=parseFloat(t.toFixed(6)),this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0,this.currentPathData=!1},s.pathPosition=function(t){let e=this.pathPosition+t;e<0&&(e+=1),e>1&&(e%=1),this.pathPosition=parseFloat(e.toFixed(6)),this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0,this.currentPathData=!1},i.addPathHandle=function(t){this.addPathHandle=t,this.dirtyHandle=!0},i.addPathOffset=function(t){this.addPathOffset=t,this.dirtyOffset=!0},i.addPathRotation=function(t){this.addPathRotation=t,this.dirtyRotation=!0},t.getPathData=function(){if(this.currentPathData)return this.currentPathData;let t,e=this.pathPosition,i=this.path;if(i){let s=this.constantSpeedAlongPath||this.constantPathSpeed||!1;return t=i.getPathPositionData(e,s),this.addPathRotation&&(this.dirtyRotation=!0),this.currentPathData=t,t}return!1},t}H.Group=Group;const Anchor=function(t=q){return this.makeName(t.name),this.register(),this.set(this.defs),this.set(t),this.build(),this};let zi=Anchor.prototype=Object.create(Object.prototype);zi.type="Anchor",zi.lib="anchor",zi.isArtefact=!1,zi.isAsset=!1,zi=me(zi);zi.defs=at(zi.defs,{host:null,description:"",download:"",href:"",hreflang:"",ping:"",referrerpolicy:"",rel:"noreferrer",target:"_blank",anchorType:"",clickAction:null,focusAction:!1,blurAction:!1}),zi.packetExclusions=ht(zi.packetExclusions,["domElement"]),zi.packetObjects=ht(zi.packetExclusions,["host"]),zi.packetFunctions=ht(zi.packetFunctions,["clickAction"]),zi.demolish=function(){this.domElement&&this.hold&&this.hold.removeChild(this.domElement),this.deregister()};let Wi=zi.setters;Wi.host=function(t){let e=t.substring?o[t]:t;e&&e.name&&(this.host=e)},Wi.hold=function(t){it(t)&&(this.domElement&&this.hold&&this.hold.removeChild(this.domElement),this.hold=t,this.domElement&&this.hold.appendChild(this.domElement))},Wi.download=function(t){this.download=t,this.domElement&&this.update("download")},Wi.href=function(t){this.href=t,this.domElement&&this.update("href")},Wi.hreflang=function(t){this.hreflang=t,this.domElement&&this.update("hreflang")},Wi.ping=function(t){this.ping=t,this.domElement&&this.update("ping")},Wi.referrerpolicy=function(t){this.referrerpolicy=t,this.domElement&&this.update("referrerpolicy")},Wi.rel=function(t){this.rel=t,this.domElement&&this.update("rel")},Wi.target=function(t){this.target=t,this.domElement&&this.update("target")},Wi.anchorType=function(t){this.anchorType=t,this.domElement&&this.update("type")},Wi.description=function(t){this.description=t,this.domElement&&(this.domElement.textContent=t)},Wi.clickAction=function(t){st(t)&&(this.clickAction=t,this.domElement&&this.domElement.setAttribute("onclick",t()))},zi.build=function(){this.domElement&&this.hold&&this.hold.removeChild(this.domElement);let t=document.createElement("a");t.id=this.name,this.download&&t.setAttribute("download",this.download),this.href&&t.setAttribute("href",this.href),this.hreflang&&t.setAttribute("hreflang",this.hreflang),this.ping&&t.setAttribute("ping",this.ping),this.referrerpolicy&&t.setAttribute("referrerpolicy",this.referrerpolicy),this.rel&&t.setAttribute("rel",this.rel),this.target&&t.setAttribute("target",this.target),this.anchorType&&t.setAttribute("type",this.anchorType),this.clickAction&&st(this.clickAction)&&t.setAttribute("onclick",this.clickAction()),this.description&&(t.textContent=this.description),this.focusAction&&t.addEventListener("focus",(t=>this.host.onEnter()),!1),this.blurAction&&t.addEventListener("blur",(t=>this.host.onLeave()),!1),this.domElement=t,this.hold&&this.hold.appendChild(t)},zi.update=function(t){this.domElement&&this.domElement.setAttribute(t,this[t])},zi.click=function(){if(this.hasBeenRecentlyClicked)return!1;{let t=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0});this.hasBeenRecentlyClicked=!0;let e=this;return setTimeout((()=>e.hasBeenRecentlyClicked=!1),200),this.domElement.dispatchEvent(t)}};function Vi(t=q){t.defs=at(t.defs,{anchor:null}),t.demolishAnchor=function(){this.anchor&&this.anchor.demolish()};const e=t.getters,i=t.setters;return t.deltaSetters,e.anchorDescription=function(){return this.anchor?this.anchor.get("description"):""},i.anchorDescription=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.description(t)},e.anchorType=function(){return this.anchor?this.anchor.get("type"):""},i.anchorType=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.anchorType(t)},e.anchorTarget=function(){return this.anchor?this.anchor.get("target"):""},i.anchorTarget=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.target(t)},e.anchorRel=function(){return this.anchor?this.anchor.get("rel"):""},i.anchorRel=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.rel(t)},e.anchorReferrerPolicy=function(){return this.anchor?this.anchor.get("referrerpolicy"):""},i.anchorReferrerPolicy=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.referrerpolicy(t)},e.anchorPing=function(){return this.anchor?this.anchor.get("ping"):""},i.anchorPing=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.ping(t)},e.anchorHreflang=function(){return this.anchor?this.anchor.get("hreflang"):""},i.anchorHreflang=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.hreflang(t)},e.anchorHref=function(){return this.anchor?this.anchor.get("href"):""},i.anchorHref=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.href(t)},e.anchorDownload=function(){return this.anchor?this.anchor.get("download"):""},i.anchorDownload=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.download(t)},i.anchorFocusAction=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.focusAction(t)},i.anchorBlurAction=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.blurAction(t)},i.anchor=function(t){this.anchor?this.anchor.set(t):this.buildAnchor(t)},t.buildAnchor=function(t){rt(t)&&(this.anchor&&this.anchor.demolish(),t.name||(t.name=`${this.name}-anchor`),t.description||(t.description=`Anchor link for ${this.name} ${this.type}`),t.host=this,t.hold=this.getAnchorHold(),this.anchor=function(t){return!!t&&new Anchor(t)}(t))},t.getAnchorHold=function(){let t=this.currentHost;if(t){if("Canvas"===t.type)return t.navigation;if("Cell"===t.type){let e=t.currentHost?t.currentHost:c[t.host];if(e&&"Canvas"===e.type)return e.navigation}}return this.dirtyAnchorHold=!0,Wt},t.rebuildAnchor=function(){this.anchor&&this.anchor.build()},t.clickAnchor=function(){this.anchor&&this.anchor.click()},t}function Zi(t=q){t.defs=at(t.defs,{groups:null,groupBuckets:null,batchResort:!0});const e=t.getters,i=t.setters;return e.groups=function(){return[].concat(this.groups)},i.groups=function(t){this.groups=[],this.addGroups(t)},t.sortGroups=function(t=!1){if(this.batchResort){this.batchResort=!1;const t=Math.floor,e=this.groups,i=[];let s,n;e.forEach((e=>{s=g[e],n=s?t(s.order):0,i[n]||(i[n]=[]),i[n].push(s)})),this.groupBuckets=i.reduce(((t,e)=>t.concat(e)),[])}},t.initializeCascade=function(){this.groups=[],this.groupBuckets=[]},t.addGroups=function(...t){return t.forEach((t=>{t&&t.substring?ht(this.groups,t):g[t]&&ht(this.groups,t.name)}),this),this.batchResort=!0,this},t.removeGroups=function(...t){return t.forEach((t=>{t&&t.substring?ct(this.groups,t):g[t]&&ct(this.groups,t.name)}),this),this.batchResort=!0,this},t.cascadeAction=function(t,e){let i;return this.groups.forEach((s=>{i=g[s],i&&i[e](t)}),this),this},t.updateArtefacts=function(t){return this.cascadeAction(t,"updateArtefacts"),this},t.setArtefacts=function(t){return this.cascadeAction(t,"setArtefacts"),this},t.addArtefactClasses=function(t){return this.cascadeAction(t,"addArtefactClasses"),this},t.removeArtefactClasses=function(t){return this.cascadeAction(t,"removeArtefactClasses"),this},t.updateByDelta=function(){return this.cascadeAction(!1,"updateByDelta"),this},t.reverseByDelta=function(){return this.cascadeAction(!1,"reverseByDelta"),this},t.getArtefactAt=function(t){if(t=ft(t,this.here,!1)){let e,i;for(let s=this.groups.length-1;s>=0;s--)if(e=g[this.groups[s]],e&&(i=e.getArtefactAt(t),i))return i}return!1},t.getAllArtefactsAt=function(t){const e=[];if(t=ft(t,this.here,!1)){let i,s;for(let n=this.groups.length-1;n>=0;n--)i=g[this.groups[n]],i&&(s=i.getAllArtefactsAt(t),s&&e.push(...s))}return e},t}function _i(t=q){t.defs=at(t.defs,{repeat:"repeat",patternMatrix:null});let e=t.setters;return t.repeatValues=["repeat","repeat-x","repeat-y","no-repeat"],e.repeat=function(t){this.repeatValues.indexOf(t)>=0?this.repeat=t:this.repeat=this.defs.repeat},t.matrixNumberPosCheck=["a","b","c","d","e","f"],t.updateMatrixNumber=function(t,e){this.patternMatrix||(this.patternMatrix=new DOMMatrix),t=t.substring?parseFloat(t):t;let i=this.matrixNumberPosCheck.indexOf(e);nt(t)&&i>=0&&(this.patternMatrix[e]=t)},e.matrixA=function(t){this.updateMatrixNumber(t,"a")},e.matrixB=function(t){this.updateMatrixNumber(t,"b")},e.matrixC=function(t){this.updateMatrixNumber(t,"c")},e.matrixD=function(t){this.updateMatrixNumber(t,"d")},e.matrixE=function(t){this.updateMatrixNumber(t,"e")},e.matrixF=function(t){this.updateMatrixNumber(t,"f")},e.stretchX=function(t){this.updateMatrixNumber(t,"a")},e.skewY=function(t){this.updateMatrixNumber(t,"b")},e.skewX=function(t){this.updateMatrixNumber(t,"c")},e.stretchY=function(t){this.updateMatrixNumber(t,"d")},e.shiftX=function(t){this.updateMatrixNumber(t,"e")},e.shiftY=function(t){this.updateMatrixNumber(t,"f")},e.patternMatrix=function(t){if(Array.isArray(t)){let e=this.updateMatrixNumber;e(t[0],"a"),e(t[1],"b"),e(t[2],"c"),e(t[3],"d"),e(t[4],"e"),e(t[5],"f")}},t.buildStyle=function(t){if(t){t.substring&&(t=u[t]);let e=this.source,i=this.sourceLoaded,s=this.repeat,n=t.engine;if("Cell"!==this.type&&"Noise"!==this.type||(e=this.element,i=!0),n&&i){let t=n.createPattern(e,s);return t.setTransform(this.patternMatrix),t}}return"rgb(0 0 0 / 0)"},t}H.Anchor=Anchor;const Cell=function(t=q){if(this.makeName(t.name),this.register(),this.initializePositions(),this.initializeCascade(),!et(t.element)){let e=document.createElement("canvas");e.id=this.name,e.width=300,e.height=150,t.element=e}return this.installElement(t.element,t.willReadFrequently),this.set(this.defs),this.set(t),this.state.setStateFromEngine(this.engine),$i({name:this.name,host:this.name}),this.subscribers=[],this.sourceNaturalDimensions=mi(),this.dirtyDimensionsOverride=!0,this.sourceLoaded=!0,this.here={},this};let Ui=Cell.prototype=Object.create(Object.prototype);Ui.type="Cell",Ui.lib="cell",Ui.isArtefact=!1,Ui.isAsset=!0,Ui=me(Ui),Ui=ni(Ui),Ui=Oi(Ui),Ui=ji(Ui),Ui=Xi(Ui),Ui=Yi(Ui),Ui=Ni(Ui),Ui=Gi(Ui),Ui=Vi(Ui),Ui=Zi(Ui),Ui=_i(Ui),Ui=Ii(Ui);Ui.defs=at(Ui.defs,{cleared:!0,compiled:!0,shown:!0,compileOrder:0,showOrder:0,backgroundColor:"",clearAlpha:0,alpha:1,composite:"source-over",scale:1,flipReverse:!1,flipUpend:!1,filter:"none",isBase:!1,useAsPattern:!1,controller:null,includeInCascadeEventActions:!1}),delete Ui.defs.source,delete Ui.defs.sourceLoaded,Ui.stringifyFunction=Z,Ui.processPacketOut=Z,Ui.finalizePacketOut=Z,Ui.saveAsPacket=function(){return`[${this.name}, ${this.type}, ${this.lib}, {}]`},Ui.clone=U,Ui.factoryKill=function(){let t=this.name;Object.entries(c).forEach((([e,i])=>{i.cells.indexOf(t)>=0&&i.removeCell(t),i.base&&i.base.name===t&&i.set({visibility:!1})})),Object.entries(o).forEach((([e,i])=>{if(i.name!==t){let e=i.state;if(e){let i=e.fillStyle,s=e.strokeStyle;i.name&&i.name===t&&(e.fillStyle=e.defs.fillStyle),s.name&&s.name===t&&(e.strokeStyle=e.defs.strokeStyle)}}})),g[t]&&g[t].kill()};let Ki=Ui.getters,qi=Ui.setters,Qi=Ui.deltaSetters;Ui.get=function(t){let e=this.getters[t];if(e)return e.call(this);{let e,i=this.defs[t],s=this.state;return null!=i?(e=this[t],null!=e?e:i):(i=s.defs[t],null!=i?(e=s[t],null!=e?e:i):undef)}},Ki.width=function(){return this.currentDimensions[0]||this.element.getAttribute("width")},qi.width=function(t){null!=t&&(this.dimensions[0]=t,this.dirtyDimensions=!0,this.dirtyDimensionsOverride=!0)},Ki.height=function(){return this.currentDimensions[1]||this.element.getAttribute("height")},qi.height=function(t){null!=t&&(this.dimensions[1]=t,this.dirtyDimensions=!0,this.dirtyDimensionsOverride=!0)},Ki.dimensions=function(){return[this.currentDimensions[0]||this.element.getAttribute("width"),this.currentDimensions[1]||this.element.getAttribute("height")]},qi.dimensions=function(t,e){this.setCoordinateHelper("dimensions",t,e),this.dirtyDimensions=!0,this.dirtyDimensionsOverride=!0},qi.source=function(){},qi.engine=function(t){},qi.state=function(t){},qi.element=function(t){et(t)&&this.installElement(t)},qi.backgroundColor=function(t){"rgb(0 0 0 / 0)"!==t&&"rgba(0 0 0 / 0)"!==t&&"rgba(0,0,0,0)"!==t&&"rgba(0, 0, 0, 0)"!==t&&"transparent"!==t&&"#00000000"!==t&&"#0000"!==t||(t=""),this.backgroundColor=t},qi.cleared=function(t){this.cleared=t,this.updateControllerCells()},qi.compiled=function(t){this.compiled=t,this.updateControllerCells()},qi.shown=function(t){this.shown=t,this.updateControllerCells()},qi.compileOrder=function(t){this.compileOrder=t,this.updateControllerCells()},qi.showOrder=function(t){this.showOrder=t,this.updateControllerCells()},qi.stashX=function(t){this.stashCoordinates||(this.stashCoordinates=[0,0]),this.stashCoordinates[0]=t},qi.stashY=function(t){this.stashCoordinates||(this.stashCoordinates=[0,0]),this.stashCoordinates[1]=t},qi.stashWidth=function(t){if(!this.stashDimensions){let t=this.currentDimensions;this.stashDimensions=[t[0],t[1]]}this.stashDimensions[0]=t},qi.stashHeight=function(t){if(!this.stashDimensions){let t=this.currentDimensions;this.stashDimensions=[t[0],t[1]]}this.stashDimensions[1]=t},Qi.stashX=function(t){this.stashCoordinates||(this.stashCoordinates=[0,0]);let e=this.stashCoordinates;e[0]=addStrings(e[0],t)},Qi.stashY=function(t){this.stashCoordinates||(this.stashCoordinates=[0,0]);let e=this.stashCoordinates;e[1]=addStrings(e[1],t)},Qi.stashWidth=function(t){if(!this.stashDimensions){let t=this.currentDimensions;this.stashDimensions=[t[0],t[1]]}let e=this.stashDimensions;e[0]=addStrings(e[0],t)},Qi.stashHeight=function(t){if(!this.stashDimensions){let t=this.currentDimensions;this.stashDimensions=[t[0],t[1]]}let e=this.stashDimensions;e[1]=addStrings(e[1],t)},qi.clearAlpha=function(t){t.toFixed&&(t>1?t=1:t<0&&(t=0),this.clearAlpha=t)},Qi.clearAlpha=function(t){t.toFixed&&((t+=this.clearAlpha)>1?t=1:t<0&&(t=0),this.clearAlpha=t)},qi.smoothFont=function(t){const{element:e}=this;if(e){const{style:i}=e;i&&(t?(i.webkitFontSmoothing="auto",i.mozOsxFontSmoothing="auto",i.smoothFont="auto"):(i.webkitFontSmoothing="none",i.mozOsxFontSmoothing="grayscale",i.smoothFont="never"))}},qi.checkForEntityHover=function(t){g[this.name].set({checkForEntityHover:t})},qi.onEntityHover=function(t){g[this.name].set({onEntityHover:t})},qi.onEntityNoHover=function(t){g[this.name].set({onEntityNoHover:t})},Ki.group=function(){return g[this.name]},Ui.checkSource=function(t,e){this.currentDimensions[0]===t&&this.currentDimensions[1]===e||this.notifySubscribers()},Ui.getData=function(t,e){return this.checkSource(this.sourceNaturalDimensions[0],this.sourceNaturalDimensions[1]),this.buildStyle(e)},Ui.updateArtefacts=function(t=q){const e=this.groupBuckets;let i,s,n,r,o,a;for(n=0,r=e.length;ns?(o[0]=i((n-g*s)/2),o[1]=0,o[2]=i(g*s),o[3]=i(y*s)):(o[0]=0,o[1]=i((r-y*t)/2),o[2]=i(g*t),o[3]=i(y*t));break;case"cover":t=n/(g||1),s=r/(y||1),t0&&(this.paste||(this.paste=[]),o=this.paste,this.noDeltaUpdates||this.setDelta(this.delta),this.cleared||this.compiled||this.prepareStamp(),e.globalCompositeOperation=h,e.globalAlpha=c,o[0]=i(-p[0]*a),o[1]=i(-p[1]*a),o[2]=i(g*a),o[3]=i(y*a),this.rotateDestination(e,...m));e.drawImage(d,0,0,g,y,...o),e.restore()}},Ui.applyFilters=function(){let t=this.engine,e=t.getImageData(0,0,this.currentDimensions[0],this.currentDimensions[1]);this.preprocessFilters(this.currentFilters);let i=Ai.action({identifier:this.filterIdentifier,image:e,filters:this.currentFilters});i&&t.putImageData(i,0,0)},Ui.stashOutputAction=function(){if(this.stashOutput){this.stashOutput=!1;let{currentDimensions:t,stashCoordinates:e,stashDimensions:i,engine:s}=this,[n,r]=t,o=e?e[0]:0,a=e?e[1]:0,l=i?i[0]:n,h=i?i[1]:r;if((l.substring||h.substring||o.substring||a.substring||o||a||l!==n||h!==r)&&(l.substring&&(l=parseFloat(l)/100*n),(isNaN(l)||l<=0)&&(l=1),l>n&&(l=n),h.substring&&(h=parseFloat(h)/100*r),(isNaN(h)||h<=0)&&(h=1),h>r&&(h=r),o.substring&&(o=parseFloat(o)/100*n),(isNaN(o)||o<0)&&(o=0),o+l>n&&(o=n-l),a.substring&&(a=parseFloat(a)/100*r),(isNaN(a)||a<0)&&(a=0),a+h>r&&(a=r-h)),s.save(),s.setTransform(1,0,0,1,0,0),this.stashedImageData=s.getImageData(o,a,l,h),s.restore(),this.stashOutputAsAsset){const t=this.stashOutputAsAsset.substring?this.stashOutputAsAsset:`${this.name}-image`;let e,i;if(this.stashOutputAsAsset=!1,i=hi(),e=i.element,e.width=l,e.height=h,i.engine.putImageData(this.stashedImageData,0,0),this.stashedImage)this.stashedImage.src=e.toDataURL();else{let i=this.stashedImage=document.createElement("img");i.id=t,i.onload=function(){zt.appendChild(i),Ri(`#${t}`)},i.src=e.toDataURL()}ci(i)}}},Ui.getHost=function(){if(this.currentHost)return this.currentHost;if(this.host){let t=l[this.host]||o[this.host];return t&&(this.currentHost=t),!!t&&this.currentHost}return!1},Ui.updateBaseHere=function(t,e){if(this.isBase){this.here||(this.here={});let i=this.here,s=this.currentDimensions,n=t.active,r=t.localListener?t.originalWidth:t.w,o=t.localListener?t.originalHeight:t.h;if(s[0]!==r||s[1]!==o){this.basePaste||(this.basePaste=[]);let a,l,h=this.basePaste[0],c=s[0],u=s[1],d=r,f=o,p=t.x,m=t.y,g=c/d||1,y=u/f||1,b=Math.round;switch(i.w=c,i.h=u,e){case"contain":case"cover":h?(a=(d-c/y)/2,i.x=b((p-a)*y),i.y=b(m*y)):(l=(f-u/g)/2,i.x=b(p*g),i.y=b((m-l)*g));break;case"fill":i.x=b(p*g),i.y=b(m*y);break;default:a=(d-c)/2,l=(f-u)/2,i.x=b(p-a),i.y=b(m-l)}(i.x<0||i.x>c)&&(n=!1),(i.y<0||i.y>u)&&(n=!1),i.active=n}else i.x=t.x,i.y=t.y,i.w=r,i.h=o,i.active=n;t.baseActive=n}},Ui.prepareStamp=function(){(this.dirtyScale||this.dirtyDimensions||this.dirtyStart||this.dirtyOffset||this.dirtyHandle)&&(this.dirtyPathObject=!0),this.dirtyScale&&this.cleanScale(),this.dirtyDimensions&&(this.cleanDimensions(),this.dirtyAssetSubscribers=!0),this.dirtyLock&&this.cleanLock(),this.dirtyStart&&this.cleanStart(),this.dirtyOffset&&this.cleanOffset(),this.dirtyHandle&&this.cleanHandle(),this.dirtyRotation&&this.cleanRotation(),(this.isBeingDragged||this.lockTo.indexOf("mouse")>=0)&&(this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtyStampHandlePositions&&this.cleanStampHandlePositions(),this.dirtyPathObject&&this.cleanPathObject(),this.dirtyPositionSubscribers&&this.updatePositionSubscribers(),this.dirtyAssetSubscribers&&(this.dirtyAssetSubscribers=!1,this.notifySubscribers())},Ui.cleanPathObject=function(){if(this.dirtyPathObject=!1,!this.noPathUpdates||!this.pathObject){let t=this.pathObject=new Path2D,e=this.currentStampHandlePosition,i=this.currentScale,s=this.currentDimensions,n=-e[0]*i,r=-e[1]*i,o=s[0]*i,a=s[1]*i;t.rect(n,r,o,a)}},Ui.updateHere=function(){this.here||(this.here={});let t=this.here,[e,i]=this.currentDimensions;t.w=e,t.h=i,t.x=-1e4,t.y=-1e4,t.active=!1;let s=this.currentHost;if(s){let e=s.here;if(e&&e.active){let{x:i,y:s,w:n,h:r}=e;this.pathObject&&!this.dirtyPathObject||this.cleanPathObject();let o=hi(),a=o.engine,[l,h]=this.currentStampPosition;o.rotateDestination(a,l,h,this);let c=a.isPointInPath(this.pathObject,i,s);if(ci(o),t.active=c,c){let[e,n]=this.currentStampHandlePosition,{flipUpend:r,flipReverse:o,roll:a,scale:c}=this;if(c){let u=(i-l)/c,d=(s-h)/c;if(o&&(u=-u),r&&(d=-d),a){(o&&!r||!o&&r)&&(a=-a);let t=fi(u,d);t.rotate(-a),[u,d]=t,pi(t)}u+=e,d+=n,t.x=u,t.y=d}}}}};const Ji=function(t){if(t){if(t.setTransform(1,0,0,1,0,0),!$t()){const e=Tt();return t.scale(e,e),e}t.scale(1,1)}return 1};H.Cell=Cell;const Vector=function(t,e,i){return this.x=0,this.y=0,this.z=0,ut(t)&&this.set(t,e,i),this};let ts=Vector.prototype=Object.create(Object.prototype);ts.type="Vector",ts.getXYCoordinate=function(){return[this.x,this.y]},ts.getXYZCoordinate=function(){return[this.x,this.y,this.z]},ts.setX=function(t){if(!ut(t))throw new Error(`${this.name} Vector error - setX() arguments error: ${t}`);return this.x=t,this},ts.setY=function(t){if(!ut(t))throw new Error(`${this.name} Vector error - setY() arguments error: ${t}`);return this.y=t,this},ts.setZ=function(t){if(!ut(t))throw new Error(`${this.name} Vector error - setZ() arguments error: ${t}`);return this.z=t,this},ts.setXY=function(t,e){if(!dt(t,e))throw new Error(`${this.name} Vector error - setXY() arguments error: ${t}, ${e}`);return this.x=t,this.y=e,this},ts.set=function(t,e,i){return rt(t)?this.setFromVector(t):Array.isArray(t)?this.setFromArray(t):dt(t,e)?this.setFromArray([t,e,i]):this},ts.setFromArray=function(t){if(!Array.isArray(t))throw new Error(`${this.name} Vector error - setFromArray() arguments error: ${t}`);let[e,i,s]=t;return nt(e)&&(this.x=e),nt(i)&&(this.y=i),nt(s)&&(this.z=s),this},ts.setFromVector=function(t){if(!rt(t))throw new Error(`${this.name} Vector error - setFromVector() arguments error: ${JSON.stringify(t)}`);let{x:e,y:i,z:s}=t;return nt(e)&&(this.x=e),nt(i)&&(this.y=i),nt(s)&&(this.z=s),this},ts.zero=function(){return this.x=0,this.y=0,this.z=0,this},ts.vectorAdd=function(t=q){if(Array.isArray(t))return this.vectorAddArray(t);let{x:e,y:i,z:s}=t;return nt(e)&&(this.x+=e),nt(i)&&(this.y+=i),nt(s)&&(this.z+=s),this},ts.vectorAddArray=function(t=[]){let[e,i,s]=t;return nt(e)&&(this.x+=e),nt(i)&&(this.y+=i),nt(s)&&(this.z+=s),this},ts.vectorSubtract=function(t=q){if(Array.isArray(t))return this.vectorSubtractArray(t);let{x:e,y:i,z:s}=t;return nt(e)&&(this.x-=e),nt(i)&&(this.y-=i),nt(s)&&(this.z-=s),this},ts.vectorSubtractArray=function(t){let[e,i,s]=t;return nt(e)&&(this.x-=e),nt(i)&&(this.y-=i),nt(s)&&(this.z-=s),this},ts.scalarMultiply=function(t){if(!nt(t))throw new Error(`${this.name} Vector error - scalarMultiply() argument not a number: ${t}`);return this.x*=t,this.y*=t,this.z*=t,this},ts.vectorMultiply=function(t=q){if(Array.isArray(t))return this.vectorMultiplyArray(t);let{x:e,y:i,z:s}=t;return nt(e)&&(this.x*=e),nt(i)&&(this.y*=i),nt(s)&&(this.z*=s),this},ts.vectorMultiplyArray=function(t){let[e,i,s]=t;return nt(e)&&(this.x*=e),nt(i)&&(this.y*=i),nt(s)&&(this.z*=s),this},ts.scalarDivide=function(t){if(!nt(t))throw new Error(`${this.name} Vector error - scalarDivide() argument not a number: ${t}`);if(!t)throw new Error(`${this.name} Vector error - scalarDivide() division by zero: ${t}`);return this.x/=t,this.y/=t,this.z/=t,this},ts.getMagnitude=function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},ts.rotate=function(t){if(!nt(t))throw new Error(`${this.name} Vector error - rotate() argument not a number: ${t}`);let e=Math.atan2(this.y,this.x);e+=.01745329251*t;let i=this.getMagnitude();return this.x=i*Math.cos(e),this.y=i*Math.sin(e),this},ts.reverse=function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},ts.normalize=function(){let t=this.getMagnitude();return t>0&&(this.x/=t,this.y/=t,this.z/=t),this};const es=[],is=function(t,e,i){es.length||es.push(new Vector);let s=es.shift();return s.set(t,e,i),s},ss=function(t){t&&"Vector"===t.type&&es.push(t.zero())},ns=function(t,e,i){return new Vector(t,e,i)};H.Vector=Vector;const Quaternion=function(t=q){return this.name=t.name||"generic",this.n=t.n||1,this.v=ns(),this.set(t),this};let rs=Quaternion.prototype=Object.create(Object.prototype);rs.type="Quaternion",rs.set=function(t=q){if(ot(t))return this.setFromQuaternion(t);if(pt(t.pitch,t.yaw,t.roll))return this.setFromEuler(t);let e,i,s,n,r,o=this.v;return r=!(!ut(t.vector)&&!ut(t.v))&&(t.vector||t.v),n=!(!ut(t.scalar)&&!ut(t.n))&&(t.scalar||t.n||0),e=r?r.x||0:t.x||!1,i=r?r.y||0:t.y||!1,s=r?r.z||0:t.z||!1,this.n=nt(n)?n:this.n,o.x=nt(e)?e:o.x,o.y=nt(i)?i:o.y,o.z=nt(s)?s:o.z,this},rs.setFromQuaternion=function(t){if(!ot(t))throw new Error(`${this.name} Quaternion error - setFromQuaternion() bad argument: ${t}`);let e=this.v,i=t.v;return this.n=t.n,e.x=i.x,e.y=i.y,e.z=i.z,this},rs.setFromEuler=function(t=q){let e,i,s,n,r,o,a,l,h,c=Math.cos,u=Math.sin,d=this.v;return e=(t.pitch||t.x||0)*gt,i=(t.yaw||t.y||0)*gt,s=(t.roll||t.z||0)*gt,n=c(e/2),r=c(i/2),o=c(s/2),a=u(e/2),l=u(i/2),h=u(s/2),d.x=a*r*o+n*l*h,d.y=n*l*o+a*r*h,d.z=n*r*h-a*l*o,this.n=n*r*o-a*l*h,this},rs.zero=function(){let t=this.v;return this.n=1,t.x=0,t.y=0,t.z=0,this},rs.getMagnitude=function(){let t=this.v;return Math.sqrt(this.n*this.n+t.x*t.x+t.y*t.y+t.z*t.z)},rs.normalize=function(){let t=this.getMagnitude(),e=this.v;if(!t)throw new Error(`${this.name} Quaternion error - normalize() division by zero: ${t}`);return this.n/=t,this.n=this.n>-1e-6&&this.n<1e-6?0:this.n,e.x/=t,e.x=e.x>-1e-6&&e.x<1e-6?0:e.x,e.y/=t,e.y=e.y>-1e-6&&e.y<1e-6?0:e.y,e.z/=t,e.z=e.z>-1e-6&&e.z<1e-6?0:e.z,this},rs.quaternionMultiply=function(t){if(!ot(t))throw new Error(`${this.name} Quaternion error - quaternionMultiply() bad argument: ${t}`);let e=this.v,i=t.v,s=this.n,n=e.x,r=e.y,o=e.z,a=t.n,l=i.x,h=i.y,c=i.z;return this.n=s*a-n*l-r*h-o*c,e.x=s*l+n*a+r*c-o*h,e.y=s*h+r*a+o*l-n*c,e.z=s*c+o*a+n*h-r*l,this},rs.getAngle=function(t){let e;return t=!!ut(t)&&t,e=2*Math.acos(this.n),t&&(e*=1/gt),e>-1e-6&&e<1e-6?0:e},rs.quaternionRotate=function(t){if(!ot(t))throw new Error(`${this.name} Quaternion error - quaternionRotate() bad argument: ${t}`);let e=as(t),i=as(this);return this.setFromQuaternion(e.quaternionMultiply(i)),ls(e),ls(i),this};const os=[],as=function(t){os.length||os.push(hs({name:"pool"}));let e=os.shift();return e.set(t),e},ls=function(t){t&&"Quaternion"===t.type&&os.push(t.zero())},hs=function(t){return new Quaternion(t)};function cs(t=q){(t=Vi(t=Gi(t=Ni(t=Yi(t=Xi(t=ji(t))))))).defs=at(t.defs,{domElement:"",pitch:0,yaw:0,offsetZ:0,css:null,classes:"",position:"absolute",smoothFont:!0,checkForResize:!1,trackHere:"",activePadding:5,includeInTabNavigation:!1,moreContrastAction:null,otherContrastAction:null,reduceMotionAction:null,noPreferenceMotionAction:null,colorSchemeLightAction:null,colorSchemeDarkAction:null,reduceTransparencyAction:null,noPreferenceTransparencyAction:null,reduceDataAction:null,noPreferenceDataAction:null}),t.packetExclusions=ht(t.packetExclusions,["domElement","pathCorners","rotation"]),t.packetFunctions=ht(t.packetFunctions,["onEnter","onLeave","onDown","onUp"]),t.processDOMPacketOut=function(t,e,i){return this.processFactoryPacketOut(t,e,i)},t.processFactoryPacketOut=function(t,e,i){let s=!0;return i.indexOf(t)<0&&e===this.defs[t]&&(s=!1),s},t.finalizePacketOut=function(t,e){if(it(this.domElement)){let e=this.domElement,i=e.cloneNode(!0);i.querySelectorAll('[data-scrawl-corner-div="sc"]').forEach((t=>i.removeChild(t))),t.outerHTML=i.outerHTML,t.host=e.parentElement.id}return t=this.handlePacketAnchor(t,e)},t.postCloneAction=function(t,e){return this.onEnter&&(t.onEnter=this.onEnter),this.onLeave&&(t.onLeave=this.onLeave),this.onDown&&(t.onDown=this.onDown),this.onUp&&(t.onUp=this.onUp),t};let e=t.setters,i=t.deltaSetters;e.trackHere=function(t){var e;ut(t)&&(t?(ht(be,this.name),"local"===t&&(rt(e=this)&&(e.localMouseListener&&e.localMouseListener(),e.here||(e.here={}),e.here.originalWidth=e.currentDimensions[0],e.here.originalHeight=e.currentDimensions[1],e.localMouseListener=xt("move",(function(t){e.here&&(e.here.x=Math.round(parseFloat(t.offsetX)),e.here.y=Math.round(parseFloat(t.offsetY)))}),e.domElement)))):(ct(be,this.name),function(t){rt(t)&&(t.localMouseListener&&t.localMouseListener(),t.localMouseListener=!1)}(this)),this.trackHere=t)},e.position=function(t){this.position=t,this.dirtyPosition=!0},e.smoothFont=function(t){this.smoothFont=t,this.dirtySmoothFont=!0},e.visibility=function(t){this.visibility=t,this.dirtyVisibility=!0},e.offsetZ=function(t){this.offsetZ=t,this.dirtyOffsetZ=!0},i.offsetZ=function(t){this.offsetZ+=t,this.dirtyOffsetZ=!0},e.roll=function(t){this.roll=this.checkRotationAngle(t),this.dirtyRotation=!0},i.roll=function(t){this.roll=this.checkRotationAngle(this.roll+t),this.dirtyRotation=!0},e.pitch=function(t){this.pitch=this.checkRotationAngle(t),this.dirtyRotation=!0},i.pitch=function(t){this.pitch=this.checkRotationAngle(this.pitch+t),this.dirtyRotation=!0},e.yaw=function(t){this.yaw=this.checkRotationAngle(t),this.dirtyRotation=!0},i.yaw=function(t){this.yaw=this.checkRotationAngle(this.yaw+t),this.dirtyRotation=!0},e.css=function(t){this.css=this.css?at(this.css,t):t,this.dirtyCss=!0},e.classes=function(t){this.classes=t,this.dirtyClasses=!0},e.domAttributes=function(t){this.updateDomAttributes(t)},e.includeInTabNavigation=function(t){const e=this.domElement;e&&(this.includeInTabNavigation=t,t?e.setAttribute("tabindex",0):e.setAttribute("tabindex",-1))},t.checkRotationAngle=function(t){return(t<-180||t>180)&&(t+=t>0?-360:360),t},t.updateDomAttributes=function(t,e){if(this.domElement){let i=this.domElement;t.substring&&ut(e)?e?i.setAttribute(t,e):i.removeAttribute(t):rt(t)&&Object.entries(t).forEach((([t,e])=>{e?i.setAttribute(t,e):i.removeAttribute(t)}))}return this},t.initializeDomLayout=function(t){let e=t.domElement,i=e.style;if(i.boxSizing="border-box",e&&t.setInitialDimensions){let s=e.getBoundingClientRect();e.style.transform,e.style.transformOrigin;let n,r=!1;if(t&&t.host&&(r=t.host,r.substring&&o[r]&&(r=o[r])),this.currentDimensions[0]=s.width,this.currentDimensions[1]=s.height,t.width=s.width,t.height=s.height,e.className&&(t.classes=e.className),r&&r.domElement&&(n=r.domElement.getBoundingClientRect(),n&&(t.startX=s.left-n.left,t.startY=s.top-n.top)),"Stack"===this.type){ut(t.perspective)||ut(t.perspectiveZ)||(t.perspectiveZ=ut(i.perspective)&&i.perspective?parseFloat(i.perspective):0);let e=i.perspectiveOrigin;e.length&&(e=e.split(" "),e.length>0&&!ut(t.perspective)&&!ut(t.perspectiveX)&&(t.perspectiveX=e[0]),ut(t.perspective)||ut(t.perspectiveY)||(e.length>1?t.perspectiveY=e[1]:t.perspectiveY=e[0]))}}},t.addClasses=function(t){if(t.substring){let e=this.classes;e+=` ${t}`,e=e.trim(),e=e.replace(/[\s\uFEFF\xA0]+/g," "),e!==this.classes&&(this.classes=e,this.dirtyClasses=!0)}return this},t.removeClasses=function(t){if(t.substring){let e,i=this.classes;t.split().forEach((t=>{e=new RegExp(" ?"+t+" ?"),i=i.replace(e," "),i=i.trim(),i=i.replace(/[\s\uFEFF\xA0]+/g," ")})),i!==this.classes&&(this.classes=i,this.dirtyClasses=!0)}return this},t.emptyElementTagNames=["AREA","BASE","BR","COL","EMBED","HR","IMG","INPUT","KEYGEN","LINK","META","PARAM","SOURCE","TRACK","WBR","CANVAS"],t.addPathCorners=function(){if(this.domElement&&!this.noUserInteraction&&this.emptyElementTagNames.indexOf(this.domElement.tagName)<0){let t=function(){let t=document.createElement("div");return t.style.width=0,t.style.height=0,t.style.position="absolute",t.style.margin=0,t.style.border=0,t.style.padding=0,t},e=t(),i=t(),s=t(),n=t();e.style.top="0%",e.style.left="0%",e.setAttribute("data-scrawl-corner-div","sc"),i.style.top="0%",i.style.left="100%",i.setAttribute("data-scrawl-corner-div","sc"),s.style.top="100%",s.style.left="100%",s.setAttribute("data-scrawl-corner-div","sc"),n.style.top="100%",n.style.left="0%",n.setAttribute("data-scrawl-corner-div","sc");let r=this.domElement;r.appendChild(e),r.appendChild(i),r.appendChild(s),r.appendChild(n),this.pathCorners.push(e),this.pathCorners.push(i),this.pathCorners.push(s),this.pathCorners.push(n),this.currentCornersData||(this.currentCornersData=[])}return this},t.checkCornerPositions=function(t){let e=this.pathCorners;if(4===e.length){let i,s=this.getHere(),n=Se.scrollX-(s.offsetX||0),r=Se.scrollY-(s.offsetY||0),o=Math.round,a=[];const l=function(t){let e=t[0];e?(a.push(o(e.left+n)),a.push(o(e.top+r))):a.push(0,0)};switch(t){case"topLeft":return i=e[0].getClientRects(),l(i),a;case"topRight":return i=e[1].getClientRects(),l(i),a;case"bottomRight":return i=e[2].getClientRects(),l(i),a;case"bottomLeft":return i=e[3].getClientRects(),l(i),a;default:return e.forEach((t=>{it(t)&&(i=t.getClientRects(),l(i))})),a}}};const s=["topLeft","topRight","bottomRight","bottomLeft"];return t.getCornerCoordinate=function(t){return s.indexOf(t)>=0?this.checkCornerPositions(t):[].concat(this.currentStampPosition)},t.cleanPathObject=function(){if(this.dirtyPathObject=!1,this.domElement&&!this.noUserInteraction)if(this.pathCorners.length||this.addPathCorners(),this.pathCorners.length){this.currentCornersData||(this.currentCornersData=[]);let t=this.currentCornersData;t.length=0,t.push(...this.checkCornerPositions());let e=this.pathObject=new Path2D;e.moveTo(t[0],t[1]),e.lineTo(t[2],t[3]),e.lineTo(t[4],t[5]),e.lineTo(t[6],t[7]),e.closePath()}else{let t=this.pathObject=new Path2D;t.moveTo(0,0),t.lineTo(10,0),t.lineTo(0,10),t.lineTo(-10,0),t.closePath()}},t.checkHit=function(t=[],e){if(this.noUserInteraction)return!1;this.pathObject&&!this.dirtyPathObject||this.cleanPathObject();let i=Array.isArray(t)?t:[t],s=!1;e||(e=requestCell(),s=!0);let n,r,o=e.engine,a=this.currentStampPosition;return a[0],a[1],i.some((t=>{if(Array.isArray(t))n=t[0],r=t[1];else{if(!dt(t,t.x,t.y))return!1;n=t.x,r=t.y}return!(!n.toFixed||!r.toFixed||isNaN(n)||isNaN(r))&&o.isPointInPath(this.pathObject,n,r)}),this)?(s&&releaseCell(e),{x:n,y:r,artefact:this}):(s&&releaseCell(e),!1)},t.cleanRotation=function(){this.dirtyRotation=!1,this.rotation&&ot(this.rotation)||(this.rotation=hs()),this.currentRotation&&ot(this.rotation)||(this.currentRotation=hs());let t=this.rotation;t.setFromEuler({pitch:this.pitch||0,yaw:this.yaw||0,roll:this.roll||0}),1!==t.getMagnitude()&&t.normalize();let e=as(),i=this.path,s=this.mimic,n=this.pivot,r=this.lockTo;i&&r.indexOf("path")>=0?e.set(t):s&&this.useMimicRotation&&r.indexOf("mimic")>=0?ut(s.currentRotation)?(e.set(s.currentRotation),this.addOwnRotationToMimic&&e.quaternionRotate(t)):this.dirtyMimicRotation=!0:(e.set(t),n&&this.addPivotRotation&&r.indexOf("pivot")>=0&&(ut(n.currentRotation)?e.quaternionRotate(n.currentRotation):this.dirtyPivotRotation=!0)),this.currentRotation.set(e),ls(e),this.dirtyPositionSubscribers=!0,this.mimicked&&this.mimicked.length&&(this.dirtyMimicRotation=!0)},t.cleanOffsetZ=function(){this.dirtyOffsetZ=!1},t.cleanContent=function(){this.dirtyContent=!1,this.domElement&&(this.dirtyDimensions=!0)},t.cleanDisplayShape=Z,t.cleanDisplayArea=Z,t.prepareStamp=function(){(this.dirtyScale||this.dirtyDimensions||this.dirtyStart||this.dirtyOffset||this.dirtyHandle||this.dirtyRotation)&&(this.dirtyPathObject=!0),this.dirtyContent&&this.cleanContent(),this.dirtyScale&&this.cleanScale(),this.dirtyDimensions&&this.cleanDimensions(),this.dirtyDisplayArea&&this.cleanDisplayArea(),this.dirtyDisplayShape&&this.cleanDisplayShape(),this.dirtyLock&&this.cleanLock(),this.dirtyStart&&this.cleanStart(),this.dirtyOffset&&this.cleanOffset(),this.dirtyOffsetZ&&this.cleanOffsetZ(),this.dirtyHandle&&this.cleanHandle(),this.dirtyRotation&&this.cleanRotation(),(this.isBeingDragged||this.lockTo.indexOf("mouse")>=0||this.lockTo.indexOf("particle")>=0)&&(this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0),this.pivoted.length&&(this.dirtyStampPositions=!0),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtyStampHandlePositions&&this.cleanStampHandlePositions(),this.dirtyPathObject&&this.cleanPathObject()},t.stamp=function(){if(!this.domElement)return!1;let t,e,i,s,n,[r,o]=this.currentStampPosition,[a,l]=this.currentStampHandlePosition,h=this.currentScale,c=this.currentRotation,u=`${a}px ${l}px 0`,d=`translate(${r-a}px,${o-l}px)`;(this.yaw||this.pitch||this.roll||this.pivot&&this.addPivotRotation||this.mimic&&this.useMimicRotation||this.path&&this.addPathRotation)&&(t=c.v,e=t.x,i=t.y,s=t.z,n=c.getAngle(!1),d+=` rotate3d(${e},${i},${s},${n}rad)`),this.offsetZ&&(d+=` translateZ(${this.offsetZ}px)`),1!==h&&(d+=` scale(${h},${h})`),d!==this.currentTransformString&&(this.currentTransformString=d,this.dirtyTransform=!0),u!==this.currentTransformOriginString&&(this.currentTransformOriginString=u,this.dirtyTransformOrigin=!0),(this.dirtyTransform||this.dirtyPerspective||this.dirtyPosition||this.dirtyDomDimensions||this.dirtyTransformOrigin||this.dirtyVisibility||this.dirtySmoothFont||this.dirtyCss||this.dirtyClasses||this.domShowRequired)&&(this.domShowRequired=!1,function(t=""){if(!t)throw new Error(`core/document addDomShowElement() error - false argument supplied: ${t}`);if(!t.substring)throw new Error(`core/document addDomShowElement() error - argument not a string: ${t}`);ht(Yt,t)}(this.name),function(t=!0){Nt=t}(!0)),this.dirtyPositionSubscribers&&this.updatePositionSubscribers(),(this.dirtyMimicRotation||this.dirtyPivotRotation)&&(this.dirtyMimicRotation=!1,this.dirtyPivotRotation=!1,this.dirtyRotation=!0),this.dirtyMimicScale&&(this.dirtyMimicScale=!1,this.dirtyScale=!0)},t.initializeAccessibility=function(){this.reduceMotionAction=Z,this.noPreferenceMotionAction=Z,this.colorSchemeLightAction=Z,this.colorSchemeDarkAction=Z,this.reduceTransparencyAction=Z,this.noPreferenceTransparencyAction=Z,this.reduceDataAction=Z,this.noPreferenceDataAction=Z,this.moreContrastAction=Z,this.otherContrastAction=Z},e.moreContrastAction=function(t){st(t)&&(this.moreContrastAction=t)},t.setMoreContrastAction=function(t){st(t)&&(this.moreContrastAction=t)},e.otherContrastAction=function(t){st(t)&&(this.otherContrastAction=t)},t.setOtherContrastAction=function(t){st(t)&&(this.otherContrastAction=t)},t.contrastActions=function(){const t=this.here;if(ut(t)){const e=t.prefersContrast;ut(e)&&(e?this.moreContrastAction():this.otherContrastAction())}},e.reduceMotionAction=function(t){st(t)&&(this.reduceMotionAction=t)},t.setReduceMotionAction=function(t){st(t)&&(this.reduceMotionAction=t)},e.noPreferenceMotionAction=function(t){st(t)&&(this.noPreferenceMotionAction=t)},t.setNoPreferenceMotionAction=function(t){st(t)&&(this.noPreferenceMotionAction=t)},t.reducedMotionActions=function(){const t=this.here;if(ut(t)){const e=t.prefersReducedMotion;ut(e)&&(e?this.reduceMotionAction():this.noPreferenceMotionAction())}},e.colorSchemeLightAction=function(t){st(t)&&(this.colorSchemeLightAction=t)},t.setColorSchemeLightAction=function(t){st(t)&&(this.colorSchemeLightAction=t)},e.colorSchemeDarkAction=function(t){st(t)&&(this.colorSchemeDarkAction=t)},t.setColorSchemeDarkAction=function(t){st(t)&&(this.colorSchemeDarkAction=t)},t.colorSchemeActions=function(){const t=this.here;if(ut(t)){const e=t.prefersDarkColorScheme;ut(e)&&(e?this.colorSchemeDarkAction():this.colorSchemeLightAction())}},e.reduceTransparencyAction=function(t){st(t)&&(this.reduceTransparencyAction=t)},t.setReduceTransparencyAction=function(t){st(t)&&(this.reduceTransparencyAction=t)},e.noPreferenceTransparencyAction=function(t){st(t)&&(this.noPreferenceTransparencyAction=t)},t.setNoPreferenceTransparencyAction=function(t){st(t)&&(this.noPreferenceTransparencyAction=t)},t.reducedTransparencyActions=function(){const t=this.here;if(ut(t)){const e=t.prefersReduceTransparency;ut(e)&&(e?this.reduceTransparencyAction():this.noPreferenceTransparencyAction())}},e.reduceDataAction=function(t){st(t)&&(this.reduceDataAction=t)},t.setReduceDataAction=function(t){st(t)&&(this.reduceDataAction=t)},e.noPreferenceDataAction=function(t){st(t)&&(this.noPreferenceDataAction=t)},t.setNoPreferenceDataAction=function(t){st(t)&&(this.noPreferenceDataAction=t)},t.reducedDataActions=function(){const t=this.here;if(ut(t)){const e=t.prefersReduceData;ut(e)&&(e?this.reduceDataAction():this.noPreferenceDataAction())}},t.checkAccessibilityValues=function(){this.contrastActions(),this.reducedMotionActions(),this.colorSchemeActions(),this.reducedTransparencyActions(),this.reducedDataActions()},t.apply=function(){je(),this.prepareStamp(),this.stamp(),Gt(this.name),this.dirtyPathObject=!0,this.cleanPathObject()},t}function us(t=q){const e={breakToBanner:3,breakToLandscape:1.5,breakToPortrait:.65,breakToSkyscraper:.35,actionBannerShape:null,actionLandscapeShape:null,actionRectangleShape:null,actionPortraitShape:null,actionSkyscraperShape:null,breakToSmallest:2e4,breakToSmaller:8e4,breakToLarger:18e4,breakToLargest:32e4,actionSmallestArea:null,actionSmallerArea:null,actionRegularArea:null,actionLargerArea:null,actionLargestArea:null};t.defs=at(t.defs,e),at(t,e),t.packetFunctions=ht(t.packetFunctions,["actionBannerShape","actionLandscapeShape","actionRectangleShape","actionPortraitShape","actionSkyscraperShape","actionSmallestArea","actionSmallerArea","actionRegularArea","actionLargerArea","actionLargestArea"]);const i=t.getters,s=t.setters;return i.displayShape=function(){return this.currentDisplayShape},i.displayShapeBreakpoints=function(){return{breakToBanner:this.breakToBanner,breakToLandscape:this.breakToLandscape,breakToPortrait:this.breakToPortrait,breakToSkyscraper:this.breakToSkyscraper,breakToSmallest:this.breakToSmallest,breakToSmaller:this.breakToSmaller,breakToLarger:this.breakToLarger,breakToLargest:this.breakToLargest}},s.displayShapeBreakpoints=function(t=q){for(const[e,i]of Object.entries(t))if(nt(i))switch(e){case"breakToBanner":this.breakToBanner=i;break;case"breakToLandscape":this.breakToLandscape=i;break;case"breakToPortrait":this.breakToPortrait=i;break;case"breakToSkyscraper":this.breakToSkyscraper=i;break;case"breakToSmallest":this.breakToSmallest=i;break;case"breakToSmaller":this.breakToSmaller=i;break;case"breakToLarger":this.breakToLarger=i;break;case"breakToLargest":this.breakToLargest=i}this.dirtyDisplayShape=!0,this.dirtyDisplayArea=!0},t.setDisplayShapeBreakpoints=s.displayShapeBreakpoints,s.breakToBanner=function(t){nt(t)&&(this.breakToBanner=t),this.dirtyDisplayShape=!0},s.breakToLandscape=function(t){nt(t)&&(this.breakToLandscape=t),this.dirtyDisplayShape=!0},s.breakToPortrait=function(t){nt(t)&&(this.breakToPortrait=t),this.dirtyDisplayShape=!0},s.breakToSkyscraper=function(t){nt(t)&&(this.breakToSkyscraper=t),this.dirtyDisplayShape=!0},s.breakToSmallest=function(t){nt(t)&&(this.breakToSmallest=t),this.dirtyDisplayArea=!0},s.breakToSmaller=function(t){nt(t)&&(this.breakToSmaller=t),this.dirtyDisplayArea=!0},s.breakToLarger=function(t){nt(t)&&(this.breakToLarger=t),this.dirtyDisplayArea=!0},s.breakToLargest=function(t){nt(t)&&(this.breakToLargest=t),this.dirtyDisplayArea=!0},s.actionBannerShape=function(t){st(t)&&(this.actionBannerShape=t),this.dirtyDisplayShape=!0},t.setActionBannerShape=s.actionBannerShape,s.actionLandscapeShape=function(t){st(t)&&(this.actionLandscapeShape=t),this.dirtyDisplayShape=!0},t.setActionLandscapeShape=s.actionLandscapeShape,s.actionRectangleShape=function(t){st(t)&&(this.actionRectangleShape=t),this.dirtyDisplayShape=!0},t.setActionRectangleShape=s.actionRectangleShape,s.actionPortraitShape=function(t){st(t)&&(this.actionPortraitShape=t),this.dirtyDisplayShape=!0},t.setActionPortraitShape=s.actionPortraitShape,s.actionSkyscraperShape=function(t){st(t)&&(this.actionSkyscraperShape=t),this.dirtyDisplayShape=!0},t.setActionSkyscraperShape=s.actionSkyscraperShape,s.actionSmallestArea=function(t){st(t)&&(this.actionSmallestArea=t),this.dirtyDisplayArea=!0},t.setActionSmallestArea=s.actionSmallestArea,s.actionSmallerArea=function(t){st(t)&&(this.actionSmallerArea=t),this.dirtyDisplayArea=!0},t.setActionSmallerArea=s.actionSmallerArea,s.actionRegularArea=function(t){st(t)&&(this.actionRegularArea=t),this.dirtyDisplayArea=!0},t.setActionRegularArea=s.actionRegularArea,s.actionLargerArea=function(t){st(t)&&(this.actionLargerArea=t),this.dirtyDisplayArea=!0},t.setActionLargerArea=s.actionLargerArea,s.actionLargestArea=function(t){st(t)&&(this.actionLargestArea=t),this.dirtyDisplayArea=!0},t.setActionLargestArea=s.actionLargestArea,t.initializeDisplayShapeActions=function(){this.actionBannerShape=Z,this.actionLandscapeShape=Z,this.actionRectangleShape=Z,this.actionPortraitShape=Z,this.actionSkyscraperShape=Z,this.currentDisplayShape="",this.dirtyDisplayShape=!0,this.actionSmallestArea=Z,this.actionSmallerArea=Z,this.actionRegularArea=Z,this.actionLargerArea=Z,this.actionLargestArea=Z,this.currentDisplayArea="",this.dirtyDisplayArea=!0},t.cleanDisplayShape=function(){this.dirtyDisplayShape=!1;const[t,e]=this.currentDimensions;if(t>0&&e>0){const i=t/e,s=this.currentDisplayShape,n=this.breakToBanner,r=this.breakToLandscape,o=this.breakToPortrait,a=this.breakToSkyscraper;return i>n?"banner"!==s&&(this.currentDisplayShape="banner",this.actionBannerShape(),!0):i>r?"landscape"!==s&&(this.currentDisplayShape="landscape",this.actionLandscapeShape(),!0):i0&&e>0){const i=t*e,s=this.currentDisplayArea,n=this.breakToLargest,r=this.breakToLarger,o=this.breakToSmaller,a=this.breakToSmallest;return i>n?"largest"!==s&&(this.currentDisplayArea="largest",this.actionLargestArea(),!0):i>r?"larger"!==s&&(this.currentDisplayArea="larger",this.actionLargerArea(),!0):i=0?t:"none"},ps.title=function(t){this.title=t,this.dirtyAria=!0},ps.label=function(t){this.label=t,this.dirtyAria=!0},ps.description=function(t){this.description=t,this.dirtyAria=!0},ps.role=function(t){this.role=t,this.dirtyAria=!0},fs.backgroundColor=function(){return this.base.backgroundColor},ps.backgroundColor=function(t){this.base&&this.base.set({backgroundColor:t})},fs.alpha=function(){return this.base.alpha},ps.alpha=function(t){this.base&&this.base.set({alpha:t})},ms.alpha=function(t){this.base&&this.base.deltaSet({alpha:t})},fs.composite=function(){return this.base.composite},ps.composite=function(t){this.base&&this.base.set({composite:t})},ps.checkForEntityHover=function(t){this.base.set({checkForEntityHover:t})},ps.onEntityHover=function(t){this.base.set({onEntityHover:t})},ps.onEntityNoHover=function(t){this.base.set({onEntityNoHover:t})},fs.baseGroup=function(){return g[this.base.name]},fs.baseName=function(){return this.base.name},ds.setAsCurrentCanvas=function(){return this.base&&As(this),this},ds.setBase=function(t){return this.base&&(this.base.set(t),this.setBaseHelper()),this},ds.deltaSetBase=function(t){return this.base&&(this.base.deltaSet(t),this.setBaseHelper()),this},ds.updateBaseHere=function(){this.base&&this.base.updateBaseHere(this.here,this.fit)},ds.setBaseHelper=function(){let t={};this.base.dirtyScale&&(t.dirtyScale=!0),this.base.dirtyDimensions&&(t.dirtyDimensions=!0),this.base.dirtyLock&&(t.dirtyLock=!0),this.base.dirtyStart&&(t.dirtyStart=!0),this.base.dirtyOffset&&(t.dirtyOffset=!0),this.base.dirtyHandle&&(t.dirtyHandle=!0),this.base.dirtyRotation&&(t.dirtyRotation=!0),this.cleanCells(),this.base.prepareStamp(),this.updateCells(t)},ds.updateCells=function(t=q){const e=this.cells;for(let i,s=0,n=e.length;st.concat(e)),[]),this.cellBatchesShow=s.reduce(((t,e)=>t.concat(e)),[])},ds.cascadeEventAction=function(t,e={}){this.currentActiveEntityNames||(this.currentActiveEntityNames=[]);let i,s,n,r,a,l,h=this.currentActiveEntityNames,c=[],d=[],f=[],p=[],m=[],g=[];const y=this.cells;for(i=0,s=y.length;it.concat(e)),[]),i=0,s=c.length;ie.appendChild(t))),this.dirtyContent=!0}},xs.content=function(t){if(this.domElement){let e=this.domElement,i=e.querySelectorAll('[data-scrawl-corner-div="sc"]');e.innerHTML=t,i.forEach((t=>e.appendChild(t))),this.dirtyContent=!0}},vs.cleanDimensionsAdditionalActions=function(){this.dirtyDomDimensions=!0},vs.addCanvas=function(t=q){if(this.canvas)return this.canvas;{let e=document.createElement("canvas"),i=this.domElement;e.id=`${this.name}-canvas`;let s=i.getBoundingClientRect();window.getComputedStyle(i),i.parentNode.insertBefore(e,this.domElement);let n=gs({name:`${this.name}-canvas`,domElement:e,position:"absolute",width:s.width,height:s.height,mimic:this.name,lockTo:"mimic",useMimicDimensions:!0,useMimicScale:!0,useMimicStart:!0,useMimicHandle:!0,useMimicOffset:!0,useMimicRotation:!0,addOwnDimensionsToMimic:!1,addOwnScaleToMimic:!1,addOwnStartToMimic:!1,addOwnHandleToMimic:!1,addOwnOffsetToMimic:!1,addOwnRotationToMimic:!1});return n.set(t),this.canvas=n,n}};const Cs=function(t){return!!t&&new Element(t)};H.Element=Element;const Stack=function(t=q){let e,i;if(this.makeName(t.name),this.register(),this.initializePositions(),this.initializeCascade(),this.dimensions[0]=300,this.dimensions[1]=150,this.pathCorners=[],this.css={},this.here={},this.perspective={x:"50%",y:"50%",z:0},this.dirtyPerspective=!0,this.initializeDomLayout(t),e=$i({name:this.name,host:this.name}),this.addGroups(e.name),this.set(this.defs),this.initializeDisplayShapeActions(),this.initializeAccessibility(),this.set(t),i=this.domElement,i){i.dataset.isResponsive&&(this.isResponsive=!0),"root"===i.getAttribute("data-scrawl-group")&&(ht(At,this.name),Ot())}return this};let ws=Stack.prototype=Object.create(Object.prototype);ws.type="Stack",ws.lib="stack",ws.isArtefact=!0,ws.isAsset=!1,ws=me(ws),ws=Zi(ws),ws=cs(ws),ws=us(ws);ws.defs=at(ws.defs,{position:"relative",perspective:null,trackHere:"subscribe",isResponsive:!1,containElementsInHeight:!1}),ws.stringifyFunction=Z,ws.processPacketOut=Z,ws.finalizePacketOut=Z,ws.saveAsPacket=function(){return`[${this.name}, ${this.type}, ${this.lib}, {}]`},ws.clone=U,ws.factoryKill=function(){let t=this.name;ct(At,t),Ot(),ct(be,t),g[t]&&g[t].kill(),Object.entries(o).forEach((([e,i])=>{i.host===t&&i.kill()})),this.domElement.remove()};let Ps=ws.getters,Ds=ws.setters,Rs=ws.deltaSetters;Ps.perspectiveX=function(){return this.perspective.x},Ps.perspectiveY=function(){return this.perspective.y},Ps.perspectiveZ=function(){return this.perspective.z},Ds.perspectiveX=function(t){this.perspective.x=t,this.dirtyPerspective=!0},Ds.perspectiveY=function(t){this.perspective.y=t,this.dirtyPerspective=!0},Ds.perspectiveZ=function(t){this.perspective.z=t,this.dirtyPerspective=!0},Ds.perspective=function(t=q){this.perspective.x=ut(t.x)?t.x:this.perspective.x,this.perspective.y=ut(t.y)?t.y:this.perspective.y,this.perspective.z=ut(t.z)?t.z:this.perspective.z,this.dirtyPerspective=!0},Rs.perspectiveX=function(t){this.perspective.x=G(this.perspective.x,t),this.dirtyPerspective=!0},Rs.perspectiveY=function(t){this.perspective.y=G(this.perspective.y,t),this.dirtyPerspective=!0},Ps.group=function(){return g[this.name]},ws.updateArtefacts=function(t=q){this.groupBuckets.forEach((e=>{e.artefactCalculateBuckets.forEach((e=>{t.dirtyScale&&(e.dirtyScale=!0),t.dirtyDimensions&&(e.dirtyDimensions=!0),t.dirtyLock&&(e.dirtyLock=!0),t.dirtyStart&&(e.dirtyStart=!0),t.dirtyOffset&&(e.dirtyOffset=!0),t.dirtyHandle&&(e.dirtyHandle=!0),t.dirtyRotation&&(e.dirtyRotation=!0),t.dirtyPathObject&&(e.dirtyPathObject=!0)}))}))},ws.cleanDimensionsAdditionalActions=function(){this.groupBuckets&&this.updateArtefacts({dirtyDimensions:!0,dirtyPath:!0,dirtyStart:!0,dirtyHandle:!0}),this.dirtyDomDimensions=!0,this.dirtyPath=!0,this.dirtyStart=!0,this.dirtyHandle=!0,this.dirtyDisplayShape=!0,this.dirtyDisplayArea=!0},ws.cleanPerspective=function(){this.dirtyPerspective=!1;let t=this.perspective;this.domPerspectiveString=`perspective-origin: ${t.x} ${t.y}; perspective: ${t.z}px;`,this.domShowRequired=!0,this.groupBuckets&&this.updateArtefacts({dirtyHandle:!0,dirtyPathObject:!0})},ws.checkResponsive=function(){this.isResponsive&&this.trackHere&&(this.currentVportWidth||(this.currentVportWidth=Se.w),this.currentVportHeight||(this.currentVportHeight=Se.h),this.dirtyHeight&&this.containElementsInHeight&&(this.dirtyHeight=!1),this.currentVportWidth!==Se.w&&(this.currentVportWidth=Se.w,this.containElementsInHeight&&(this.dirtyHeight=!0)),this.currentVportHeight!==Se.h&&(this.currentVportHeight=Se.h))},ws.clear=function(){this.checkResponsive()},ws.compile=function(){this.sortGroups(),this.prepareStamp(),this.stamp(),this.groupBuckets.forEach((t=>t.stamp()))},ws.show=function(){Gt()},ws.render=function(){this.compile(),this.show()},ws.addExistingDomElements=function(t){let e,i,s,n,r;if(ut(t))for(e=t.substring?document.querySelectorAll(t):[].concat(t),n=0,r=e.length;n{if(null!=t.getAttribute("data-scrawl-stack")||et(t)||"SCRIPT"===t.tagName)t.setAttribute("data-scrawl-group",e);else{let n=t.getBoundingClientRect(),r=window.getComputedStyle(t),o=parseFloat(r.marginTop)+parseFloat(r.borderTopWidth)+parseFloat(r.paddingTop)+parseFloat(r.paddingBottom)+parseFloat(r.borderBottomWidth)+parseFloat(r.marginBottom);s=s||n.top-i.top;let a={name:t.id||t.getAttribute("name"),domElement:t,group:e,host:e,position:"absolute",width:n.width,height:n.height,startX:n.left-i.left,startY:s,classes:t.className?t.className:""};s+=o+n.height,Cs(a)}}))},Hs=function(t=q){let e,i,s,n,r,a,l="absolute";return e=t.element&&t.element.substring?document.querySelector(t.element):it(t.element)?t.element:document.createElement("div"),t.host&&t.host.substring?(i=document.querySelector(t.host),i||(i=document.body)):i=it(t.host)?t.host:ut(e.parentElement)?e.parentElement:document.body,ut(t.width)&&(e.style.width=t.width.toFixed?`${t.width}px`:t.width),ut(t.height)&&(e.style.height=t.height.toFixed?`${t.height}px`:t.height),a=t.name||e.id||e.getAttribute("name")||"",a||(a=generateUniqueString()),e.id=a,e.setAttribute("data-scrawl-stack","data-scrawl-stack"),i&&null!=i.getAttribute("data-scrawl-stack")?(s=o[i.id],r=s?s.name:"root"):r="root",e.setAttribute("data-scrawl-group",r),"root"===r&&(l="relative"),e.parentElement&&i.id===e.parentElement.id||i.appendChild(e),n=Fs({name:a,domElement:e,group:r,host:r,position:l,setInitialDimensions:!0}),Ms(e,a),Array.from(e.childNodes).forEach((t=>{t.id&&At.indexOf(t.id)>=0&&ct(At,t.id)})),delete t.name,delete t.element,delete t.host,delete t.width,delete t.height,n.set(t),Ot(),n},Is=function(t){let e=document.querySelector(`#${t}`);const i=C[t];if(i){if(null!=e.dataset.scrawlGroup)return i;E(t)}if(e){return Es(e)}},Bs=function(){!function(t="[data-scrawl-stack]"){document.querySelectorAll(t).forEach((t=>Es(t)))}(),function(t="[data-scrawl-canvas]"){let e;document.querySelectorAll(t).forEach(((t,i)=>{e=ys(t),i||As(e)}))}(),Y(),je(),we(),qt(!0),Te()},Ts=function(t){return t.length?t:(kt&&function(){const t=Math.floor;if(kt){kt=!1;const e=[];let i,s,n,r,a;for(n=0,r=At.length;nt.concat(e)),[]))}}(),St)},Ls=function(t,e){let i,s,n,r;for(i=0,s=t.length;i{let s=Object.assign({},t);s.name=`${s.name}_${i.name}`,s.target=i,e.push(new RenderAnimation(s))})),e}e=t.target&&t.target.substring?o[t.target]:t.target}else e={clear:$s,compile:js,show:Xs,checkAccessibilityValues:Z};this.makeName(t.name),this.order=ut(t.order)?t.order:this.defs.order,this.onRun=t.onRun||Z,this.onHalt=t.onHalt||Z,this.onKill=t.onKill||Z,this.target=e,this.commence=t.commence||Z,this.afterClear=t.afterClear||Z,this.afterCompile=t.afterCompile||Z,this.afterShow=t.afterShow||Z,this.afterCreated=t.afterCreated||Z,this.error=t.error||Z,this.readyToInitialize=!0,this.fn=function(){this.noTarget?(this.commence(),this.afterClear(),this.afterCompile(),this.afterShow(),this.readyToInitialize&&(this.afterCreated(this),this.readyToInitialize=!1)):this.isRunning()&&(this.commence(),this.target.clear(),this.afterClear(),this.target.compile(),this.afterCompile(),this.target.show(),this.afterShow(),this.readyToInitialize&&(this.target.checkAccessibilityValues(),this.afterCreated(this),this.readyToInitialize=!1))},this.register();const i=t.observer||!1;return i&&setTimeout((()=>{tt(i)?this.observer=vt(this,this.target):this.observer=vt(this,this.target,i)}),0),t.delay||this.run(),this};let Ns=RenderAnimation.prototype=Object.create(Object.prototype);Ns.type="RenderAnimation",Ns.lib="animation",Ns.isArtefact=!1,Ns.isAsset=!1,Ns=me(Ns);Ns.defs=at(Ns.defs,{order:1,onRun:null,onHalt:null,onKill:null,commence:null,afterClear:null,afterCompile:null,afterShow:null,afterCreated:null,error:null,target:null}),Ns.stringifyFunction=Z,Ns.processPacketOut=Z,Ns.finalizePacketOut=Z,Ns.saveAsPacket=function(){return`[${this.name}, ${this.type}, ${this.lib}, {}]`},Ns.clone=U,Ns.kill=function(){return this.onKill(),ct($,this.name),j(),this.deregister(),!0},Ns.run=function(){return this.onRun(),ht($,this.name),j(),this.target&&this.target.checkAccessibilityValues(),setTimeout((()=>pe()),20),this},Ns.start=function(){return this.readyToInitialize=!0,this.run()},Ns.isRunning=function(){return $.indexOf(this.name)>=0},Ns.halt=function(){return this.onHalt(),ct($,this.name),j(),this};const Gs=function(t){return!!t&&new RenderAnimation(t)};H.RenderAnimation=RenderAnimation;const UnstackedElement=function(t){let e=t.id||t.name;return this.makeName(e),this.register(),t.setAttribute("data-scrawl-name",this.name),this.domElement=t,this.elementComputedStyles=window.getComputedStyle(t),this.hostStyles=q,this.canvasStartX=0,this.canvasStartY=0,this.canvasWidth=0,this.canvasHeight=0,this.canvasZIndex=0,this};let zs=UnstackedElement.prototype=Object.create(Object.prototype);zs.type="UnstackedElement",zs.lib="unstackedelement",zs.isArtefact=!1,zs.isAsset=!1,zs=me(zs);zs.defs=at(zs.defs,{canvasOnTop:!1}),zs.getters,zs.setters,zs.deltaSetters,zs.demolish=function(t=!1){return!0},zs.addCanvas=function(t=q){if(!this.canvas){let e=document.createElement("canvas"),i=this.domElement,s=i.style;"static"===s.position&&(s.position="relative"),e.id=`${this.name}-canvas`,i.prepend(e);let n=gs({name:`${this.name}-canvas`,domElement:e,position:"absolute"});return this.canvas=n,n.set(t),this.updateCanvas(),n}},zs.includedStyles=["width","height","zIndex","borderBottomLeftRadius","borderBottomRightRadius","borderTopLeftRadius","borderTopRightRadius"],zs.mimickedStyles=["borderBottomLeftRadius","borderBottomRightRadius","borderTopLeftRadius","borderTopRightRadius"],zs.checkElementStyleValues=function(){let t={},e=this.domElement,i=this.canvas;if(e&&i&&i.domElement){let s=this.hostStyles,n=this.elementComputedStyles,r=i.domElement,o=this.includedStyles,{x:a,y:l,width:h,height:c}=e.getBoundingClientRect(),{x:u,y:d}=r.getBoundingClientRect(),{zIndex:f,width:p,height:m}=n;a=Math.floor(a),l=Math.floor(l),u=Math.floor(u),d=Math.floor(d),h=Math.floor(h),c=Math.floor(c),p=Math.floor(parseFloat(p)),m=Math.floor(parseFloat(m)),o.forEach((e=>{switch(e){case"width":let i=Math.max(p,h);this.canvasWidth!==i&&(this.canvasWidth=i,this.dirtyDimensions=!0);break;case"height":let r=Math.max(m,c);this.canvasHeight!==r&&(this.canvasHeight=r,this.dirtyDimensions=!0);break;case"zIndex":let o="auto"===f?0:parseInt(f,10);o=this.canvasOnTop?o+1:o-1,this.canvasZIndex!==o&&(this.canvasZIndex=o,this.dirtyZIndex=!0);break;default:let a=s[e],l=n[e];ut(a)&&a===l||(s[e]=l,t[e]=l)}}));let g=a-u,y=l-d;(g||y)&&(this.canvasStartX+=g,this.canvasStartY+=y,this.dirtyStart=!0)}return t},zs.updateCanvas=function(){if(this.canvas&&this.canvas.domElement){let t=this.canvas,e=t.domElement.style,i=this.mimickedStyles,s=this.checkElementStyleValues();for(let[t,n]of Object.entries(s))i.indexOf(t)>=0&&(e[t]=n);if(this.dirtyStart&&(this.dirtyStart=!1,t.set({startX:this.canvasStartX,startY:this.canvasStartY})),this.dirtyDimensions){this.dirtyDimensions=!1;let e=this.canvasWidth,i=this.canvasHeight;t.set({width:e,height:i}),t.dirtyDimensions=!0,t.base.set({width:e,height:i}),t.base.dirtyDimensions=!0,t.cleanDimensions(),t.base.cleanDimensions()}this.dirtyZIndex&&(this.dirtyZIndex=!1,e.zIndex=this.canvasZIndex)}};H.UnstackedElement=UnstackedElement;const Ws=function(t){let e=!!it(t.domElement)&&t.domElement,i=rt(t.animationHooks)?t.animationHooks:{},s=rt(t.canvasSpecs)?t.canvasSpecs:{},n=rt(t.observerSpecs)?t.observerSpecs:{},r=!tt(t.includeCanvas)||t.includeCanvas;return e&&e.id&&o[e.id]?Vs(e,s,i,n):Zs(e,s,i,n,r)},Vs=function(t,e,i,s){let n=o[t.id];if(!n)return!1;e.baseMatchesCanvasDimensions=!0,e.ignoreCanvasCssDimensions=!0,e.checkForResize=!0;let r=n.addCanvas(e);n.elementComputedStyles=window.getComputedStyle(t),i.name=`${n.name}-animation`,i.target=r;let a=Gs(i),l=vt(a,n,s);return{element:n,canvas:r,animation:a,demolish:()=>{l(),a.kill(),r.demolish(),n.demolish(!0)}}},Zs=function(t,e,i,s,n){if(!t||["AREA","BASE","BR","COL","EMBED","HR","IMG","INPUT","KEYGEN","LINK","META","PARAM","SOURCE","TRACK","WBR"].indexOf(t.tagName)>=0)return{};let r,o=t.id;var a;o&&F[o]?r=F[o]:r=!!(a=t)&&new UnstackedElement(a),e.baseMatchesCanvasDimensions=!0,e.checkForResize=!0;let l=!!n&&r.addCanvas(e);i.name=`${r.name}-animation`,l?(i.afterClear||(i.afterClear=()=>r.updateCanvas()),i.target=l):i.noTarget=!0;let h=Gs(i),c=vt(h,r,s);return{element:r,canvas:l,animation:h,demolish:()=>{c(),h.kill(),l&&l.demolish(),r.demolish(!0)}}},_s=["artefact","group","animation","animationtickers","world","tween","styles","filter"],Us=t=>{if(t&&t.substring){let e;return!!_s.some((i=>(e=I[i][t],e)))&&e}return!1};function Ks(t=q){t.defs=at(t.defs,{order:1,ticker:"",targets:null,time:0,action:null,reverseOnCycleEnd:!1,reversed:!1}),t.kill=function(){let t,e=this.ticker;return e===`${this.name}_ticker`?(t=n[e],t&&t.kill()):e&&this.removeFromTicker(e),this.deregister(),!0};let e=t.getters,i=t.setters;return e.targets=function(){return[].concat(this.targets)},i.targets=function(t=[]){this.setTargets(t)},i.action=function(t){this.action=t,"function"!=typeof this.action&&(this.action=Z)},t.calculateEffectiveTime=function(t){let e,i=ft(t,this.time),s=z(i),r=s[1],o=s[0],a=0;return this.effectiveTime=0,"%"===o&&r<=100?this.ticker&&(e=n[this.ticker],e&&(a=e.effectiveDuration,this.effectiveTime=a*(r/100))):this.effectiveTime=r,this},t.addToTicker=function(t){let e;return ut(t)&&(this.ticker&&this.ticker!==t&&this.removeFromTicker(this.ticker),e=n[t],ut(e)&&(this.ticker=t,e.subscribe(this.name),this.calculateEffectiveTime())),this},t.removeFromTicker=function(t){let e;return(t=ut(t)?t:this.ticker)&&(e=n[t],ut(e)&&(this.ticker="",e.unsubscribe(this.name))),this},t.setTargets=function(t){t=[].concat(t);let e=[];return t.forEach((t=>{if(st(t))st(t.set)&&e.push(t);else if(rt(t)&&ut(t.name))e.push(t);else{let i=Us(t);i&&e.push(i)}})),this.targets=e,this},t.addToTargets=function(t){return(t=[].concat(t)).forEach((t=>{"function"==typeof t?"function"==typeof t.set&&this.targets.push(t):(result=Us(t),result&&this.targets.push(result))}),this),this},t.removeFromTargets=function(t){t=[].concat(t);let e=[],i=[].concat(this.targets);return i.forEach((t=>{let i=t.type||"unknown",s=t.name||"unnamed";"unknown"!==i&&"unnamed"!==s&&e.push(`${i}_${s}`)})),t.forEach((t=>{let s;if(s="function"==typeof t?t:Us(t),s){let t=s.type||"unknown",n=s.name||"unnamed";if("unknown"!==t&&"unnamed"!==n){let s=`${t}_${n}`,r=e.indexOf(s);r>=0&&(i[r]=!1)}}})),this.targets=[],i.forEach((t=>{t&&this.targets.push(t)}),this),this},t.checkForTarget=function(t){return!!t.substring&&this.targets.some((e=>e.name===t))},t.run=Z,t.isRunning=Z,t.halt=Z,t.reverse=Z,t.resume=Z,t.seekTo=Z,t.seekFor=Z,t}const Action=function(t=q){return this.makeName(t.name),this.register(),this.set(this.defs),this.action=Z,this.revert=Z,this.set(t),this.calculateEffectiveTime(),ut(t.ticker)&&this.addToTicker(t.ticker),this};let qs=Action.prototype=Object.create(Object.prototype);qs.type="Action",qs.lib="tween",qs.isArtefact=!1,qs.isAsset=!1,qs=me(qs),qs=Ks(qs);qs.defs=at(qs.defs,{revert:null}),qs.packetExclusions=ht(qs.packetExclusions,["targets"]),qs.packetFunctions=ht(qs.packetFunctions,["revert","action"]),qs.finalizePacketOut=function(t,e){return Array.isArray(this.targets)&&(t.targets=this.targets.map((t=>t.name))),t};let Qs=qs.setters;Qs.revert=function(t){this.revert=t,"function"!=typeof this.revert&&(this.revert=Z)},Qs.triggered=function(t){this.triggered!==t&&(t?this.action():this.revert(),this.triggered=t)},qs.set=function(t=q){const e=Object.keys(t),i=e.length;if(i){const s=this.setters,n=this.defs;let r,o,a,l;for(o=0;o=i?s||(this.action(),this.triggered=!0):s&&(this.revert(),this.triggered=!1):n>=i?s||(this.action(),this.triggered=!0):s&&(this.revert(),this.triggered=!1),o&&(this.triggered=!this.triggered),!0};const Js=function(t){return!!t&&new Action(t)};function tn(t=q){(t=Ii(t=Vi(t=Gi(t=Ni(t=Yi(t=Xi(t=ji(t)))))))).defs=at(t.defs,{method:"fill",pathObject:null,winding:"nonzero",flipReverse:!1,flipUpend:!1,scaleOutline:!0,lockFillStyleToEntity:!1,lockStrokeStyleToEntity:!1,onEnter:null,onLeave:null,onDown:null,onUp:null}),t.packetExclusions=ht(t.packetExclusions,["state"]),t.packetFunctions=ht(t.packetFunctions,["onEnter","onLeave","onDown","onUp"]),t.processEntityPacketOut=function(t,e,i){return this.processFactoryPacketOut(t,e,i)},t.processFactoryPacketOut=function(t,e,i){let s=!0;return i.indexOf(t)<0&&e===this.defs[t]&&(s=!1),s},t.finalizePacketOut=function(t,e){let i=JSON.parse(this.state.saveAsPacket(e))[3];return t=at(t,i),t=this.handlePacketAnchor(t,e)},t.postCloneAction=function(t,e){return this.onEnter&&(t.onEnter=this.onEnter),this.onLeave&&(t.onLeave=this.onLeave),this.onDown&&(t.onDown=this.onDown),this.onUp&&(t.onUp=this.onUp),e.sharedState&&(t.state=this.state),e.anchor&&(e.anchor.host=t,ut(e.anchor.focusAction)||(e.anchor.focusAction=this.anchor.focusAction),ut(e.anchor.blurAction)||(e.anchor.blurAction=this.anchor.blurAction),t.buildAnchor(e.anchor),e.anchor.clickAction||(t.anchor.clickAction=this.anchor.clickAction)),t};let e=t.getters,i=t.setters;return t.deltaSetters,e.group=function(){return this.group?this.group.name:""},i.lockStylesToEntity=function(t){this.lockFillStyleToEntity=t,this.lockStrokeStyleToEntity=t},t.get=function(t){const e=this.getters[t];if(e)return e.call(this);{let e,i=this.defs[t],s=this.state;return null!=i?(e=this[t],void 0!==e?e:i):(i=s.defs[t],null!=i?(e=s[t],void 0!==e?e:i):null)}},t.set=function(t=q){const e=Object.keys(t),i=e.length;if(i){const s=this.setters,n=this.defs,r=this.state,o=r?r.setters:q,a=r?r.defs:q;let l,h,c,u;for(h=0;h=0||this.lockTo.indexOf("particle")>=0)&&(this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtyStampHandlePositions&&this.cleanStampHandlePositions(),this.dirtyPathObject&&this.cleanPathObject(),this.dirtyPositionSubscribers&&this.updatePositionSubscribers(),this.anchor&&this.dirtyAnchorHold&&(this.dirtyAnchorHold=!1,this.buildAnchor(this.anchor))},t.cleanPathObject=Z,t.acceptableHosts=["Cell","CellFragment"],t.stamp=function(t=!1,e,i){let s=!(this.noFilters||!this.filters||!this.filters.length);return t?(e&&this.acceptableHosts.includes(e.type)&&(this.currentHost=e),i&&this.set(i),this.prepareStamp(),s?this.filteredStamp():this.regularStamp()):this.visibility?this.stashOutput||s?this.filteredStamp():this.regularStamp():void 0},t.regularStamp=function(){let t=this.currentHost;if(t){const e=t.engine,[i,s]=this.currentStampPosition;t.rotateDestination(e,i,s,this),this.noCanvasEngineUpdates||t.setEngine(this),this[this.method](e)}},t.filteredStamp=function(){const{dirtyFilters:t,currentHost:e,state:i}=this;!t&&this.currentFilters||this.cleanFilters();const{element:s,engine:n,currentDimensions:r}=e,o=hi(),{element:a,engine:l}=o;this.currentHost=o;const h=r?r[0]:s.width,c=r?r[1]:s.height;if(h&&c){o.w=a.width=h,o.h=a.height=c;const t=this.noCanvasEngineUpdates;if(this.noCanvasEngineUpdates=!1,this.regularStamp(),!this.noFilters&&this.filters&&this.filters.length){const t=this.currentFilters;this.isStencil&&(l.save(),l.globalCompositeOperation="source-in",l.globalAlpha=1,l.setTransform(1,0,0,1,0,0),l.drawImage(s,0,0),l.restore(),this.dirtyFilterIdentifier=!0),l.setTransform(1,0,0,1,0,0);const e=l.getImageData(0,0,h,c);this.preprocessFilters(t);const i=Ai.action({identifier:this.filterIdentifier,image:e,filters:t});i&&(l.globalCompositeOperation="source-over",l.globalAlpha=1,l.setTransform(1,0,0,1,0,0),l.putImageData(i,0,0))}if(n.save(),n.globalAlpha=i&&i.globalAlpha?i.globalAlpha:1,n.globalCompositeOperation=i&&i.globalCompositeOperation?i.globalCompositeOperation:"source-over",n.setTransform(1,0,0,1,0,0),n.drawImage(a,0,0),this.stashOutput){this.stashOutput=!1;const[t,e,i,s]=this.getCellCoverage(l.getImageData(0,0,a.width,a.height));if(this.stashedImageData=l.getImageData(t,e,i,s),this.stashOutputAsAsset){const t=this.stashOutputAsAsset.substring?this.stashOutputAsAsset:`${this.name}-image`;if(this.stashOutputAsAsset=!1,a.width=i,a.height=s,l.putImageData(this.stashedImageData,0,0),this.stashedImage)this.stashedImage.src=a.toDataURL();else{const e=this.stashedImage=document.createElement("img");e.id=t,e.onload=function(){zt.appendChild(e),Ri(`#${t}`)},e.src=a.toDataURL()}}}n.restore(),this.currentHost=e,this.noCanvasEngineUpdates=t}ci(o)},t.getCellCoverage=function(t){let e,i,s=t.width,n=t.height,r=t.data,o=0,a=0,l=s,h=n,c=3;for(let t=0,u=s*n;te&&(l=e),oi&&(h=i),a=1)return.9999;let e=this.unitPositions;if(e&&e.length){let e,i,s,n,r,o,a,l=this.length,h=this.unitProgression,c=this.unitPositions,u=t*l,d=-1;for(let t=0,e=h.length;t=0||this.lockTo.indexOf("particle")>=0)&&(this.dirtyStampPositions=!0),this.dirtyScale&&this.cleanScale(),this.dirtyStart&&this.cleanStart(),this.dirtyOffset&&this.cleanOffset(),this.dirtyRotation&&this.cleanRotation(),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtySpecies&&this.cleanSpecies(),this.dirtyPathObject&&this.cleanPathObject(),this.dirtyPositionSubscribers&&this.updatePositionSubscribers()},t.cleanDimensions=function(){this.dirtyDimensions=!1,this.dirtyStart=!0,this.dirtyHandle=!0,this.dirtyOffset=!0},t.cleanPathObject=function(){if(this.dirtyPathObject=!1,!this.noPathUpdates||!this.pathObject){this.dirtyDimensions&&(this.cleanSpecies(),this.pathCalculatedOnce=!1),this.calculateLocalPath(this.pathDefinition),this.dirtyDimensions&&this.cleanDimensions(),this.dirtyHandle&&this.cleanHandle(),this.dirtyStampHandlePositions&&this.cleanStampHandlePositions();let t=this.currentStampHandlePosition;this.pathObject=new Path2D(`m${-t[0]},${-t[1]}${this.localPath}`)}},t.calculateLocalPath=function(t,e){let i;if(this.pathCalculatedOnce||(i=function(t,e,i,s,n){let r,o,a,l,h=[],c=[],u="",d="",f=[],p=[],m=[],g=t.match(/([A-Za-z][0-9. ,\-]*)/g),y=0,b={},S=0,k=0,A=0,O=0,v=[],x=[],C=[],w=[],P=0,D=0,R=t=>{c.push({c:u.toLowerCase(),p:t||null,x:A,y:O,cx:S,cy:k,rx:P,ry:D}),s||(v.push(S),x.push(k)),A=S,O=k};for(r=0,o=g.length;r0&&c[r-1],{c:s,p:n,x:o,y:a,cx:l,cy:h,rx:u,ry:d}=e;if(n)switch(s){case"h":f[r]=["linear",o,a,n[0]+o,a];break;case"v":f[r]=["linear",o,a,o,n[0]+a];break;case"m":f[r]=["move",o,a];break;case"l":f[r]=["linear",o,a,n[0]+o,n[1]+a];break;case"t":i&&(i.rx||i.ry)?(rn(t,i.rx-l,i.ry-h),on(t,180),f[r]=["quadratic",o,a,t.x+l,t.y+h,n[0]+o,n[1]+a]):f[r]=["quadratic",o,a,o,a,n[0]+o,n[1]+a];break;case"q":f[r]=["quadratic",o,a,n[0]+o,n[1]+a,n[2]+o,n[3]+a];break;case"s":i&&(i.rx||i.ry)?(rn(t,i.rx-l,i.ry-h),on(t,180),f[r]=["bezier",o,a,t.x+l,t.y+h,n[0]+o,n[1]+a,n[2]+o,n[3]+a]):f[r]=["bezier",o,a,o,a,n[0]+o,n[1]+a,n[2]+o,n[3]+a];break;case"c":f[r]=["bezier",o,a,n[0]+o,n[1]+a,n[2]+o,n[3]+a,n[4]+o,n[5]+a];break;case"a":f[r]=["linear",o,a,n[5]+o,n[6]+a];break;case"z":isNaN(o)&&(o=0),isNaN(a)&&(a=0),f[r]=["close",o,a];break;default:isNaN(o)&&(o=0),isNaN(a)&&(a=0),f[r]=["unknown",o,a]}else f[r]=[`no-points-${s}`,o,a]}for(b.units=f,r=0,o=f.length;rt+e),0);let e=0;for(r=0,o=p.length;r{let e=o[t];e&&(e.currentPathData=!1,e.dirtyStart=!0,e.addPathHandle&&(e.dirtyHandle=!0),e.addPathOffset&&(e.dirtyOffset=!0),e.addPathRotation&&(e.dirtyRotation=!0),"Polyline"===e.type?e.dirtyPins=!0:"Line"!==e.type&&"Quadratic"!==e.type&&"Bezier"!==e.type||e.dirtyPins.push(this.name))}),this)},t.draw=function(t){t.stroke(this.pathObject),this.showBoundingBox&&this.drawBoundingBox(t)},t.fill=function(t){t.fill(this.pathObject,this.winding),this.showBoundingBox&&this.drawBoundingBox(t)},t.drawAndFill=function(t){let e=this.pathObject;t.stroke(e),this.currentHost.clearShadow(),t.fill(e,this.winding),this.showBoundingBox&&this.drawBoundingBox(t)},t.fillAndDraw=function(t){let e=this.pathObject;t.stroke(e),this.currentHost.clearShadow(),t.fill(e,this.winding),t.stroke(e),this.showBoundingBox&&this.drawBoundingBox(t)},t.drawThenFill=function(t){let e=this.pathObject;t.stroke(e),t.fill(e,this.winding),this.showBoundingBox&&this.drawBoundingBox(t)},t.fillThenDraw=function(t){let e=this.pathObject;t.fill(e,this.winding),t.stroke(e),this.showBoundingBox&&this.drawBoundingBox(t)},t.clear=function(t){let e=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",t.fill(this.pathObject,this.winding),t.globalCompositeOperation=e,this.showBoundingBox&&this.drawBoundingBox(t)},t.drawBoundingBox=function(t){t.save(),t.strokeStyle=this.boundingBoxColor,t.lineWidth=1,t.globalCompositeOperation="source-over",t.globalAlpha=1,t.shadowOffsetX=0,t.shadowOffsetY=0,t.shadowBlur=0,t.strokeRect(...this.getBoundingBox()),t.restore()},t.getBoundingBox=function(){let t=Math.floor,e=Math.ceil,i=this.minimumBoundingBoxDimensions,[s,n,r,o]=this.localBox,[a,l]=this.currentStampHandlePosition,[h,c]=this.currentStampPosition;return r"string"!=typeof t?"":t.charAt(0).toUpperCase()+t.slice(1);function un(t=q){t.defs=at(t.defs,{end:null,endPivot:"",endPivotCorner:"",addEndPivotHandle:!1,addEndPivotOffset:!1,endPath:"",endPathPosition:0,addEndPathHandle:!1,addEndPathOffset:!0,endParticle:"",endLockTo:"",useStartAsControlPoint:!1}),t.packetExclusions=ht(t.packetExclusions,["controlledLineOffset"]),t.packetExclusionsByRegex=ht(t.packetExclusionsByRegex,[]),t.packetCoordinates=ht(t.packetCoordinates,["end"]),t.packetObjects=ht(t.packetObjects,["endPivot","endPath"]),t.packetFunctions=ht(t.packetFunctions,[]),t.factoryKill=function(){Object.entries(o).forEach((([t,e])=>{e.name!==this.name&&(e.startControlPivot&&e.startControlPivot.name===this.name&&e.set({startControlPivot:!1}),e.controlPivot&&e.controlPivot.name===this.name&&e.set({controlPivot:!1}),e.endControlPivot&&e.endControlPivot.name===this.name&&e.set({endControlPivot:!1}),e.endPivot&&e.endPivot.name===this.name&&e.set({endPivot:!1}),e.startControlPath&&e.startControlPath.name===this.name&&e.set({startControlPath:!1}),e.controlPath&&e.controlPath.name===this.name&&e.set({controlPath:!1}),e.endControlPath&&e.endControlPath.name===this.name&&e.set({endControlPath:!1}),e.endPath&&e.endPath.name===this.name&&e.set({endPath:!1}))}))};let e=t.getters,i=t.setters,s=t.deltaSetters;return i.useStartAsControlPoint=function(t){if(this.useStartAsControlPoint=t,!t){let t=this.controlledLineOffset;t[0]=0,t[1]=0}this.updateDirty()},i.endPivot=function(t){this.setControlHelper(t,"endPivot","end"),this.updateDirty(),this.dirtyEnd=!0},i.endParticle=function(t){this.setControlHelper(t,"endParticle","end"),this.updateDirty(),this.dirtyEnd=!0},i.endPath=function(t){this.setControlHelper(t,"endPath","end"),this.updateDirty(),this.dirtyEnd=!0},i.endPathPosition=function(t){this.endPathPosition=t,this.dirtyEnd=!0,this.currentEndPathData=!1,this.dirtyFilterIdentifier=!0},s.endPathPosition=function(t){this.endPathPosition+=t,this.dirtyEnd=!0,this.currentEndPathData=!1,this.dirtyFilterIdentifier=!0},e.endPositionX=function(){return this.currentEnd[0]},e.endPositionY=function(){return this.currentEnd[1]},e.endPosition=function(){return[].concat(this.currentEnd)},i.endX=function(t){null!=t&&(this.end[0]=t,this.updateDirty(),this.dirtyEnd=!0,this.currentEndPathData=!1)},i.endY=function(t){null!=t&&(this.end[1]=t,this.updateDirty(),this.dirtyEnd=!0,this.currentEndPathData=!1)},i.end=function(t,e){this.setCoordinateHelper("end",t,e),this.updateDirty(),this.dirtyEnd=!0,this.currentEndPathData=!1},s.endX=function(t){let e=this.end;e[0]=G(e[0],t),this.updateDirty(),this.dirtyEnd=!0,this.currentEndPathData=!1},s.endY=function(t){let e=this.end;e[1]=G(e[1],t),this.updateDirty(),this.dirtyEnd=!0,this.currentEndPathData=!1},s.end=function(t,e){this.setDeltaCoordinateHelper("end",t,e),this.updateDirty(),this.dirtyEnd=!0,this.currentEndPathData=!1},i.endLockTo=function(t){this.endLockTo=t,this.updateDirty(),this.dirtyEndLock=!0,this.currentEndPathData=!1},t.curveInit=function(t){this.end=mi(),this.currentEnd=mi(),this.endLockTo="coord",this.dirtyEnd=!0,this.dirtyPins=[],this.controlledLineOffset=mi()},t.setControlHelper=function(t,e,i){if(tt(t)&&!t)this[e]=null,"startControl"===i?this.dirtyStartControlLock=!0:"control"===i?this.dirtyControlLock=!0:"endControl"===i?this.dirtyEndControlLock=!0:this.dirtyEndLock=!0;else if(t){let s=this[e],n=t.substring?o[t]:t;e.indexOf("Pivot")>0?n&&n.isArtefact&&(s&&s.isArtefact&&ct(s.pivoted,this.name),ht(n.pivoted,this.name),this[e]=n):e.indexOf("Path")>0?n&&n.isArtefact&&(s&&s.isArtefact&&ct(s.pathed,this.name),ht(n.pathed,this.name),this[e]=n):e.indexOf("Particle")>0&&(n=t.substring?b[t]:t,n||(this.updateDirty(),"startControl"===i?this.dirtyStartControl=!0:"control"===i?this.dirtyControl=!0:"endControl"===i?this.dirtyEndControl=!0:this.dirtyEnd=!0,this[e]=t))}},t.buildPathPositionObject=function(t,e){if(t){let i,s,[n,...r]=t;switch(n){case"linear":i=this.positionPointOnPath(this.getLinearXY(e,...r)),s=this.getLinearAngle(e,...r);break;case"quadratic":i=this.positionPointOnPath(this.getQuadraticXY(e,...r)),s=this.getQuadraticAngle(e,...r);break;case"bezier":i=this.positionPointOnPath(this.getBezierXY(e,...r)),s=this.getBezierAngle(e,...r)}let o=0;this.flipReverse&&o++,this.flipUpend&&o++,1===o&&(s=-s),s+=this.roll,this.currentStampPosition;let a=this.controlledLineOffset;return this.localBox,i.x+=a[0],i.y+=a[1],i.angle=s,i}return!1},t.prepareStamp=function(){this.dirtyHost&&(this.dirtyHost=!1),this.dirtyPins.length&&this.preparePinsForStamp(),this.dirtyLock&&this.cleanLock(),this.dirtyStartControlLock&&this.cleanControlLock("startControl"),this.dirtyEndControlLock&&this.cleanControlLock("endControl"),this.dirtyControlLock&&this.cleanControlLock("control"),this.dirtyEndLock&&this.cleanControlLock("end"),(this.dirtyScale||this.dirtySpecies||this.dirtyDimensions||this.dirtyStart||this.dirtyStartControl||this.dirtyEndControl||this.dirtyControl||this.dirtyEnd||this.dirtyHandle)&&(this.dirtyPathObject=!0,this.useStartAsControlPoint&&this.dirtyStart&&(this.dirtySpecies=!0,this.pathCalculatedOnce=!1),(this.dirtyScale||this.dirtySpecies||this.dirtyStartControl||this.dirtyEndControl||this.dirtyControl||this.dirtyEnd)&&(this.pathCalculatedOnce=!1)),(this.isBeingDragged||this.lockTo.indexOf("mouse")>=0||this.lockTo.indexOf("particle")>=0)&&(this.dirtyStampPositions=!0,this.useStartAsControlPoint&&(this.dirtySpecies=!0,this.dirtyPathObject=!0,this.pathCalculatedOnce=!1)),this.dirtyScale&&this.cleanScale(),this.dirtyStart&&this.cleanStart(),(this.dirtyStartControl||"particle"===this.startControlLockTo)&&this.cleanControl("startControl"),(this.dirtyEndControl||"particle"===this.endControlLockTo)&&this.cleanControl("endControl"),(this.dirtyControl||"particle"===this.controlLockTo)&&this.cleanControl("control"),(this.dirtyEnd||"particle"===this.endLockTo)&&this.cleanControl("end"),this.dirtyOffset&&this.cleanOffset(),this.dirtyRotation&&this.cleanRotation(),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtySpecies&&this.cleanSpecies(),this.dirtyPathObject&&this.cleanPathObject(),this.dirtyPositionSubscribers&&(this.updatePositionSubscribers(),this.updateControlPathSubscribers())},t.cleanControlLock=function(t){let e=cn(t);this[`dirty${e}Lock`]=!1,this[`dirty${e}`]=!0},t.cleanControl=function(t){let e=cn(t);this[`dirty${e}`]=!1;let i,s,n=`${t}Path`,r=`${t}Particle`,a=this[`${t}Pivot`],l=this[n],h=this[r];a&&a.substring&&(i=o[a],i&&(a=i)),l&&l.substring&&(i=o[l],i&&(l=i)),h&&h.substring&&(i=b[h],i&&(h=i));let c,u,d,f,p,m,g,y=this[`${t}LockTo`],S=this[t],k=this[`current${e}`];switch(("pivot"!==y||a&&!a.substring)&&("path"!==y||l&&!l.substring)&&("particle"!==y||h&&!h.substring)||(y="coord"),y){case"pivot":this.pivotCorner&&a.getCornerCoordinate?[c,u]=a.getCornerCoordinate(this[`${t}PivotCorner`]):[c,u]=a.currentStampPosition,this.addPivotOffset||([d,f]=a.currentOffset,c-=d,u-=f);break;case"path":s=this.getControlPathData(l,t,e),c=s.x,u=s.y,this.addPathOffset||(c-=l.currentOffset[0],u-=l.currentOffset[1]);break;case"particle":c=h.position.x,u=h.position.y,this.pathCalculatedOnce=!1;break;case"mouse":p=this.getHere(),c=p.x||0,u=p.y||0;break;default:c=u=0,m=this.getHost(),m&&(g=m.currentDimensions,g&&(this.cleanPosition(k,S,g),[c,u]=k))}k[0]=c,k[1]=u,this.dirtySpecies=!0,this.dirtyPathObject=!0,this.dirtyPositionSubscribers=!0},t.getControlPathData=function(t,e,i){let s=this[`current${i}PathData`];if(s)return s;let n=this[`${e}PathPosition`],r=n,o=t.getPathPositionData(n);if(n<0&&(n+=1),n>1&&(n%=1),n=parseFloat(n.toFixed(6)),n!==r&&(this[`${e}PathPosition`]=n),o)return this[`current${i}PathData`]=o,o;{let t=this.getHost();if(t){let s=t.currentDimensions;if(s){let t=this[`current${i}`];return this.cleanPosition(t,this[e],s),{x:t[0],y:t[1]}}}return{x:0,y:0}}},t.updateControlPathSubscribers=function(){[].concat(this.endSubscriber,this.endControlSubscriber,this.controlSubscriber,this.startControlSubscriber).forEach((t=>{let e=o[t];e&&("Line"!==e.type&&"Quadratic"!==e.type&&"Bezier"!==e.type||("Quadratic"===e.type?(e.dirtyControl=!0,e.currentControlPathData=!1):"Bezier"===e.type&&(e.dirtyStartControl=!0,e.dirtyEndControl=!0,e.currentStartControlPathData=!1,e.currentEndControlPathData=!1),e.currentEndPathData=!1,e.dirtyEnd=!0),e.currentPathData=!1,e.dirtyStart=!0)}))},t}const Bezier=function(t=q){return this.startControl=mi(),this.endControl=mi(),this.currentStartControl=mi(),this.currentEndControl=mi(),this.startControlLockTo="coord",this.endControlLockTo="coord",this.curveInit(t),this.shapeInit(t),this.dirtyStartControl=!0,this.dirtyEndControl=!0,this};let dn=Bezier.prototype=Object.create(Object.prototype);dn.type="Bezier",dn.lib="entity",dn.isArtefact=!0,dn.isAsset=!1,dn=me(dn),dn=hn(dn),dn=un(dn);dn.defs=at(dn.defs,{startControl:null,startControlPivot:"",startControlPivotCorner:"",addStartControlPivotHandle:!1,addStartControlPivotOffset:!1,startControlPath:"",startControlPathPosition:0,addStartControlPathHandle:!1,addStartControlPathOffset:!0,startControlParticle:"",endControl:null,endControlPivot:"",endControlPivotCorner:"",addEndControlPivotHandle:!1,addEndControlPivotOffset:!1,endControlPath:"",endControlPathPosition:0,addEndControlPathHandle:!1,addEndControlPathOffset:!0,endControlParticle:"",startControlLockTo:"",endControlLockTo:""}),dn.packetExclusions=ht(dn.packetExclusions,[]),dn.packetExclusionsByRegex=ht(dn.packetExclusionsByRegex,[]),dn.packetCoordinates=ht(dn.packetCoordinates,["startControl","endControl"]),dn.packetObjects=ht(dn.packetObjects,["startControlPivot","startControlPath","endControlPivot","endControlPath"]),dn.packetFunctions=ht(dn.packetFunctions,[]);let fn=dn.getters,pn=dn.setters,mn=dn.deltaSetters;pn.endControlPivot=function(t){this.setControlHelper(t,"endControlPivot","endControl"),this.updateDirty(),this.dirtyEndControl=!0},pn.endControlParticle=function(t){this.setControlHelper(t,"endControlParticle","endControl"),this.updateDirty(),this.dirtyEndControl=!0},pn.endControlPath=function(t){this.setControlHelper(t,"endControlPath","endControl"),this.updateDirty(),this.dirtyEndControl=!0,this.currentEndControlPathData=!1},pn.endControlPathPosition=function(t){this.endControlPathPosition=t,this.dirtyEndControl=!0,this.currentEndControlPathData=!1,this.dirtyFilterIdentifier=!0},mn.endControlPathPosition=function(t){this.endControlPathPosition+=t,this.dirtyEndControl=!0,this.currentEndControlPathData=!1,this.dirtyFilterIdentifier=!0},pn.startControlPivot=function(t){this.setControlHelper(t,"startControlPivot","startControl"),this.updateDirty(),this.dirtyStartControl=!0},pn.startControlParticle=function(t){this.setControlHelper(t,"startControlParticle","startControl"),this.updateDirty(),this.dirtyStartControl=!0},pn.startControlPath=function(t){this.setControlHelper(t,"startControlPath","startControl"),this.updateDirty(),this.dirtyStartControl=!0,this.currentStartControlPathData=!1},pn.startControlPathPosition=function(t){this.startControlPathPosition=t,this.dirtyStartControl=!0,this.currentStartControlPathData=!1,this.dirtyFilterIdentifier=!0},mn.startControlPathPosition=function(t){this.startControlPathPosition+=t,this.dirtyStartControl=!0,this.currentStartControlPathData=!1,this.dirtyFilterIdentifier=!0},fn.startControlPositionX=function(){return this.currentStartControl[0]},fn.startControlPositionY=function(){return this.currentStartControl[1]},fn.startControlPosition=function(){return[].concat(this.currentStartControl)},pn.startControlX=function(t){null!=t&&(this.startControl[0]=t,this.updateDirty(),this.dirtyStartControl=!0,this.currentStartControlPathData=!1)},pn.startControlY=function(t){null!=t&&(this.startControl[1]=t,this.updateDirty(),this.dirtyStartControl=!0,this.currentStartControlPathData=!1)},pn.startControl=function(t,e){this.setCoordinateHelper("startControl",t,e),this.updateDirty(),this.dirtyStartControl=!0,this.currentStartControlPathData=!1},mn.startControlX=function(t){let e=this.startControl;e[0]=G(e[0],t),this.updateDirty(),this.dirtyStartControl=!0,this.currentStartControlPathData=!1},mn.startControlY=function(t){let e=this.startControl;e[1]=G(e[1],t),this.updateDirty(),this.dirtyStartControl=!0,this.currentStartControlPathData=!1},mn.startControl=function(t,e){this.setDeltaCoordinateHelper("startControl",t,e),this.updateDirty(),this.dirtyStartControl=!0,this.currentStartControlPathData=!1},fn.endControlPositionX=function(){return this.currentEndControl[0]},fn.endControlPositionY=function(){return this.currentEndControl[1]},fn.endControlPosition=function(){return[].concat(this.currentEndControl)},pn.endControlX=function(t){null!=t&&(this.endControl[0]=t,this.updateDirty(),this.dirtyEndControl=!0,this.currentEndControlPathData=!1)},pn.endControlY=function(t){null!=t&&(this.endControl[1]=t,this.updateDirty(),this.dirtyEndControl=!0,this.currentEndControlPathData=!1)},pn.endControl=function(t,e){this.setCoordinateHelper("endControl",t,e),this.updateDirty(),this.dirtyEndControl=!0,this.currentEndControlPathData=!1},mn.endControlX=function(t){let e=this.endControl;e[0]=G(e[0],t),this.updateDirty(),this.dirtyEndControl=!0,this.currentEndControlPathData=!1},mn.endControlY=function(t){let e=this.endControl;e[1]=G(e[1],t),this.updateDirty(),this.dirtyEndControl=!0,this.currentEndControlPathData=!1},mn.endControl=function(t,e){this.setDeltaCoordinateHelper("endControl",t,e),this.updateDirty(),this.dirtyEndControl=!0,this.currentEndControlPathData=!1},pn.startControlLockTo=function(t){this.startControlLockTo=t,this.updateDirty(),this.dirtyStartControlLock=!0},pn.endControlLockTo=function(t){this.endControlLockTo=t,this.updateDirty(),this.dirtyEndControlLock=!0,this.currentEndControlPathData=!1},dn.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeBezierPath(),this.pathDefinition=t},dn.makeBezierPath=function(){let[t,e]=this.currentStampPosition,[i,s]=this.currentStartControl,[n,r]=this.currentEndControl,[o,a]=this.currentEnd;return`m0,0c${(i-t).toFixed(2)},${(s-e).toFixed(2)} ${(n-t).toFixed(2)},${(r-e).toFixed(2)} ${(o-t).toFixed(2)},${(a-e).toFixed(2)}`},dn.cleanDimensions=function(){this.dirtyDimensions=!1,this.dirtyHandle=!0,this.dirtyOffset=!0,this.dirtyStart=!0,this.dirtyStartControl=!0,this.dirtyEndControl=!0,this.dirtyEnd=!0,this.dirtyFilterIdentifier=!0},dn.preparePinsForStamp=function(){const t=this.dirtyPins,e=this.endPivot,i=this.endPath,s=this.startControlPivot,n=this.startControlPath,r=this.endControlPivot,o=this.endControlPath;for(let a,l=0,h=t.length;l=0?(this.curve=t,this.updateDirty()):(this.curve="bezier",this.updateDirty())},yn.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeCogPath(),this.pathDefinition=t},yn.makeCogPath=function(){let t,e,i,s,n,r,o,{points:a,twist:l,outerRadius:h,innerRadius:c,outerControlsDistance:u,innerControlsDistance:d,outerControlsOffset:f,innerControlsOffset:p,curve:m}=this,g=360/a,y=[],b="";if(h.substring||c.substring||u.substring||d.substring||f.substring||p.substring){let t=this.getHost();if(t){let[e,i]=t.currentDimensions;h=h.substring?parseFloat(h)/100*e:h,c=c.substring?parseFloat(c)/100*e:c,u=u.substring?parseFloat(u)/100*e:u,d=d.substring?parseFloat(d)/100*e:d,f=f.substring?parseFloat(f)/100*e:f,p=p.substring?parseFloat(p)/100*e:p}}let S=is({x:0,y:-h}),k=is({x:0,y:-c}),A=is({x:u+f,y:-h}),O=is({x:-d+p,y:-c}),v=is({x:d+p,y:-c}),x=is({x:-u+f,y:-h});if(O.rotate(-g/2),O.rotate(l),k.rotate(-g/2),k.rotate(l),v.rotate(-g/2),v.rotate(l),t=S.x,e=S.y,y.push(t),"bezier"==m)for(o=0;o{let[n,r]=t;n.toFixed&&r.substring&&(e.convert(r),i[`${n} `]=[...e[s]])})),this.colors=i,this.dirtyPalette=!0}},vn.easing=function(t){this.setEasingHelper(t)},vn.easingFunction=vn.easing,An.setEasing=function(t){return this.setEasingHelper(t),this},An.setEasingFunction=An.setEasing,An.setEasingHelper=function(t){st(t)?(this.easing="function",this.easingFunction=t):t.substring&&mt[t]?(this.easing=t,this.easingFunction=_):(this.easing="linear",this.easingFunction=_),this.dirtyPalette=!0},On.colorSpace=function(){return this.getColorSpace()},vn.colorSpace=function(t){if(t.substring){const e=t.toUpperCase(),i=t.toLowerCase();if(["RGB","HSL","HWB","XYZ","LAB","LCH","OKLAB","OKLCH"].includes(e)){const t=Object.assign({},this.colors),s=this.factory.colorSpace;this.factory.set({colorSpace:e});for(const[e,n]of Object.entries(t)){const t=this.factory.buildColorString(...n,s);this.factory.setColor(t),this.colors[e].length=0,this.colors[e].push(...this.factory[i])}this.dirtyPalette=!0}}},On.returnColorAs=function(){return this.getReturnColorAs()},vn.returnColorAs=function(t){this.factory.set({returnColorAs:t}),this.dirtyPalette=!0},vn.precision=function(t){t=parseInt(t,10),(isNaN(t)||t<0)&&(t=0),t>50&&(t=50),this.precision=t,this.dirtyPalette=!0},vn.stops=Z,An.getColorSpace=function(){return this.factory?this.factory.colorSpace:"RGB"},An.getReturnColorAs=function(){return this.factory?this.factory.returnColorAs:"RGB"},An.recalculateHold=[],An.recalculate=function(){this.dirtyPalette=!1;const{colors:t,stops:e,factory:i}=this;e.fill("rgba(0 0 0 / 0)");const{colorSpace:s}=i;let n=Object.keys(t);n=n.map((t=>parseInt(t,10))),n.sort(((t,e)=>t-e));let r,o,a,l,h=n[0],[c,u,d,f]=t[`${h} `];e[h]=i.returnColorFromValues(c,u,d,f);for(let c=0,u=n.length-1;c=0&&t<=999&&(i.convert(e),t+=" ",this.colors[t]=[...i[s]],this.dirtyPalette=!0)},An.removeColor=function(t){ut(t)&&(t=t.substring?parseInt(t,10):Math.floor(t))>=0&&t<=999&&(t+=" ",delete this.colors[t],this.dirtyPalette=!0)},An.addStopsToGradient=function(t,e,i,s){let n,r,o,a,l,h,{stops:c,easing:u,easingFunction:d,precision:f}=this,p=Object.keys(this.colors);if(t){p=p.map((t=>parseInt(t,10))),p.sort(((t,e)=>t-e)),dt(e,i)||(e=0,i=999);let m=d;"function"!==u&&mt[u]&&(m=mt[u]);const g=this.getColorSpace(),y=!(!f||"linear"===u&&"RGB"===g);if(e===i)return c[e]||"rgba(0 0 0 / 0)";if(e1?r-=1:r<0&&(r+=1)),r=m(r),r>0&&r<1&&t.addColorStop(r,c[o]);else for(o=0,a=p.length;oe&&l1?r-=1:r<0&&(r+=1)),r>0&&r<1&&t.addColorStop(r,c[l]));else if(s)if(t.addColorStop(0,c[e]),t.addColorStop(1,c[i]),h=999-e,n=h+i,y)for(o=0;o999&&(l-=999),r=m(o/n),r>0&&r<1&&t.addColorStop(r,c[l]);else for(o=0,a=p.length;oe)r=(l-e)/n;else if(0===l)r=(l+h+.01)/n;else{if(!(l1?r-=1:r<0&&(r+=1),r>0&&r<1&&t.addColorStop(r,c[l])}else if(t.addColorStop(0,c[e]),t.addColorStop(1,c[i]),n=e-i,y)for(o=i+1;oi&&(r=m(1-(o-i)/n),r>0&&r<1&&t.addColorStop(r,c[o]));else for(o=0,a=p.length;oi&&(r=1-(l-i)/n,r>0&&r<1&&t.addColorStop(r,c[l]));return t}return"rgba(0 0 0 / 0)"};H.Palette=Palette;const xn=["colors","cyclic","stops"];function Cn(t=q){t.defs=at(t.defs,{start:null,end:null,palette:null,paletteStart:0,paletteEnd:999,cyclePalette:!1,animateByDelta:!1}),t.finalizePacketOut=function(t,e){return e.colors?t.colors=e.colors:this.palette?t.colors=this.palette.get("colors"):t.colors=[[0,"rgba(0 0 0 / 1)"],[999,"rgba(255 255 255 / 1)"]],e.easing?t.easing=e.easing:this.palette&&this.palette.easing?t.easing=this.palette.easing:t.easing="linear",ut(e.precision)?t.precision=e.precision:this.palette&&ut(this.palette.precision)?t.precision=this.palette.precision:t.precision=0,e.colorSpace?t.colorSpace=e.colorSpace:this.palette?t.colorSpace=this.palette.getColorSpace():t.colorSpace="RGB",e.returnColorAs?t.returnColorAs=e.returnColorAs:this.palette?t.returnColorAs=this.palette.getReturnColorAs():t.returnColorAs="RGB",t},t.kill=function(){let t=this.name;return this.palette&&this.palette.kill&&this.palette.kill(),Object.entries(f).forEach((([e,i])=>{let s=i.state;if(s){let e=s.fillStyle,i=s.strokeStyle;rt(e)&&e.name===t&&(s.fillStyle=s.defs.fillStyle),rt(i)&&i.name===t&&(s.strokeStyle=s.defs.strokeStyle)}})),this.deregister(),this};let e=t.getters,i=t.setters,s=t.deltaSetters;return e.startX=function(){return this.currentStart[0]},e.startY=function(){return this.currentStart[1]},i.startX=function(t){null!=t&&(this.start[0]=t,this.dirtyStart=!0)},i.startY=function(t){null!=t&&(this.start[1]=t,this.dirtyStart=!0)},i.start=function(t,e){this.setCoordinateHelper("start",t,e),this.dirtyStart=!0},s.startX=function(t){let e=this.start;e[0]=G(e[0],t),this.dirtyStart=!0},s.startY=function(t){let e=this.start;e[1]=G(e[1],t),this.dirtyStart=!0},s.start=function(t,e){this.setDeltaCoordinateHelper("start",t,e),this.dirtyStart=!0},e.endX=function(){return this.currentEnd[0]},e.endY=function(){return this.currentEnd[1]},i.endX=function(t){null!=t&&(this.end[0]=t,this.dirtyEnd=!0)},i.endY=function(t){null!=t&&(this.end[1]=t,this.dirtyEnd=!0)},i.end=function(t,e){this.setCoordinateHelper("end",t,e),this.dirtyEnd=!0},s.endX=function(t){let e=this.end;e[0]=G(e[0],t),this.dirtyEnd=!0},s.endY=function(t){let e=this.end;e[1]=G(e[1],t),this.dirtyEnd=!0},s.end=function(t,e){this.setDeltaCoordinateHelper("end",t,e),this.dirtyEnd=!0},i.palette=function(t=q){"Palette"===t.type&&(this.palette=t)},i.paletteStart=function(t){t.toFixed&&(this.paletteStart=t,(t<0||t>999)&&(this.paletteStart=t>500?999:0))},s.paletteStart=function(t){let e;t.toFixed&&(e=this.paletteStart+t,(e<0||e>999)&&(e=this.cyclePalette?e>500?e-1e3:e+1e3:t>500?999:0),this.paletteStart=e)},i.paletteEnd=function(t){t.toFixed&&(this.paletteEnd=t,(t<0||t>999)&&(this.paletteEnd=t>500?999:0))},s.paletteEnd=function(t){let e;t.toFixed&&(e=this.paletteEnd+t,(e<0||e>999)&&(e=this.cyclePalette?e>500?e-1e3:e+1e3:t>500?999:0),this.paletteEnd=e)},i.colors=function(t){Array.isArray(t)&&this.palette&&this.palette.set({colors:t})},i.easing=function(t){this.palette&&this.palette.set({easing:t})},i.easingFunction=i.easing,i.colorSpace=function(t){this.palette&&this.palette.set({colorSpace:t})},i.returnColorAs=function(t){this.palette&&this.palette.set({returnColorAs:t})},i.precision=function(t){this.palette&&this.palette.set({precision:t})},i.delta=function(t=q){t&&(this.delta=lt(this.delta,t))},t.get=function(t){let e=this.getters[t];if(e)return e.call(this);{let e,i=this.defs[t],s=this.palette;return void 0!==i?(e=this[t],void 0!==e?e:i):(i=s.defs[t],void 0!==i?(e=s[t],void 0!==e?e:i):undef)}},t.set=function(t=q){let e=Object.keys(t),i=e.length;if(i){const s=this.setters,n=this.defs,r=this.palette;let o,a,l,h,c,u;for(r&&(o=r.setters||q,a=r.defs||q),h=0;h{R.forEach((t=>{const e=D[t];e&&e.animateByDelta&&e.updateByDelta()}))}});const ConicGradient=function(t=q){return this.stylesInit(t),this};let wn=ConicGradient.prototype=Object.create(Object.prototype);wn.type="ConicGradient",wn.lib="styles",wn.isArtefact=!1,wn.isAsset=!1,wn=me(wn),wn=Cn(wn);wn.defs=at(wn.defs,{angle:0}),wn.packetObjects=ht(wn.packetObjects,["palette"]),wn.buildStyle=function(t){if(t){let e=t.engine;if(e){if(!e.createConicGradient)return"rgb(0 0 0 / 0)";let t=e.createConicGradient(...this.gradientArgs);return this.addStopsToGradient(t,this.paletteStart,this.paletteEnd,this.cyclePalette)}}return"rgb(0 0 0 / 0)"},wn.updateGradientArgs=function(t,e){let i=this.gradientArgs,s=this.currentStart,n=this.angle*gt,r=s[0]+t,o=s[1]+e;i.length=0,i.push(n,r,o)};const Pn=function(t){return!!t&&new ConicGradient(t)};H.ConicGradient=ConicGradient;const Crescent=function(t=q){return pt(t.dimensions,t.width,t.height,t.radius)||(t.radius=5),this.entityInit(t),this};let Dn=Crescent.prototype=Object.create(Object.prototype);Dn.type="Crescent",Dn.lib="entity",Dn.isArtefact=!0,Dn.isAsset=!1,Dn=me(Dn),Dn=tn(Dn);Dn.defs=at(Dn.defs,{outerRadius:20,innerRadius:10,displacement:0,displayIntersect:!1}),Dn.getters;let Rn=Dn.setters,Fn=Dn.deltaSetters;Rn.outerRadius=function(t){null!=t&&(this.outerRadius=t,this.dirtyDimensions=!0,this.dirtyFilterIdentifier=!0)},Fn.outerRadius=function(t){null!=t&&(this.outerRadius=addStrings(this.outerRadius,t),this.dirtyDimensions=!0,this.dirtyFilterIdentifier=!0)},Rn.innerRadius=function(t){null!=t&&(this.innerRadius=t,this.dirtyDimensions=!0,this.dirtyFilterIdentifier=!0)},Fn.innerRadius=function(t){null!=t&&(this.innerRadius=addStrings(this.innerRadius,t),this.dirtyDimensions=!0,this.dirtyFilterIdentifier=!0)},Rn.width=Rn.outerRadius,Fn.width=Fn.outerRadius,Rn.height=Rn.innerRadius,Fn.height=Fn.innerRadius,Rn.displacement=function(t){if(null!=t&&t.toFixed&&t>=0){let e=t;e<0&&(e=0),this.displacement=e,this.dirtyDimensions=!0,this.dirtyFilterIdentifier=!0}},Fn.displacement=function(t){if(null!=t&&t.toFixed){let e=addStrings(this.displacement,t);e.toFixed&&e<0&&(e=0),this.displacement=e,this.dirtyDimensions=!0,this.dirtyFilterIdentifier=!0}},Rn.displayIntersect=function(t){this.displayIntersect=t,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},Dn.cleanDimensionsAdditionalActions=function(){const{outerRadius:t,innerRadius:e,displacement:i}=this;let s,n=this.getHost();s=n?n.currentDimensions?n.currentDimensions:[n.w,n.h]:[300,150];let[r,o]=s;this.currentOuterRadius=t.substring?parseFloat(t)/100*r:t,this.currentInnerRadius=e.substring?parseFloat(e)/100*o:e,this.currentDisplacement=i.substring?parseFloat(i)/100*r:i,this.currentDimensions[0]=this.currentDimensions[1]=2*this.currentOuterRadius,this.dirtyPathObject=!0},Dn.calculateInterception=function(){dt(this.currentOuterRadius,this.currentInnerRadius,this.currentDisplacement)||this.cleanDimensionsAdditionalActions();const{currentOuterRadius:t,currentInnerRadius:e,currentDisplacement:i}=this;this.outerCircleStart=0,this.outerCircleEnd=360*gt,this.innerCircleStart=0,this.innerCircleEnd=360*gt,this.drawOuterCircle=!1,this.drawDonut=!1;let s=t+e,n=t-e;if(!n&&!i)this.drawOuterCircle=!0;else if(i>=s)this.drawOuterCircle=!0;else if(in){let s,n,r=hi(),{engine:o,element:a}=r,l=fi();for(a.width=a.width,o.fillStyle="black",o.save(),o.beginPath(),o.arc(0,0,t,0,2*Math.PI),l.setFromArray([e,0]),s=0;s<360&&(l.rotate(.5),!o.isPointInPath(l[0]+i,l[1]));s+=.5);for(o.restore(),o.save(),o.beginPath(),o.arc(i,0,e,0,2*Math.PI),l.setFromArray([t,0]),n=0;n<360&&(l.rotate(.5),o.isPointInPath(...l));n+=.5);o.restore(),this.outerCircleStart=-n*gt,this.outerCircleEnd=n*gt,this.innerCircleStart=s*gt,this.innerCircleEnd=-s*gt,pi(l),ci(r)}else this.drawDonut=!0},Dn.cleanPathObject=function(){if(this.dirtyPathObject=!1,!this.noPathUpdates||!this.pathObject){this.calculateInterception();let{currentStampHandlePosition:t,currentScale:e,currentOuterRadius:i,currentInnerRadius:s,outerCircleStart:n,outerCircleEnd:r,innerCircleStart:o,innerCircleEnd:a,drawOuterCircle:l,currentDisplacement:h,displayIntersect:c}=this,u=this.pathObject=new Path2D;i*=e,s*=e,h*=e;let d=i-t[0]*e,f=i-t[1]*e;if(l)u.arc(d,f,i,n,r),u.closePath(),this.pathObjectOuter=!1,this.pathObjectInner=!1;else{let t=this.pathObjectOuter=new Path2D,e=this.pathObjectInner=new Path2D;c?u.arc(d,f,i,n,r):u.arc(d,f,i,n,r,!0),u.arc(d+h,f,s,o,a),u.closePath(),t.arc(d,f,i,n,r,!0),t.closePath(),e.arc(d+h,f,s,o,a),e.closePath()}}},Dn.draw=function(t){this.drawDonut?(t.stroke(this.pathObjectOuter),t.stroke(this.pathObjectInner)):t.stroke(this.pathObject)},Dn.fill=function(t){t.fill(this.pathObject,this.winding)},Dn.drawAndFill=function(t){if(this.drawDonut){let e=this.pathObject,i=this.pathObjectOuter,s=this.pathObjectInner;t.stroke(i),t.stroke(s),t.fill(e,this.winding),this.currentHost.clearShadow(),t.stroke(i),t.stroke(s),t.fill(e,this.winding)}else{let e=this.pathObject;t.stroke(e),t.fill(e,this.winding),this.currentHost.clearShadow(),t.stroke(e),t.fill(e,this.winding)}},Dn.fillAndDraw=function(t){if(this.drawDonut){let e=this.pathObject,i=this.pathObjectOuter,s=this.pathObjectInner;t.fill(e,this.winding),t.stroke(i),t.stroke(s),this.currentHost.clearShadow(),t.fill(e,this.winding),t.stroke(i),t.stroke(s)}else{let e=this.pathObject;t.fill(e,this.winding),t.stroke(e),this.currentHost.clearShadow(),t.fill(e,this.winding),t.stroke(e)}},Dn.drawThenFill=function(t){if(this.drawDonut){let e=this.pathObject,i=this.pathObjectOuter,s=this.pathObjectInner;t.stroke(i),t.stroke(s),t.fill(e,this.winding)}else{let e=this.pathObject;t.stroke(e),t.fill(e,this.winding)}},Dn.fillThenDraw=function(t){if(this.drawDonut){let e=this.pathObject,i=this.pathObjectOuter,s=this.pathObjectInner;t.fill(e,this.winding),t.stroke(i),t.stroke(s)}else{let e=this.pathObject;t.fill(e,this.winding),t.stroke(e)}},Dn.clip=function(t){t.clip(this.pathObject,this.winding)},Dn.clear=function(t){let e=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",t.fill(this.pathObject,this.winding),t.globalCompositeOperation=e};const En=function(t){return!!t&&new Crescent(t)};H.Crescent=Crescent;const Mn={},Hn=function(t=q){const e=(t=q)=>{if(t&&t.target){let e=t.target,s="";for(;!s&&(Mn[e.id]&&(s=e.id),"BODY"!==e.tagName);)e=e.parentElement;const r=Mn[s];if(r)for(let e=0,s=r.length;e{i(t)};let n=Z;const r=(t=q)=>{n(t),i=Z,n=Z},o=function(t=q,e,i){let{zone:s,coordinateSource:n,collisionGroup:r,startOn:o,endOn:a,updateOnStart:l,updateOnEnd:h,updateWhileMoving:c,updateOnShiftStart:u,updateOnShiftEnd:d,updateWhileShiftMoving:f,updateOnPrematureExit:p,exposeCurrentArtefact:m,preventTouchDefaultWhenDragging:y,resetCoordsToZeroOnTouchEnd:b,processingOrder:S}=t;if(!s)return new Error("dragZone constructor - no zone supplied");if(s.substring&&(s=artefact[s]),!s||["Canvas","Stack"].indexOf(s.type)<0)return new Error("dragZone constructor - zone object is not a Stack or Canvas wrapper");let k=s.domElement;if(!k)return new Error("dragZone constructor - zone does not contain a target DOM element");if(r?r.substring&&(r=g[r]):r="Canvas"===s.type?g[s.base.name]:g[s.name],!r||"Group"!==r.type)return new Error("dragZone constructor - unable to recover collisionGroup group");if(n?n.here?n=n.here:dt(n.x,n.y)||(n=!1):n="Canvas"===s.type?s.base.here:s.here,!n)return new Error("dragZone constructor - unable to discover a usable coordinateSource object");Array.isArray(o)||(o=["down"]),Array.isArray(a)||(a=["up"]),null==m&&(m=!1),null==y&&(y=!1),null==b&&(b=!0),rt(l)&&(l=function(){A.artefact.set(t.updateOnStart)}),st(l)||(l=Z),rt(u)&&(u=function(){A.artefact.set(t.updateOnShiftStart)}),st(u)||(u=l),rt(h)&&(h=function(){A.artefact.set(t.updateOnEnd)}),st(h)||(h=Z),rt(d)&&(d=function(){A.artefact.set(t.updateOnShiftEnd)}),st(d)||(d=h),st(c)||(c=Z),st(f)||(f=c),st(p)||(p=Z),tt(m)||(m=!1),null==S&&(S=0);let A=!1;const O=function(t){t&&t.cancelable&&(y&&A?(t.preventDefault(),t.returnValue=!1):y||(t.preventDefault(),t.returnValue=!1))},v=function(t=q){A&&(O(t),"touchmove"===t.type&&touchAction(t),t.shiftKey?f(t):c(t))},x=function(t=q){A&&(O(t),"touchend"===t.type&&touchAction(t,b),A.artefact.dropArtefact(),t.shiftKey?d(t):h(t),A=!1)};Mn[s.name]||(Mn[s.name]=[],e(o,a,k));const C=function(){const t=`${s.name}_${r.name}_${S}`;Mn[s.name]=Mn[s.name].filter((e=>e.name!==t)),Mn[s.name].length||(i(o,a,k),delete Mn[s.name])},w=function(t){if(!t)return A;"exit"===t||"drop"===t?(x(),p()):C()},P={name:`${s.name}_${r.name}_${S}`,exposeCurrentArtefact:m,target:k,processingOrder:S,pickup:function(t=q){O(t);let e=t.type;return"touchstart"!==e&&"touchcancel"!==e||touchAction(t,b),A=r.getArtefactAt(n),A&&(A.artefact.pickupArtefact(n),t.shiftKey?u(t):l(t)),{current:A,move:v,drop:x}},move:v,drop:x,kill:C,getCurrent:w};return Mn[s.name].push(P),Mn[s.name].sort(((t,e)=>t.processingOrder-e.processingOrder)),{exposeCurrentArtefact:m,getCurrent:w,kill:C,zone:s}}(t,((t,i,n)=>{xt(t,e,n),xt("move",s,n),xt(i,r,n)}),((t,i,n)=>{Ct(t,e,n),Ct("move",s,n),Ct(i,r,n)}));return o.exposeCurrentArtefact?o.getCurrent:o.kill},ParticleHistory=function(t){let e=[];return Object.setPrototypeOf(e,ParticleHistory.prototype),t&&e.set(t),e};let In=ParticleHistory.prototype=Object.create(Array.prototype);In.constructor=ParticleHistory,In.type="ParticleHistory";const Bn=[],Tn=function(t){t&&"ParticleHistory"===t.type&&(t.length=0,Bn.push(t),Bn.length>100&&(Bn.length=0))};H.ParticleHistory=ParticleHistory;const Particle=function(t=q){return this.makeName(t.name),this.register(),this.set(this.defs),this.initializePositions(),this.set(t),this};let Ln=Particle.prototype=Object.create(Object.prototype);Ln.type="Particle",Ln.lib="particle",Ln.isArtefact=!1,Ln.isAsset=!1,Ln=me(Ln);Ln.defs=at(Ln.defs,{position:null,velocity:null,load:null,history:null,historyLength:1,engine:"euler",forces:null,mass:1,fill:"#000000",stroke:"#000000"}),Ln.packetExclusions=ht(Ln.packetExclusions,[]),Ln.packetExclusionsByRegex=ht(Ln.packetExclusionsByRegex,["^(local|dirty|current)"]),Ln.packetCoordinates=ht(Ln.packetCoordinates,[]),Ln.packetObjects=ht(Ln.packetObjects,["position","velocity","acceleration"]),Ln.packetFunctions=ht(Ln.packetFunctions,[]),Ln.factoryKill=function(){this.history.forEach((t=>Tn(t)));O.forEach((t=>{let e=A[t];e.particleFrom&&e.particleFrom.name===this.name||e.particleTo&&(e.particleTo.name,this.name)})),[].forEach((t=>t.kill()))};let $n=Ln.getters,jn=Ln.setters,Xn=Ln.deltaSetters;$n.positionX=function(){return this.position.x},$n.positionY=function(){return this.position.y},$n.positionZ=function(){return this.position.z},$n.position=function(){let t=this.position;return[t.x,t.y,t.z]},jn.positionX=function(t){this.position.x=t},jn.positionY=function(t){this.position.y=t},jn.positionZ=function(t){this.position.z=t},jn.position=function(t){this.position.set(t)},Xn.positionX=function(t){this.position.x+=t},Xn.positionY=function(t){this.position.y+=t},Xn.positionZ=function(t){this.position.z+=t},Xn.position=Z,$n.velocityX=function(){return this.velocity.x},$n.velocityY=function(){return this.velocity.y},$n.velocityZ=function(){return this.velocity.z},$n.velocity=function(){let t=this.velocity;return[t.x,t.y,t.z]},jn.velocityX=function(t){this.velocity.x=t},jn.velocityY=function(t){this.velocity.y=t},jn.velocityZ=function(t){this.velocity.z=t},jn.velocity=function(t,e,i){this.velocity.set(t,e,i)},Xn.velocityX=function(t){this.velocity.x+=t},Xn.velocityY=function(t){this.velocity.y+=t},Xn.velocityZ=function(t){this.velocity.z+=t},Xn.velocity=Z,jn.forces=function(t){t&&(Array.isArray(t)?(this.forces.length=0,this.forces=this.forces.concat(t)):this.forces.push(t))},jn.load=Z,jn.history=Z,Xn.load=Z,Ln.initializePositions=function(){this.initialPosition=ns(),this.position=ns(),this.velocity=ns(),this.load=ns(),this.forces=[],this.history=[],this.isRunning=!1},Ln.applyForces=function(t,e){this.load.zero(),this.isBeingDragged||this.forces.forEach((i=>{let s=S[i];s&&s.action&&s.action(this,t,e)}))},Ln.update=function(t,e){this.isBeingDragged?this.position.setFromVector(this.isBeingDragged).vectorAdd(this.dragOffset):Wn[this.engine].call(this,t*e.tickMultiplier)},Ln.manageHistory=function(t,e){let{history:i,remainingTime:s,position:n,historyLength:r,hasLifetime:o,distanceLimit:a,initialPosition:l,killBeyondCanvas:h}=this,c=!0,u=0;if(o)if(u=s-t,u<=0){let t=i.pop();Tn(t),c=!1,i.length||(this.isRunning=!1)}else this.remainingTime=u;let d=i[i.length-1];if(d){let[t,i,s,n]=d;if(h){let t=e.element.width,i=e.element.height;(s<0||n<0||s>t||n>i)&&(c=!1,this.isRunning=!1)}if(a){let t=is(l);t.vectorSubtractArray([s,n,i]),t.getMagnitude()>a&&(c=!1,this.isRunning=!1),ss(t)}}if(c){let{x:t,y:e,z:s}=n,o=(Bn.length||Bn.push(new ParticleHistory),Bn.shift());if(o.push(u,s,t,e),i.unshift(o),i.length>r){i.splice(r).forEach((t=>Tn(t)))}}},Ln.run=function(t,e,i){this.hasLifetime=!1,t&&(this.remainingTime=t,this.hasLifetime=!0),this.distanceLimit=0,e&&(this.initialPosition.set(this.position),this.distanceLimit=e),this.killBeyondCanvas=i,this.isRunning=!0};const Yn=function(t){return!!t&&new Particle(t)};H.Particle=Particle;const Nn=[],Gn=function(t){Nn.length||Nn.push(new Particle);let e=Nn.shift();return e.set(t),e},zn=function(t){if(t&&"Particle"===t.type&&(t.history.forEach((t=>Tn(t))),t.history.length=0,t.set(t.defs),Nn.push(t),Nn.length>50)){let t=[].concat(Nn);Nn.length=0,t.forEach((t=>t.kill()))}},Wn={euler:function(t){let{position:e,velocity:i,load:s,mass:n}=this,r=is(),o=is(i);r.setFromVector(s).scalarDivide(n),o.vectorAdd(r.scalarMultiply(t)),i.setFromVector(o),e.vectorAdd(o.scalarMultiply(t)),ss(r)},"improved-euler":function(t){let{position:e,velocity:i,load:s,mass:n}=this,r=is(),o=is(),a=is(),l=is(i);r.setFromVector(s).scalarDivide(n).scalarMultiply(t),o.setFromVector(s).vectorAdd(r).scalarDivide(n).scalarMultiply(t),a.setFromVector(r).vectorAdd(o).scalarDivide(2),l.vectorAdd(a),i.setFromVector(l),e.vectorAdd(l.scalarMultiply(t)),ss(r)},"runge-kutta":function(t){let{position:e,velocity:i,load:s,mass:n}=this,r=is(),o=is(),a=is(),l=is(),h=is(),c=is(i);r.setFromVector(s).scalarDivide(n).scalarMultiply(t).scalarDivide(2),o.setFromVector(s).vectorAdd(r).scalarDivide(n).scalarMultiply(t).scalarDivide(2),a.setFromVector(s).vectorAdd(o).scalarDivide(n).scalarMultiply(t).scalarDivide(2),l.setFromVector(s).vectorAdd(a).scalarDivide(n).scalarMultiply(t).scalarDivide(2),o.scalarMultiply(2),a.scalarMultiply(2),h.setFromVector(r).vectorAdd(o).vectorAdd(a).vectorAdd(l).scalarDivide(6),c.vectorAdd(h),i.setFromVector(c),e.vectorAdd(c.scalarMultiply(t)),ss(r)}},Emitter=function(t=q){return this.makeName(t.name),this.register(),this.initializePositions(),this.set(this.defs),this.onEnter=Z,this.onLeave=Z,this.onDown=Z,this.onUp=Z,this.fillColorFactory=Ue({name:`${this.name}-fillColorFactory`}),this.strokeColorFactory=Ue({name:`${this.name}-strokeColorFactory`}),this.range=ns(),this.rangeFrom=ns(),this.preAction=Z,this.stampAction=Z,this.postAction=Z,this.particleStore=[],this.deadParticles=[],this.liveParticles=[],t.group||(t.group=ks),this.set(t),this.purge&&this.purgeArtefact(this.purge),this};let Vn=Emitter.prototype=Object.create(Object.prototype);Vn.type="Emitter",Vn.lib="entity",Vn.isArtefact=!0,Vn.isAsset=!1,Vn=me(Vn),Vn=tn(Vn);Vn.defs=at(Vn.defs,{world:null,artefact:null,range:null,rangeFrom:null,generationRate:0,particleCount:0,generateAlongPath:null,generateInArea:null,generateFromExistingParticles:!1,generateFromExistingParticleHistories:!1,limitDirectionToAngleMultiples:0,generationChoke:15,killAfterTime:0,killAfterTimeVariation:0,killRadius:0,killRadiusVariation:0,killBeyondCanvas:!1,historyLength:1,forces:null,mass:1,massVariation:0,engine:"euler",hitRadius:10,showHitRadius:!1,hitRadiusColor:"#000000",resetAfterBlur:3}),Vn.packetExclusions=ht(Vn.packetExclusions,["forces","particleStore","deadParticles","liveParticles","fillColorFactory","strokeColorFactory"]),Vn.packetExclusionsByRegex=ht(Vn.packetExclusionsByRegex,[]),Vn.packetCoordinates=ht(Vn.packetCoordinates,[]),Vn.packetObjects=ht(Vn.packetObjects,["world","artefact","generateInArea","generateAlongPath"]),Vn.packetFunctions=ht(Vn.packetFunctions,["preAction","stampAction","postAction"]),Vn.finalizePacketOut=function(t,e){let i=e.forces||this.forces||!1;if(i){let e=[];i.forEach((t=>{t.substring?e.push(t):rt(t)&&t.name&&e.push(t.name)})),t.forces=e}let s=[];return this.particleStore.forEach((t=>s.push(t.saveAsPacket()))),t.particleStore=s,t},Vn.postCloneAction=function(t,e){return t},Vn.factoryKill=function(t,e){this.isRunning=!1,t&&this.artefact.kill(),e&&this.world.kill(),this.fillColorFactory.kill(),this.strokeColorFactory.kill(),this.deadParticles.forEach((t=>t.kill())),this.liveParticles.forEach((t=>t.kill())),this.particleStore.forEach((t=>t.kill()))},Vn.getters;let Zn=Vn.setters,_n=Vn.deltaSetters;Zn.rangeX=function(t){this.range.x=t},Zn.rangeY=function(t){this.range.y=t},Zn.rangeZ=function(t){this.range.z=t},Zn.range=function(t){this.range.set(t)},Zn.rangeFromX=function(t){this.rangeFrom.x=t},Zn.rangeFromY=function(t){this.rangeFrom.y=t},Zn.rangeFromZ=function(t){this.rangeFrom.z=t},Zn.rangeFrom=function(t){this.rangeFrom.set(t)},Zn.preAction=function(t){st(t)&&(this.preAction=t,this.dirtyFilterIdentifier=!0)},Zn.stampAction=function(t){st(t)&&(this.stampAction=t,this.dirtyFilterIdentifier=!0)},Zn.postAction=function(t){st(t)&&(this.postAction=t,this.dirtyFilterIdentifier=!0)},Zn.world=function(t){let e;t.substring?e=v[t]:rt(t)&&"World"===t.type&&(e=t),e&&(this.world=e)},Zn.artefact=function(t){let e;t.substring?e=o[t]:rt(t)&&t.isArtefact&&(e=t),e&&(this.artefact=e,this.dirtyFilterIdentifier=!0)},Zn.generateAlongPath=function(t){let e;t.substring?e=o[t]:rt(t)&&t.isArtefact&&(e=t),e&&e.useAsPath?this.generateAlongPath=e:this.generateAlongPath=!1,this.dirtyFilterIdentifier=!0},Zn.generateInArea=function(t){let e;t.substring?e=o[t]:rt(t)&&t.isArtefact&&(e=t),this.generateInArea=e||!1,this.dirtyFilterIdentifier=!0},Zn.fillColor=function(t){this.fillColorFactory.set({color:t}),this.dirtyFilterIdentifier=!0},Zn.fillMinimumColor=function(t){this.fillColorFactory.set({minimumColor:t}),this.dirtyFilterIdentifier=!0},Zn.fillMaximumColor=function(t){this.fillColorFactory.set({maximumColor:t}),this.dirtyFilterIdentifier=!0},Zn.strokeColor=function(t){this.strokeColorFactory.set({color:t}),this.dirtyFilterIdentifier=!0},Zn.strokeMinimumColor=function(t){this.strokeColorFactory.set({minimumColor:t}),this.dirtyFilterIdentifier=!0},Zn.strokeMaximumColor=function(t){this.strokeColorFactory.set({maximumColor:t}),this.dirtyFilterIdentifier=!0},Zn.hitRadius=function(t){t.toFixed&&(this.hitRadius=t,this.width=this.height=2*t)},_n.hitRadius=function(t){t.toFixed&&(this.hitRadius+=t,this.width=this.height=2*this.hitRadius)},Zn.width=function(t){t.toFixed&&(this.hitRadius=t/2,this.width=this.height=t)},_n.width=function(t){t.toFixed&&(this.hitRadius=t/2,this.width=this.height=t)},Zn.height=Zn.width,_n.height=_n.width,Vn.prepareStamp=function(){this.dirtyHost&&(this.dirtyHost=!1,this.dirtyDimensions=!0),(this.dirtyScale||this.dirtyDimensions||this.dirtyStart||this.dirtyOffset||this.dirtyHandle)&&(this.dirtyPathObject=!0),this.dirtyScale&&this.cleanScale(),this.dirtyDimensions&&this.cleanDimensions(),this.dirtyLock&&this.cleanLock(),this.dirtyStart&&this.cleanStart(),this.dirtyOffset&&this.cleanOffset(),this.dirtyHandle&&this.cleanHandle(),this.dirtyRotation&&this.cleanRotation(),(this.lockTo.indexOf("mouse")>=0||this.lockTo.indexOf("particle")>=0)&&(this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtyStampHandlePositions&&this.cleanStampHandlePositions();let t=Date.now(),{particleStore:e,deadParticles:i,liveParticles:s,particleCount:n,generationRate:r,generatorChoke:o,resetAfterBlur:a}=this;o||(this.generatorChoke=o=t),e.forEach((t=>{t.isRunning?s.push(t):i.push(t)})),e.length=0,i.forEach((t=>zn(t))),i.length=0,e.push(...s),s.length=0;let l=t-o;if(l/1e3>a&&(l=0,this.generatorChoke=t),l>0&&r){let i=Math.floor(r/1e3*l);if(n){let t=n-e.length;t<=0?i=0:tD.isPointInPath(F,...t,$);w.rotateDestination(D,o,a,P);t:for(n=0;n1?([l,g,...y]=a[Math.floor(Math.random()*a.length)],y?P.setFromArray(y):P.setFromVector(o.position)):P.setFromVector(o.position)):P.setFromArray(b),r=Gn(),r.set({positionX:P.x,positionY:P.y,positionZ:P.z,historyLength:h,engine:c,forces:u,mass:i(d,f),fill:p.getRangeColor(Math.random()),stroke:m.getRangeColor(Math.random())}),F?(P.zero(),e=Math.floor(360/F),P.x=s(B,M),P.rotate(Math.floor(Math.random()*e)*F),r.set({velocityX:P.x,velocityY:P.y,velocityZ:s(L,I)})):r.set({velocityX:s(B,M),velocityY:s(T,H),velocityZ:s(L,I)}),ss(P),r.velocity.rotate(C);let t=Math.abs(i(k,A)),n=Math.abs(i(O,v));r.run(t,n,x),S.push(r)}}else if(D){let e,o,a=S.length,l=is();for(n=0;na&&(i.forEach((t=>zn(t))),i.length=0,f=.016),i.forEach((e=>e.applyForces(t,d))),i.forEach((e=>e.update(f,t))),s.call(this,d),i.forEach((t=>{t.manageHistory(f,d),n.call(this,e,t,d)})),r.call(this,d),l){const t=d.engine;t.save(),t.lineWidth=1,t.strokeStyle=c,t.setTransform(1,0,0,1,0,0),t.beginPath(),t.arc(u[0],u[1],h,0,2*Math.PI),t.stroke(),t.restore()}this.lastUpdated=p},Vn.checkHit=function(t=[],e){if(this.noUserInteraction)return!1;let i,s,n=Array.isArray(t)?t:[t],r=this.currentStampPosition,o=!1;if(n.some((t=>{if(Array.isArray(t))i=t[0],s=t[1];else{if(!dt(t,t.x,t.y))return!1;i=t.x,s=t.y}if(!i.toFixed||!s.toFixed||isNaN(i)||isNaN(s))return!1;let e=is(r).vectorSubtract(t);return e.getMagnitude(){let s=i.filters;s&&s.indexOf(t)>=0&&ct(s,t)})),Object.entries(g).forEach((([e,i])=>{let s=i.filters;s&&s.indexOf(t)>=0&&ct(s,t)})),Object.entries(u).forEach((([e,i])=>{let s=i.filters;s&&s.indexOf(t)>=0&&ct(s,t)})),this.deregister(),this};let Jn=Qn.setters;Qn.deltaSetters,Qn.set=function(t=q){const e=Object.keys(t),i=e.length;if(i){const s=this.setters,n=this.defs;let r,o,a,l;for(o=0;o{6===t.length?e.push(t):2===t.length&&(t[0].substring&&t[1].substring&&(i.length=0,t.forEach((t=>{let[e,s,n]=yi.extractRGBfromColor(t);i.push(e,s,n)}))),e.push(i))})),t.actions=[{action:"chroma",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,ranges:e}]},chromakey:function(t){let e=null!=t.red?t.red:0,i=null!=t.green?t.green:255,s=null!=t.blue?t.blue:0;null!=t.reference&&([e,i,s]=yi.extractRGBfromColor(t.reference),t.red=e,t.green=i,t.blue=s,delete t.reference),t.actions=[{action:"colors-to-alpha",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,red:e,green:i,blue:s,transparentAt:null!=t.transparentAt?t.transparentAt:0,opaqueAt:null!=t.opaqueAt?t.opaqueAt:1}]},clampChannels:function(t){let e=null!=t.lowRed?t.lowRed:0,i=null!=t.lowGreen?t.lowGreen:0,s=null!=t.lowBlue?t.lowBlue:0,n=null!=t.highRed?t.highRed:255,r=null!=t.highGreen?t.highGreen:255,o=null!=t.highBlue?t.highBlue:255;null!=t.lowColor&&([e,i,s]=yi.extractRGBfromColor(t.lowColor),t.lowRed=e,t.lowGreen=i,t.lowBlue=s,delete t.lowColor),null!=t.highColor&&([n,r,o]=yi.extractRGBfromColor(t.highColor),t.highRed=n,t.highGreen=r,t.highBlue=o,delete t.highColor),t.actions=[{action:"clamp-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,lowRed:e,lowGreen:i,lowBlue:s,highRed:n,highGreen:r,highBlue:o}]},compose:function(t){t.actions=[{action:"compose",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",lineMix:null!=t.lineMix?t.lineMix:"",compose:null!=t.compose?t.compose:"source-over",offsetX:null!=t.offsetX?t.offsetX:0,offsetY:null!=t.offsetY?t.offsetY:0,opacity:null!=t.opacity?t.opacity:1}]},corrode:function(t){t.actions=[{action:"corrode",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",width:null!=t.width?t.width:3,height:null!=t.height?t.height:3,offsetX:null!=t.offsetX?t.offsetX:1,offsetY:null!=t.offsetY?t.offsetY:1,includeRed:null!=t.includeRed&&t.includeRed,includeGreen:null!=t.includeGreen&&t.includeGreen,includeBlue:null!=t.includeBlue&&t.includeBlue,includeAlpha:null==t.includeAlpha||t.includeAlpha,operation:null!=t.operation?t.operation:"mean",opacity:null!=t.opacity?t.opacity:1}]},curveWeights:function(t){t.actions=[{action:"vary-channels-by-weights",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,weights:null!=t.weights&&t.weights,useMixedChannel:null==t.useMixedChannel||t.useMixedChannel}]},cyan:function(t){t.actions=[{action:"average-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,includeGreen:!0,includeBlue:!0,excludeRed:!0}]},displace:function(t){t.actions=[{action:"displace",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",lineMix:null!=t.lineMix?t.lineMix:"",opacity:null!=t.opacity?t.opacity:1,channelX:null!=t.channelX?t.channelX:"red",channelY:null!=t.channelY?t.channelY:"green",offsetX:null!=t.offsetX?t.offsetX:0,offsetY:null!=t.offsetY?t.offsetY:0,scaleX:null!=t.scaleX?t.scaleX:1,scaleY:null!=t.scaleY?t.scaleY:1,transparentEdges:null!=t.transparentEdges&&t.transparentEdges}]},edgeDetect:function(t){t.actions=[{action:"matrix",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,width:3,height:3,offsetX:1,offsetY:1,includeRed:!0,includeGreen:!0,includeBlue:!0,includeAlpha:!1,weights:[0,1,0,1,-4,1,0,1,0]}]},emboss:function(t){const e=[];t.useNaturalGrayscale?e.push({action:"grayscale",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:"emboss-work"}):e.push({action:"average-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:"emboss-work",includeRed:!0,includeGreen:!0,includeBlue:!0}),t.clamp&&e.push({action:"clamp-channels",lineIn:"emboss-work",lineOut:"emboss-work",lowRed:0+t.clamp,lowGreen:0+t.clamp,lowBlue:0+t.clamp,highRed:255-t.clamp,highGreen:255-t.clamp,highBlue:255-t.clamp}),t.smoothing&&e.push({action:"gaussian-blur",lineIn:"emboss-work",lineOut:"emboss-work",radius:t.smoothing}),e.push({action:"emboss",lineIn:"emboss-work",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,angle:null!=t.angle?t.angle:0,strength:null!=t.strength?t.strength:1,tolerance:null!=t.tolerance?t.tolerance:0,keepOnlyChangedAreas:null!=t.keepOnlyChangedAreas&&t.keepOnlyChangedAreas,postProcessResults:null==t.postProcessResults||t.postProcessResults}),t.actions=e},flood:function(t){let e=null!=t.red?t.red:0,i=null!=t.green?t.green:0,s=null!=t.blue?t.blue:0,n=null!=t.alpha?t.alpha:255,r=null!=t.excludeAlpha&&t.excludeAlpha;null!=t.reference&&([e,i,s,n]=yi.extractRGBfromColor(t.reference),n=Math.round(255*n),t.red=e,t.green=i,t.blue=s,t.alpha=n,delete t.reference),t.actions=[{action:"flood",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,red:e,green:i,blue:s,alpha:n,excludeAlpha:r}]},gaussianBlur:function(t){t.actions=[{action:"gaussian-blur",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,radius:null!=t.radius?t.radius:1}]},glitch:function(t){t.actions=[{action:"glitch",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,useMixedChannel:null==t.useMixedChannel||t.useMixedChannel,seed:null!=t.seed?t.seed:"some-random-string-or-other",step:null!=t.step?t.step:1,offsetMin:null!=t.offsetMin?t.offsetMin:0,offsetMax:null!=t.offsetMax?t.offsetMax:0,offsetRedMin:null!=t.offsetRedMin?t.offsetRedMin:0,offsetRedMax:null!=t.offsetRedMax?t.offsetRedMax:0,offsetGreenMin:null!=t.offsetGreenMin?t.offsetGreenMin:0,offsetGreenMax:null!=t.offsetGreenMax?t.offsetGreenMax:0,offsetBlueMin:null!=t.offsetBlueMin?t.offsetBlueMin:0,offsetBlueMax:null!=t.offsetBlueMax?t.offsetBlueMax:0,offsetAlphaMin:null!=t.offsetAlphaMin?t.offsetAlphaMin:0,offsetAlphaMax:null!=t.offsetAlphaMax?t.offsetAlphaMax:0,transparentEdges:null!=t.transparentEdges&&t.transparentEdges,level:null!=t.level?t.level:0}]},gray:function(t){t.actions=[{action:"average-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,includeRed:!0,includeGreen:!0,includeBlue:!0}]},grayscale:function(t){t.actions=[{action:"grayscale",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1}]},green:function(t){t.actions=[{action:"average-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,excludeRed:!0,excludeBlue:!0}]},image:function(t){t.actions=[{action:"process-image",lineOut:null!=t.lineOut?t.lineOut:"",asset:null!=t.asset?t.asset:"",width:null!=t.width?t.width:1,height:null!=t.height?t.height:1,copyWidth:null!=t.copyWidth?t.copyWidth:1,copyHeight:null!=t.copyHeight?t.copyHeight:1,copyX:null!=t.copyX?t.copyX:0,copyY:null!=t.copyY?t.copyY:0}]},invert:function(t){t.actions=[{action:"invert-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,includeRed:!0,includeGreen:!0,includeBlue:!0}]},magenta:function(t){t.actions=[{action:"average-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,includeRed:!0,includeBlue:!0,excludeGreen:!0}]},mapToGradient:function(t){t.gradient&&t.gradient.substring&&(t.gradient=D[t.gradient]),t.actions=[{action:"map-to-gradient",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,useNaturalGrayscale:null!=t.useNaturalGrayscale&&t.useNaturalGrayscale,gradient:t.gradient||qn()}]},matrix:function(t){t.actions=[{action:"matrix",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,width:3,height:3,offsetX:1,offsetY:1,includeRed:null==t.includeRed||t.includeRed,includeGreen:null==t.includeGreen||t.includeGreen,includeBlue:null==t.includeBlue||t.includeBlue,includeAlpha:null!=t.includeAlpha&&t.includeAlpha,weights:null!=t.weights?t.weights:[0,0,0,0,1,0,0,0,0]}]},matrix5:function(t){t.actions=[{action:"matrix",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,width:5,height:5,offsetX:2,offsetY:2,includeRed:null==t.includeRed||t.includeRed,includeGreen:null==t.includeGreen||t.includeGreen,includeBlue:null==t.includeBlue||t.includeBlue,includeAlpha:null!=t.includeAlpha&&t.includeAlpha,weights:null!=t.weights?t.weights:[0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0]}]},newsprint:function(t){t.actions=[{action:"newsprint",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,width:null!=t.width?t.width:1}]},notblue:function(t){t.actions=[{action:"set-channel-to-level",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,includeBlue:!0,level:0}]},notgreen:function(t){t.actions=[{action:"set-channel-to-level",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,includeGreen:!0,level:0}]},notred:function(t){t.actions=[{action:"set-channel-to-level",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,includeRed:!0,level:0}]},offset:function(t){t.actions=[{action:"offset",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,offsetRedX:null!=t.offsetX?t.offsetX:0,offsetRedY:null!=t.offsetY?t.offsetY:0,offsetGreenX:null!=t.offsetX?t.offsetX:0,offsetGreenY:null!=t.offsetY?t.offsetY:0,offsetBlueX:null!=t.offsetX?t.offsetX:0,offsetBlueY:null!=t.offsetY?t.offsetY:0,offsetAlphaX:null!=t.offsetX?t.offsetX:0,offsetAlphaY:null!=t.offsetY?t.offsetY:0}]},offsetChannels:function(t){t.actions=[{action:"offset",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,offsetRedX:null!=t.offsetRedX?t.offsetRedX:0,offsetRedY:null!=t.offsetRedY?t.offsetRedY:0,offsetGreenX:null!=t.offsetGreenX?t.offsetGreenX:0,offsetGreenY:null!=t.offsetGreenY?t.offsetGreenY:0,offsetBlueX:null!=t.offsetBlueX?t.offsetBlueX:0,offsetBlueY:null!=t.offsetBlueY?t.offsetBlueY:0,offsetAlphaX:null!=t.offsetAlphaX?t.offsetAlphaX:0,offsetAlphaY:null!=t.offsetAlphaY?t.offsetAlphaY:0}]},pixelate:function(t){t.actions=[{action:"pixelate",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,tileWidth:null!=t.tileWidth?t.tileWidth:1,tileHeight:null!=t.tileHeight?t.tileHeight:1,offsetX:null!=t.offsetX?t.offsetX:0,offsetY:null!=t.offsetY?t.offsetY:0,includeRed:null==t.includeRed||t.includeRed,includeGreen:null==t.includeGreen||t.includeGreen,includeBlue:null==t.includeBlue||t.includeBlue,includeAlpha:null!=t.includeAlpha&&t.includeAlpha}]},randomNoise:function(t){const e=["random","ordered","bluenoise"].includes(t.noiseType)?t.noiseType:"random";t.actions=[{action:"random-noise",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,width:null!=t.width?t.width:1,height:null!=t.height?t.height:1,seed:null!=t.seed?t.seed:"some-random-string-or-other",noiseType:e,level:null!=t.level?t.level:0,noWrap:null!=t.noWrap&&t.noWrap,includeRed:null==t.includeRed||t.includeRed,includeGreen:null==t.includeGreen||t.includeGreen,includeBlue:null==t.includeBlue||t.includeBlue,includeAlpha:null==t.includeAlpha||t.includeAlpha,excludeTransparentPixels:null==t.excludeTransparentPixels||t.excludeTransparentPixels}]},red:function(t){t.actions=[{action:"average-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,excludeGreen:!0,excludeBlue:!0}]},reducePalette:function(t){let e=null!=t.palette?t.palette:"black-white";t.actions=[],e.substring&&e.includes(",")&&(e=e.split(","),e.forEach((t=>t.trim())));let i=t.useBluenoise?"bluenoise":t.noiseType||"random";["random","ordered","bluenoise"].includes(i)||(i="random"),t.actions.push({action:"reduce-palette",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",seed:null!=t.seed?t.seed:"some-random-string-or-other",minimumColorDistance:null!=t.minimumColorDistance?t.minimumColorDistance:1e3,useLabForPaletteDistance:null!=t.useLabForPaletteDistance&&t.useLabForPaletteDistance,palette:e,noiseType:i,opacity:null!=t.opacity?t.opacity:1})},saturation:function(t){let e=null!=t.level?t.level:1;t.actions=[{action:"modulate-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,red:e,green:e,blue:e,saturation:!0}]},sepia:function(t){t.actions=[{action:"tint-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,redInRed:.393,redInGreen:.349,redInBlue:.272,greenInRed:.769,greenInGreen:.686,greenInBlue:.534,blueInRed:.189,blueInGreen:.168,blueInBlue:.131}]},sharpen:function(t){t.actions=[{action:"matrix",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,width:3,height:3,offsetX:1,offsetY:1,includeRed:!0,includeGreen:!0,includeBlue:!0,includeAlpha:!1,weights:[0,-1,0,-1,5,-1,0,-1,0]}]},swirl:function(t){let e=null!=t.startX?t.startX:"50%",i=null!=t.startY?t.startY:"50%",s=null!=t.innerRadius?t.innerRadius:0,n=null!=t.outerRadius?t.outerRadius:"30%",r=null!=t.angle?t.angle:0,o=null!=t.easing?t.easing:"linear";const a=[...null!=t.staticSwirls?t.staticSwirls:[]];a.push([e,i,s,n,r,o]),t.actions=[{action:"swirl",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,swirls:a}]},threshold:function(t){let e=null!=t.lowRed?t.lowRed:0,i=null!=t.lowGreen?t.lowGreen:0,s=null!=t.lowBlue?t.lowBlue:0,n=null!=t.lowAlpha?t.lowAlpha:255,r=null!=t.highRed?t.highRed:255,o=null!=t.highGreen?t.highGreen:255,a=null!=t.highBlue?t.highBlue:255,l=null!=t.highAlpha?t.highAlpha:255;null!=t.lowColor&&([e,i,s,n]=yi.extractRGBfromColor(t.lowColor),n=Math.round(255*n),t.lowRed=e,t.lowGreen=i,t.lowBlue=s,t.lowAlpha=n,t.low=[e,i,s,n],delete t.lowColor),null!=t.highColor&&([r,o,a,l]=yi.extractRGBfromColor(t.highColor),l=Math.round(255*l),t.highRed=r,t.highGreen=o,t.highBlue=a,t.highAlpha=l,t.high=[r,o,a,l],delete t.highColor);let h=null!=t.low?t.low:[e,i,s,n],c=null!=t.high?t.high:[r,o,a,l];t.actions=[{action:"threshold",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,level:null!=t.level?t.level:128,red:null!=t.red?t.red:128,green:null!=t.green?t.green:128,blue:null!=t.blue?t.blue:128,alpha:null!=t.alpha?t.alpha:128,low:h,high:c,includeRed:null==t.includeRed||t.includeRed,includeGreen:null==t.includeGreen||t.includeGreen,includeBlue:null==t.includeBlue||t.includeBlue,includeAlpha:null!=t.includeAlpha&&t.includeAlpha,useMixedChannel:null==t.useMixedChannel||t.useMixedChannel}]},tiles:function(t){t.actions=[{action:"tiles",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,tileWidth:null!=t.tileWidth?t.tileWidth:1,tileHeight:null!=t.tileHeight?t.tileHeight:1,tileRadius:null!=t.tileRadius?t.tileRadius:1,offsetX:null!=t.offsetX?t.offsetX:0,offsetY:null!=t.offsetY?t.offsetY:0,angle:null!=t.angle?t.angle:0,points:null!=t.points?t.points:"rect-grid",seed:null!=t.seed?t.seed:"some-random-string-or-other",includeRed:null==t.includeRed||t.includeRed,includeGreen:null==t.includeGreen||t.includeGreen,includeBlue:null==t.includeBlue||t.includeBlue,includeAlpha:null!=t.includeAlpha&&t.includeAlpha}]},tint:function(t){let e=null!=t.redInRed?t.redInRed:1,i=null!=t.redInGreen?t.redInGreen:0,s=null!=t.redInBlue?t.redInBlue:0,n=null!=t.greenInRed?t.greenInRed:0,r=null!=t.greenInGreen?t.greenInGreen:1,o=null!=t.greenInBlue?t.greenInBlue:0,a=null!=t.blueInRed?t.blueInRed:0,l=null!=t.blueInGreen?t.blueInGreen:0,h=null!=t.blueInBlue?t.blueInBlue:1;null!=t.redColor&&([e,n,a]=yi.extractRGBfromColor(t.redColor),e/=255,n/=255,a/=255,t.redInRed=e,t.greenInRed=n,t.blueInRed=a,delete t.redColor),null!=t.greenColor&&([i,r,l]=yi.extractRGBfromColor(t.greenColor),i/=255,r/=255,l/=255,t.redInGreen=i,t.greenInGreen=r,t.blueInGreen=l,delete t.greenColor),null!=t.blueColor&&([s,o,h]=yi.extractRGBfromColor(t.blueColor),s/=255,o/=255,h/=255,t.redInBlue=s,t.greenInBlue=o,t.blueInBlue=h,delete t.blueColor),t.actions=[{action:"tint-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,redInRed:e,redInGreen:i,redInBlue:s,greenInRed:n,greenInGreen:r,greenInBlue:o,blueInRed:a,blueInGreen:l,blueInBlue:h}]},userDefined:function(t){t.actions=[{action:"user-defined-legacy",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1}]},yellow:function(t){t.actions=[{action:"average-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,includeRed:!0,includeGreen:!0,excludeBlue:!0}]}},er=function(t){return!!t&&new Filter(t)};H.Filter=Filter;const Force=function(t=q){return this.makeName(t.name),this.register(),this.set(this.defs),this.set(t),this.action||(this.action=Z),this};let ir=Force.prototype=Object.create(Object.prototype);ir.type="Force",ir.lib="force",ir.isArtefact=!1,ir.isAsset=!1,ir=me(ir);ir.defs=at(ir.defs,{action:null}),ir.packetFunctions=ht(ir.packetFunctions,["action"]),ir.kill=function(){return this.deregister(),!0},ir.setters.action=function(t){st(t)?this.action=t:this.action=Z};const sr=function(t){return!!t&&new Force(t)};H.Force=Force,sr({name:"gravity",action:(t,e,i)=>{let{mass:s,load:n}=t,r=is();r.setFromVector(e.gravity).scalarMultiply(s),n.vectorAdd(r),ss(r)}});const Grid=function(t=q){return this.tileFill=[],this.tileSources=[],this.entityInit(t),t.tileSources||(this.tileSources=[].concat([{type:"color",source:"#000000"},{type:"color",source:"#ffffff"}])),t.tileFill?Array.isArray(t.tileFill)&&this.tileFill.length===t.tileFill.length&&(this.tileFill=t.tileFill):(this.tileFill.length=this.columns*this.rows,this.tileFill.fill(0)),this.tilePaths=[],this.tileRealCoordinates=[],this.tileVirtualCoordinates=[],t.dimensions||(t.width||(this.currentDimensions[0]=this.dimensions[0]=20),t.height||(this.currentDimensions[1]=this.dimensions[1]=20)),this};let nr=Grid.prototype=Object.create(Object.prototype);nr.type="Grid",nr.lib="entity",nr.isArtefact=!0,nr.isAsset=!1,nr=me(nr),nr=tn(nr);nr.defs=at(nr.defs,{columns:2,rows:2,columnGutterWidth:1,rowGutterWidth:1,tileSources:null,tileFill:null,gutterColor:"#808080"}),nr.packetExclusions=ht(nr.packetExclusions,["tileSources"]),nr.finalizePacketOut=function(t,e){let i=t.tileSources=[];this.tileSources.forEach((t=>{i.push({type:t.type,source:rt(t.source)?t.source.name:t.source})})),rt(t.gutterColor)&&(t.gutterColor=t.gutterColor.name);let s=JSON.parse(this.state.saveAsPacket(e))[3];return t=at(t,s),t=this.handlePacketAnchor(t,e)},nr.getters;let rr=nr.setters,or=nr.deltaSetters;rr.columns=function(t){if(nt(t)&&(Number.isInteger(t)||(t=parseInt(t,10)),t!==this.columns)){let e,i,s,n=this.tileFill,r=this.columns,o=[];for(this.columns=t,e=0,i=this.rows;e{nt(t)&&(i[t]=e)})),this.dirtyFilterIdentifier=!0),this},nr.setTileSourceTo=function(t,e){return nt(t)&&rt(e)&&e.type&&e.source&&(this.tileSources[t]=e),this},nr.removeTileSource=function(t){return nt(t)&&t&&(this.tileSources[t]=null,this.tileFill=this.tileFill.map((e=>e===t?0:e))),this},nr.getTileSource=function(t,e){if(nt(t))return nt(e)?this.tileFill[t*this.rows+e]:this.tileFill[t]},nr.getTilesUsingSource=function(t){let e=[];return nt(t)&&this.tileFill.forEach(((i,s)=>i==t&&e.push(s))),e},nr.cleanPathObject=function(){if(this.dirtyPathObject=!1,!this.noPathUpdates||!this.pathObject){let t=this.pathObject=new Path2D,e=new Path2D,i=new Path2D,s=this.currentStampHandlePosition,n=this.currentScale,r=this.currentDimensions,o=-s[0]*n,a=-s[1]*n,l=r[0]*n,h=r[1]*n;t.rect(o,a,l,h);let c,u,d,f,p=this.columns,m=this.rows,g=l/p,y=h/m,b=this.tilePaths,S=this.tileRealCoordinates,k=this.tileVirtualCoordinates;for(e.moveTo(o,a),e.lineTo(o+l,a),c=1;c<=m;c++){let t=a+c*y;e.moveTo(o,t),e.lineTo(o+l,t)}for(this.rowLines=e,i.moveTo(o,a),i.lineTo(o,a+h),u=1;u<=p;u++){let t=o+u*g;i.moveTo(t,a),i.lineTo(t,a+h)}for(this.columnLines=i,b.length=0,S.length=0,k.length=0,c=0;c{if(r&&r.type)switch(r.type){case"color":t.fillStyle=r.source;break;case"cellGradient":this.lockFillStyleToEntity=!1,t.fillStyle=r.source.getData(this,this.currentHost);break;case"gridGradient":this.lockFillStyleToEntity=!0,t.fillStyle=r.source.getData(this,this.currentHost)}let y=o.map((t=>t===g));if(y.length)switch(r.type){case"gridPicture":e=r.source.substring?f[r.source]:r.source,e.simpleStamp&&(n.width=m[0]*p,n.height=m[1]*p,s.globalCompositeOperation="source-over",s.fillStyle="#000000",y.forEach(((t,e)=>{t&&s.fillRect(h[e][0],h[e][1],u,d)})),s.globalCompositeOperation="source-in",e.simpleStamp(i,{startX:0,startY:0,width:m[0]*p,height:m[1]*p,method:"fill"}),t.drawImage(n,l[0][0],l[0][1]));break;case"tilePicture":e=r.source.substring?f[r.source]:r.source,e.simpleStamp&&(n.width=u,n.height=d,s.globalCompositeOperation="source-over",e.simpleStamp(i,{startX:0,startY:0,width:u,height:d,method:"fill"}),y.forEach(((e,i)=>e&&t.drawImage(n,l[i][0],l[i][1]))));break;default:y.forEach(((e,i)=>e&&t.fill(a[i],c)))}}));let g,y=this.gutterColor,b=this.rowGutterWidth,S=this.columnGutterWidth;if(ut(y)){switch(y.substring?g={type:"color",source:this.gutterColor}:rt(y)?g=y:nt(y)&&rt(r[y])&&(g=r[y]),g.type){case"cellGradient":this.lockFillStyleToEntity=!1,t.strokeStyle=g.source.getData(this,this.currentHost);break;case"gridGradient":this.lockFillStyleToEntity=!0,t.strokeStyle=g.source.getData(this,this.currentHost);break;case"color":t.strokeStyle=g.source}switch(g.type){case"gridPicture":case"tilePicture":if((b||S)&&(e=g.source.substring?f[g.source]:g.source,e.simpleStamp)){let r=this.currentStampHandlePosition,o=this.currentScale,a=r[0]*o,h=r[1]*o;n.width=m[0]*o,n.height=m[1]*o,s.globalCompositeOperation="source-over",s.strokeStyle="#000000",s.translate(a,h),b&&(s.lineWidth=b,s.stroke(this.rowLines)),S&&(s.lineWidth=S,s.stroke(this.columnLines)),s.globalCompositeOperation="source-in",e.simpleStamp(i,{startX:0,startY:0,width:m[0]*o,height:m[1]*o,method:"fill"}),t.drawImage(n,l[0][0],l[0][1]),s.translate(0,0)}break;default:b&&(t.lineWidth=b,t.stroke(this.rowLines)),S&&(t.lineWidth=S,t.stroke(this.columnLines))}}ci(i),t.restore()},nr.fill=function(t){this.performFill(t)},nr.drawAndFill=function(t){let e=this.pathObject;t.stroke(e),this.currentHost.clearShadow(),this.performFill(t)},nr.fillAndDraw=function(t){let e=this.pathObject;t.stroke(e),this.currentHost.clearShadow(),this.performFill(t),t.stroke(e)},nr.drawThenFill=function(t){let e=this.pathObject;t.stroke(e),this.performFill(t)},nr.fillThenDraw=function(t){let e=this.pathObject;this.performFill(t),t.stroke(e)},nr.checkHit=function(t=[],e){if(this.noUserInteraction)return!1;this.pathObject&&!this.dirtyPathObject||this.cleanPathObject();let i=Array.isArray(t)?t:[t],s=!1;e||(e=hi(),s=!0);let n,r,o,a=e.engine,l=this.currentStampPosition,h=l[0],c=l[1],u=new Set,d=this.tilePaths;const f=t=>{let e,i;if(Array.isArray(t))e=t[0],i=t[1];else{if(!dt(t,t.x,t.y))return[!1];e=t.x,i=t.y}return!e.toFixed||!i.toFixed||isNaN(e)||isNaN(i)?[!1]:[!0,e,i]};return e.rotateDestination(a,h,c,this),i.some((t=>([n,r,o]=f(t),!!n&&a.isPointInPath(this.pathObject,r,o,this.winding))),this)?(i.forEach((t=>{[n,r,o]=f(t),n&&d.some(((t,e)=>!!a.isPointInPath(t,r,o,this.winding)&&(u.add(e),!0)))})),s&&ci(e),{x:r,y:o,tiles:[...u],artefact:this}):(s&&ci(e),!1)};const ar=function(t){return!!t&&new Grid(t)};H.Grid=Grid;const lr={},hr=function(t=q){const e=(t=q)=>{if(t&&t.target){let e=t.target,s="";for(;!s&&(lr[e.id]&&(s=e.id),"BODY"!==e.tagName);)e=e.parentElement;const n=lr[s];n?(n.onKeyDown(t),i=n.onKeyUp):i=Z}};let i=Z;const s=t=>{i(t)};return function(t=q,e,i){let{zone:s}=t;if(!s)return new Error("keyboardZone constructor - no zone supplied");if(s.substring&&(s=artefact[s]),!s||["Canvas","Stack"].indexOf(s.type)<0)return new Error("keyboardZone constructor - zone object is not a Stack or Canvas wrapper");let n=s.domElement;if(!n)return new Error("keyboardZone constructor - zone does not contain a target DOM element");let r=lr[s.name];r||(lr[s.name]={},r=lr[s.name],e(n)),r.extraKeys||(r.extraKeys={Shift:!1,Control:!1,Alt:!1,Meta:!1});const o=["none","shiftOnly","altOnly","ctrlOnly","metaOnly","shiftAlt","shiftCtrl","shiftMeta","altCtrl","altMeta","ctrlMeta","shiftAltCtrl","shiftAltMeta","shiftCtrlMeta","altCtrlMeta","all"];if(!r.keyGroups){const t={};o.forEach((e=>t[e]={})),r.keyGroups=t}const a=r.keyGroups;return o.forEach((e=>{const i=t[e];null!=i&<(a[e],i)})),r.onKeyDown||(r.onKeyDown=(t=q)=>{if(t&&t.key){t.preventDefault();const{extraKeys:e,keyGroups:i}=r,{key:s}=t;if("Tab"===s||"Escape"===s)return void n.blur();if(null!=e[s])return void(e[s]=!0);const{Shift:o,Control:a,Alt:l,Meta:h}=e;let c=i.none;(o||a||l||h)&&(c=o?l?a?h?i.all:i.shiftAltCtrl:h?i.shiftAltMeta:i.shiftAlt:a?h?i.shiftCtrlMeta:i.shiftCtrl:h?i.shiftMeta:i.shiftOnly:l?a?h?i.altCtrlMeta:i.altCtrl:h?i.altMeta:i.altOnly:a?h?i.ctrlMeta:i.ctrlOnly:h?i.altOnly:i.none),c[s]&&c[s]()}}),r.onKeyUp||(r.onKeyUp=(t=q)=>{if(t&&t.key){t.preventDefault();const{extraKeys:e}=r,{key:i}=t;null!=e[i]&&(e[i]=!1)}}),r.kill||(r.kill=function(){delete lr[s.name],i(n)}),{kill:r.kill,getMappedKeys:(t="none")=>null!=r.keyGroups[t]?Object.keys(r.keyGroups[t]):[]}}(t,(t=>{Rt("keydown",e,t),Rt("keyup",s,t)}),(t=>{Ft("keydown",e,t),Ft("keyup",s,t)}))},Line=function(t=q){return this.curveInit(t),this.shapeInit(t),this};let cr=Line.prototype=Object.create(Object.prototype);cr.type="Line",cr.lib="entity",cr.isArtefact=!0,cr.isAsset=!1,cr=me(cr),cr=hn(cr),cr=un(cr),cr.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeLinePath(),this.pathDefinition=t},cr.makeLinePath=function(){let[t,e]=this.currentStampPosition,[i,s]=this.currentEnd;return`m0,0l${(i-t).toFixed(2)},${(s-e).toFixed(2)}`},cr.cleanDimensions=function(){this.dirtyDimensions=!1,this.dirtyHandle=!0,this.dirtyOffset=!0,this.dirtyStart=!0,this.dirtyEnd=!0},cr.preparePinsForStamp=function(){const t=this.dirtyPins,e=this.endPivot,i=this.endPath;for(let s,n=0,r=t.length;n1)&&(this.fromPathStart=t-e(t)),t=this.fromPathEnd,(t<0||t>1)&&(this.fromPathEnd=t-e(t)),t=this.toPathStart,(t<0||t>1)&&(this.toPathStart=t-e(t)),t=this.toPathEnd,(t<0||t>1)&&(this.toPathEnd=t-e(t))}this.dirtyOutput=!0},br.fromPathStart=function(t){this.loopPathCursors&&(t<0||t>1)&&(t-=Math.floor(t)),this.fromPathStart=t,this.synchronizePathCursors&&(this.toPathStart=t),this.dirtyPathData=!0},Sr.fromPathStart=function(t){let e=this.fromPathStart+=t;this.loopPathCursors&&(e<0||e>1)&&(e-=Math.floor(e)),this.fromPathStart=e,this.synchronizePathCursors&&(this.toPathStart=e),this.dirtyPathData=!0},br.fromPathEnd=function(t){this.loopPathCursors&&(t<0||t>1)&&(t-=Math.floor(t)),this.fromPathEnd=t,this.synchronizePathCursors&&(this.toPathEnd=t),this.dirtyPathData=!0},Sr.fromPathEnd=function(t){let e=this.fromPathEnd+=t;this.loopPathCursors&&(e<0||e>1)&&(e-=Math.floor(e)),this.fromPathEnd=e,this.synchronizePathCursors&&(this.toPathEnd=e),this.dirtyPathData=!0},br.toPathStart=function(t){this.loopPathCursors&&(t<0||t>1)&&(t-=Math.floor(t)),this.toPathStart=t,this.synchronizePathCursors&&(this.fromPathStart=t),this.dirtyPathData=!0},Sr.toPathStart=function(t){let e=this.toPathStart+=t;this.loopPathCursors&&(e<0||e>1)&&(e-=Math.floor(e)),this.toPathStart=e,this.synchronizePathCursors&&(this.fromPathStart=e),this.dirtyPathData=!0},br.toPathEnd=function(t){this.loopPathCursors&&(t<0||t>1)&&(t-=Math.floor(t)),this.toPathEnd=t,this.synchronizePathCursors&&(this.fromPathEnd=t),this.dirtyPathData=!0},Sr.toPathEnd=function(t){let e=this.toPathEnd+=t;this.loopPathCursors&&(e<0||e>1)&&(e-=Math.floor(e)),this.toPathEnd=e,this.synchronizePathCursors&&(this.fromPathEnd=e),this.dirtyPathData=!0},gr.getHost=function(){if(this.currentHost)return this.currentHost;if(this.host){let t=o[this.host];if(t)return this.currentHost=t,this.dirtyHost=!0,this.currentHost}return currentCorePosition},gr.midInitActions=Z,gr.update=function(){this.dirtyInput=!0,this.dirtyOutput=!0},gr.prepareStamp=function(){let t=this.fromPath,e=this.toPath,[i,s,n,r]=this.getBoundingBox();if(!this.dirtyPathData){let{x:i,y:s}=t.getPathPositionData(0),{x:n,y:r}=t.getPathPositionData(1),{x:o,y:a}=e.getPathPositionData(0),{x:l,y:h}=e.getPathPositionData(1),c=[i,s,n,r,o,a,l,h];this.pathTests&&!this.pathTests.some(((t,e)=>t!==c[e]))||(this.pathTests=c,this.dirtyPathData=!0)}if(this.dirtyPathData||!this.fromPathData.length){this.dirtyPathData=!1,this.watchIndex=-1,this.engineInstructions.length=0,this.engineDeltaLengths.length=0;let n=Math.ceil,r=Math.max,o=Math.min,a=this.fromPathData;a.length=0;let l=this.toPathData;if(l.length=0,t&&e){let h,c,u,d,f=n(t.length),p=n(e.length);h=this.setSourceDimension(r(f,p));let m,g,y,b=this.fromPathStart,S=this.fromPathEnd,k=this.toPathStart,A=this.toPathEnd,O=this.constantPathSpeed;m=b=0&&x>=0?([i,s]=S[p(O)],[n,r]=k[p(x)],o=n-i,a=r-s,l=f(o,a),D?(h=-g(o,a)+w,c=y(h),u=b(h),M.push([c,u,-u,c,i,s]),H.push(l)):(h=-g(o,a)+P,c=y(h),u=b(h),M.push([c,u,-u,c,i,s,l]),H.push(l))):(M.push(!1),H.push(!1)),O+=v,x+=C,R&&(O>=A&&(O-=A),x>=A&&(x-=A));E<0&&(E=0),this.watchIndex=E}if(D)for(let e=0;e=t&&(E=0);else for(let e=0;e=t&&(E=0);let z=this.interferenceFactor,W=this.interferenceLoops,V=m(T*z),Z=m(L*z);X.width=V,X.height=Z,N.setTransform(1,0,0,1,0,0),j.setTransform(1,0,0,1,0,0);for(let t=0;t{if(Array.isArray(o))e=o[0],i=o[1];else{if(!dt(o,o.x,o.y))return!1;e=o.x,i=o.y}return!(!e.toFixed||!i.toFixed||isNaN(e)||isNaN(i))&&(s=e-t,n=i-l,!(s<0||s>h||n<0||n>c)&&(r=4*(n*h+s)+3,!!a&&a[r]>0))}),this))return{x:e,y:i,artefact:this}}return!1};const kr=function(t){return!!t&&new Loom(t)};H.Loom=Loom;const Mesh=function(t=q){return this.makeName(t.name),this.register(),this.set(this.defs),this.state=Je(),t.group||(t.group=ks),this.onEnter=Z,this.onLeave=Z,this.onDown=Z,this.onUp=Z,this.delta={},this.set(t),this.fromPathData=[],this.toPathData=[],this.watchFromPath=null,this.watchIndex=-1,this.engineInstructions=[],this.engineDeltaLengths=[],this};let Ar=Mesh.prototype=Object.create(Object.prototype);Ar.type="Mesh",Ar.lib="entity",Ar.isArtefact=!0,Ar.isAsset=!1,Ar=me(Ar),Ar=Xi(Ar),Ar=Vi(Ar);Ar.defs=at(Ar.defs,{net:null,isHorizontalCopy:!0,source:null,sourceIsVideoOrSprite:!1,interferenceLoops:2,interferenceFactor:1.03,visibility:!0,calculateOrder:0,stampOrder:0,delta:null,host:null,group:null,anchor:null,noCanvasEngineUpdates:!1,noDeltaUpdates:!1,onEnter:null,onLeave:null,onDown:null,onUp:null,noUserInteraction:!1,method:"fill"}),Ar.packetExclusions=ht(Ar.packetExclusions,["pathObject","state"]),Ar.packetExclusionsByRegex=ht(Ar.packetExclusionsByRegex,["^(local|dirty|current)","Subscriber$"]),Ar.packetCoordinates=ht(Ar.packetCoordinates,[]),Ar.packetObjects=ht(Ar.packetObjects,["group","net","source"]),Ar.packetFunctions=ht(Ar.packetFunctions,["onEnter","onLeave","onDown","onUp"]),Ar.processPacketOut=function(t,e,i){let s=!0;return i.indexOf(t)<0&&e===this.defs[t]&&(s=!1),s},Ar.finalizePacketOut=function(t,e){let i=JSON.parse(this.state.saveAsPacket(e))[3];return t=at(t,i),t=this.handlePacketAnchor(t,e)},Ar.handlePacketAnchor=function(t,e){if(this.anchor){let i=JSON.parse(this.anchor.saveAsPacket(e))[3];t.anchor=i}return t},Ar.clone=U;let Or=Ar.getters,vr=Ar.setters;Ar.deltaSetters,Ar.get=function(t){const e=this.getters[t];if(e)return e.call(this);{let e,i=this.defs[t],s=this.state;return void 0!==i?(e=this[t],void 0!==e?e:i):(i=s.defs[t],void 0!==i?(e=s[t],void 0!==e?e:i):null)}},Ar.set=function(t=q){const e=Object.keys(t),i=e.length;if(i){const s=this.setters,n=this.defs,r=this.state,o=r?r.setters:q,a=r?r.defs:q;let l,h,c,u;for(h=0;h3){let{rows:i,columns:s,particleStore:n}=t;if(i&&s){this.badNet=!1,this.rows=i,this.columns=s,e||(e=[]);let t=[];n.forEach((e=>{let i=e.position,{x:s,y:n}=i;t.push([s,n])}));let r=t.join(",");e.join(",")!==r&&(this.particlePositions=t,this.dirtyInput=!0),this.sourceIsVideoOrSprite&&(this.dirtyInput=!0)}}},Ar.setSourceDimension=function(){if(!this.badNet){const{columns:t,rows:e,particlePositions:i}=this,s=[],n=[],r=[],o=[],a=[],l=[],h=[],c=[],u=[];let d,f,p,m,g,y,b,S,k,A,O,v,x,C,w,P,D,R;for(p=0;pt&&(this.sourceDimension=t)}for(w=0,P=n.length;w0){let[a,l,h,c]=o;h+=a,c+=l;const u=hi(),d=u.engine,f=u.element;f.width=e,f.height=e,d.setTransform(1,0,0,1,0,0),d.putImageData(i,0,0);const p=hi(),m=p.engine,g=p.element;g.width=h,g.height=c,m.globalAlpha=this.state.globalAlpha,m.setTransform(1,0,0,1,0,0);const y=parseFloat((e/(n-1)).toFixed(4)),b=parseFloat((e/(s-1)).toFixed(4));let S,k,A,O,v,x,C,w,P,D,R,F,E,M,H,I,B,T,L,$,j,X,Y;for(j=0,X=n-1;je?e-M:y;m.drawImage(f,E,M,1,n,0,0,1,B)}}let N=this.interferenceFactor,G=this.interferenceLoops,z=Math.ceil(h*N),W=Math.ceil(c*N);f.width=z,f.height=W,m.setTransform(1,0,0,1,0,0),d.setTransform(1,0,0,1,0,0);for(let t=0;t{if(Array.isArray(t))n=t[0],r=t[1];else{if(!dt(t,t.x,t.y))return!1;n=t.x,r=t.y}return!(!n.toFixed||!r.toFixed||isNaN(n)||isNaN(r))&&o.isPointInPath(this.pathObject,n,r,this.winding)}),this)){let t={x:n,y:r,artefact:this};return s&&ci(e),t}return s&&ci(e),!1};const xr=function(t){return!!t&&new Mesh(t)};H.Mesh=Mesh;const Spring=function(t=q){return this.makeName(t.name),this.register(),this.set(this.defs),this.set(t),this.action||(this.action=Z),this};let Cr=Spring.prototype=Object.create(Object.prototype);Cr.type="Spring",Cr.lib="spring",Cr.isArtefact=!1,Cr.isAsset=!1,Cr=me(Cr);Cr.defs=at(Cr.defs,{particleFrom:null,particleFromIsStatic:!1,particleTo:null,particleToIsStatic:!1,springConstant:50,damperConstant:10,restLength:1}),Cr.packetObjects=ht(Cr.packetObjects,["particleFrom","particleTo"]),Cr.kill=function(){return this.deregister(),!0};let wr=Cr.setters;wr.particleFrom=function(t){t.substring&&(t=b[t]),t&&"Particle"===t.type&&(this.particleFrom=t)},wr.particleTo=function(t){t.substring&&(t=b[t]),t&&"Particle"===t.type&&(this.particleTo=t)},Cr.applySpring=function(){let{particleFrom:t,particleTo:e,particleFromIsStatic:i,particleToIsStatic:s,springConstant:n,damperConstant:r,restLength:o}=this;if(t&&e){let{position:a,velocity:l,load:h}=t,{position:c,velocity:u,load:d}=e,f=is(u).vectorSubtract(l),p=is(c).vectorSubtract(a),m=is(p).normalize(),g=is(m);m.scalarMultiply(n*(p.getMagnitude()-o)),f.vectorMultiply(g).scalarMultiply(r).vectorMultiply(g);let y=is(m).vectorAdd(f);i||h.vectorAdd(y),s||d.vectorSubtract(y),ss(f)}};const Pr=function(t){return!!t&&new Spring(t)};H.Spring=Spring;const Net=function(t=q){return this.makeName(t.name),this.register(),this.initializePositions(),this.set(this.defs),this.onEnter=Z,this.onLeave=Z,this.onDown=Z,this.onUp=Z,this.generate=Z,this.postGenerate=Z,this.stampAction=Z,this.particleStore=[],this.springs=[],t.group||(t.group=ks),this.set(t),this.purge&&this.purgeArtefact(this.purge),this};let Dr=Net.prototype=Object.create(Object.prototype);Dr.type="Net",Dr.lib="entity",Dr.isArtefact=!0,Dr.isAsset=!1,Dr=me(Dr),Dr=tn(Dr);Dr.defs=at(Dr.defs,{world:null,artefact:null,historyLength:1,forces:null,mass:1,engine:"euler",springConstant:50,damperConstant:10,restLength:1,showSprings:!1,showSpringsColor:"#000000",rows:0,columns:0,rowDistance:0,columnDistance:0,shapeTemplate:null,precision:20,joinTemplateEnds:!1,particlesAreDraggable:!1,hitRadius:10,showHitRadius:!1,hitRadiusColor:"#000000",resetAfterBlur:3}),Dr.packetExclusions=ht(Dr.packetExclusions,["forces","springs","particleStore"]),Dr.packetExclusionsByRegex=ht(Dr.packetExclusionsByRegex,[]),Dr.packetCoordinates=ht(Dr.packetCoordinates,[]),Dr.packetObjects=ht(Dr.packetObjects,["world","artefact","shapeTemplate"]),Dr.packetFunctions=ht(Dr.packetFunctions,["generate","postGenerate","stampAction"]),Dr.finalizePacketOut=function(t,e){let i=e.forces||this.forces||!1;if(i){let e=[];i.forEach((t=>{t.substring?e.push(t):rt(t)&&t.name&&e.push(t.name)})),t.forces=e}let s=[];return this.particleStore.forEach((t=>s.push(t.saveAsPacket()))),t.particleStore=s,t},Dr.postCloneAction=function(t,e){return t},Dr.factoryKill=function(t,e){this.isRunning=!1,t&&(this.artefact.kill(),this.shapeTemplate&&this.shapeTemplate.kill()),e&&this.world.kill(),this.purgeParticlesFromLibrary()},Dr.purgeParticlesFromLibrary=function(){let{particleStore:t,springs:e}=this;a.forEach((t=>{let e=o[t];e&&(e.particle&&!e.particle.substring&&e.particle.name&&(e.particle=e.particle.name),"Polyline"===e.type&&e.useParticlesAsPins&&e.pins.forEach(((t,i)=>{rt(t)&&"Particle"===t.type&&(e.pins[i]=t.name,e.dirtyPins=!0)})))})),t.forEach((t=>t.kill())),t.length=0,e.forEach((t=>t.kill())),e.length=0},Dr.getters;let Rr=Dr.setters;Dr.deltaSetters,Rr.generate=function(t){st(t)?this.generate=t:t.substring&&Fr[t]&&(this.generate=Fr[t])},Rr.postGenerate=function(t){st(t)&&(this.postGenerate=t)},Rr.stampAction=function(t){st(t)&&(this.stampAction=t)},Rr.world=function(t){let e;t.substring?e=v[t]:rt(t)&&"World"===t.type&&(e=t),e&&(this.world=e)},Rr.artefact=function(t){let e;t.substring?e=o[t]:rt(t)&&t.isArtefact&&(e=t),e&&(this.artefact=e),this.dirtyFilterIdentifier=!0},Rr.shapeTemplate=function(t){let e;t.substring?e=f[t]:rt(t)&&t.isArtefact&&ut(t.species)&&(e=t),e&&(this.shapeTemplate=e),this.dirtyFilterIdentifier=!0},Dr.regularStamp=function(){let{world:t,artefact:e,particleStore:i,springs:s,generate:n,postGenerate:r,stampAction:o,lastUpdated:a,resetAfterBlur:l,showSprings:h,showSpringsColor:c,showHitRadius:u,hitRadius:d,hitRadiusColor:f}=this,p=1,m="source-over";this.state&&(p=this.state.globalAlpha,m=this.state.globalCompositeOperation);let g=this.currentHost,y=.016,b=Date.now();if(a&&(y=(b-a)/1e3),y>l&&(this.purgeParticlesFromLibrary(),y=.016),i.length||(n.call(this,g),r.call(this)),i.forEach((e=>e.applyForces(t,g))),s.forEach((t=>t.applySpring())),i.forEach((e=>e.update(y,t))),h){let t=g.engine;t.save(),t.globalAlpha=p,t.globalCompositeOperation=m,t.strokeStyle=c,t.shadowOffsetX=0,t.shadowOffsetY=0,t.shadowBlur=0,t.shadowColor="rgb(0 0 0 / 0)",t.lineWidth=1,t.setTransform(1,0,0,1,0,0),t.beginPath(),s.forEach((e=>{let{particleFrom:i,particleTo:s}=e;t.moveTo(i.position.x,i.position.y),t.lineTo(s.position.x,s.position.y)})),t.stroke(),t.restore()}if(i.forEach((t=>{t.manageHistory(y,g),o.call(this,e,t,g)})),u){let t=g.engine;t.save(),t.globalAlpha=p,t.globalCompositeOperation=m,t.lineWidth=1,t.strokeStyle=f,t.shadowOffsetX=0,t.shadowOffsetY=0,t.shadowBlur=0,t.shadowColor="rgb(0 0 0 / 0)",t.setTransform(1,0,0,1,0,0),t.beginPath(),i.forEach((e=>{t.moveTo(e.position.x,e.position.y),t.arc(e.position.x,e.position.y,d,0,2*Math.PI)})),t.stroke(),t.restore()}this.lastUpdated=b},Dr.restart=function(){return this.purgeParticlesFromLibrary(),this.lastUpdated=Date.now(),this},Dr.checkHit=function(t=[],e){if(this.lastHitParticle=null,!this.particlesAreDraggable)return!1;if(this.noUserInteraction)return!1;let i,s,n,r,o,a=Array.isArray(t)?t:[t],l=this.particleStore,h=!1;if(a.some((t=>{if(Array.isArray(t))i=t[0],s=t[1];else{if(!dt(t,t.x,t.y))return!1;i=t.x,s=t.y}if(!i.toFixed||!s.toFixed||isNaN(i)||isNaN(s))return!1;let e=is();for(n=0,r=l.length;n0&&h>0){let d,f,S,k,A,[O,v]=this.currentStampPosition,[x,C]=t.currentDimensions,w=c.substring?parseFloat(c)/100*C:c,P=u.substring?parseFloat(u)/100*C:u;for(k=0;k0&&h>0){let d,f,S,k,A,[O,v]=this.currentStampPosition,[x,C]=t.currentDimensions,w=c.substring?parseFloat(c)/100*C:c,P=u.substring?parseFloat(u)/100*C:u;for(k=0;k0;A--)R=b[`${p}-${A}-${k}`],F=b[`${p}-${A-1}-${k+1}`],D(R,F,`${p}-${A}-${k}~${p}-${A-1}-${k+1}`)}},"weak-shape":function(t){let{particleStore:e,artefact:i,historyLength:s,engine:n,forces:r,springs:o,mass:a,showSprings:l,showSpringsColor:h,name:c,springConstant:u,damperConstant:d,restLength:f,shapeTemplate:p,precision:m,joinTemplateEnds:g}=this;const y=function(t,e,i){let s,n,r;s=is(t.position).vectorSubtract(e.position),n=s.getMagnitude(),r=Pr({name:i,particleFrom:t,particleTo:e,springConstant:u,damperConstant:d,restLength:n*f}),o.push(r),ss(s)};let S,k,A,O;if(p&&m){for(S=0;S=0){for(S=0;S=0||t.type;let[x,C]=e.get("position");v=Yn({name:`${d}-hub`,positionX:x,positionY:C,positionZ:0,velocityX:0,velocityY:0,velocityZ:0,historyLength:r,engine:o,forces:a,mass:h,fill:n.get("fillStyle"),stroke:n.get("strokeStyle")}),v.run(0,0,!1),s.forEach(((t,e)=>y(t,v,`${d}-${e}-hub`))),s.push(v)}}},Er=function(t){return!!t&&new Net(t)};function Mr(t=q){t.defs=at(t.defs,{choke:15});const e=t.setters,i=t.deltaSetters;return e.paletteStart=function(t){this.gradient&&this.gradient.set({paletteStart:t})},i.paletteStart=function(t){this.gradient&&this.gradient.setDelta({paletteStart:t})},e.paletteEnd=function(t){this.gradient&&this.gradient.set({paletteEnd:t})},i.paletteEnd=function(t){this.gradient&&this.gradient.setDelta({paletteEnd:t})},e.colors=function(t){this.gradient&&this.gradient.set({colors:t})},e.precision=function(t){this.gradient&&this.gradient.set({precision:t})},e.easing=function(t){this.gradient&&this.gradient.set({easing:t})},e.easingFunction=e.easing,e.colorSpace=function(t){this.gradient&&this.gradient.set({colorSpace:t})},e.returnColorAs=function(t){this.gradient&&this.gradient.set({returnColorAs:t})},e.cyclePalette=function(t){this.gradient&&this.gradient.set({cyclePalette:t})},e.delta=function(t=q){this.gradient&&this.gradient.set({delta:t})},t.installElement=function(t){const e=document.createElement("canvas");e.id=t,this.element=e,this.engine=this.element.getContext("2d",{willReadFrequently:!0});const i=document.createElement("canvas");return i.id=`${t}-color`,i.width=256,i.height=1,this.colorElement=i,this.colorEngine=this.colorElement.getContext("2d",{willReadFrequently:!0}),this.gradient=qn({name:`${t}-gradient`,endX:"100%",delta:{paletteStart:0,paletteEnd:0},cyclePalette:!1}),this.gradientLastUpdated=0,this},t.checkSource=function(t,e){this.notifySubscribers()},t.getData=function(t,e){return this.notifySubscribers(),this.buildStyle(e)},t.update=function(){this.dirtyOutput=!0},t.notifySubscribers=function(){this.dirtyOutput&&this.cleanOutput(),this.subscribers.forEach((t=>this.notifySubscriber(t)),this)},t.notifySubscriber=function(t){t.sourceNaturalWidth=this.width,t.sourceNaturalHeight=this.height,t.sourceLoaded=!0,t.source=this.element,t.dirtyImage=!0,t.dirtyCopyStart=!0,t.dirtyCopyDimensions=!0,t.dirtyImageSubscribers=!0},t.paintCanvas=function(){if(this.checkOutputValuesExist()&&this.dirtyOutput){this.dirtyOutput=!1;const{element:t,engine:e,width:i,height:s,colorElement:n,colorEngine:r,gradient:o,choke:a,gradientLastUpdated:l}=this,h=o.palette;t.width=i,t.height=s;const c=e.getImageData(0,0,i,s),u=c.data,d=i*s;let f,p,m;const g=Date.now();l+a=0&&(this.worleyOutput=t,this.dirtyNoise=!0,this.dirtyOutput=!0)},Hr.cleanOutput=function(){this.dirtyNoise&&this.cleanNoise(),this.dirtyOutput&&this.paintCanvas()},Hr.cleanNoise=function(){if(this.dirtyNoise){this.dirtyNoise=!1;let{noiseEngine:t,seed:e,width:i,height:s,element:n,engine:r,octaves:o,lacunarity:a,persistence:l,scale:h,octaveFunction:c,sumFunction:u}=this;if(t&&t.init){this.rndEngine=si(e),this.generatePermutationTable(),t.init.call(this);let n,r,d,f,p,m,g,y,b=[];for(r=0;r=0)for(r=0;rm&&(k=1,A=0),b=h[g+k+l[y+A]],S+=i(p-k+n,m-A+n,b),.5+35*S}},value:{name:"value",init:function(){const{values:t,size:e,rndEngine:i}=this;t.length=0;for(let s=0;s1?i=1:i<0&&(i=0),i}},Hr.wXorshift=function(t){let e=t^t>>12;return e^=e<<25,e^=e>>27,2*e},Hr.wHash=function(t,e,i){return 16777619*(16777619*(16777619*(2166136261^t)^e)^i)&4294967295},Hr.worleyDistanceFunctions={"euclidian-distance":function(t,e){return function(t,e){return[t.x-e.x,t.y-e.y,t.z-e.z]}(t,e).reduce(((t,e)=>t+e*e),0)},"manhattan-distance":function(t,e){return function(t,e){return[t.x-e.x,t.y-e.y,t.z-e.z]}(t,e).reduce(((t,e)=>t+Math.abs(e)),0)}},Hr.wProbLookup=function(t){return(t&=4294967295)<393325350?1:t<1022645910?2:t<1861739990?3:t<2700834071?4:t<3372109335?5:t<3819626178?6:t<4075350088?7:t<4203212043?8:9},Hr.wInsert=function(t,e){let i;for(let s=t.length-1;s>=0&&!(e>t[s]);s--)i=t[s],t[s]=e,s+1t<0?0:t>1?1:t)))};const Br=function(t){return!!t&&new NoiseAsset(t)},Tr=Br;H.NoiseAsset=NoiseAsset;const Lr=function(t=q){if(!dt(t.event,t.origin,t.updates))return!1;let e=t.target.substring&&t.targetLibrarySection?I[t.targetLibrarySection][t.target]:t.target;if(!e)return!1;let i=t.event,s=t.origin,n=t.useNativeListener?Rt:xt,r=t.useNativeListener?Ft:Ct,o=Z;t.preventDefault&&(o=t=>{t.preventDefault(),t.returnValue=!1});let a=st(t.setup)?t.setup:Z,l=st(t.callback)?t.callback:Z,h=function(i){o(i);let s=!(!i||!i.target)&&i.target.id;if(s){let n=t.updates[s];if(n){a();let t,s=n[0],r=n[1],o=i.target.value,h=!0;switch(r){case"float":t=parseFloat(o);break;case"int":t=parseInt(o,10);break;case"round":t=Math.round(o);break;case"roundDown":t=Math.floor(o);break;case"roundUp":t=Math.ceil(o);break;case"raw":t=o;break;case"string":t=`${o}`;break;case"boolean":t=!!ut(o)&&(o.substring?"true"===o.toLowerCase()||"false"!==o.toLowerCase()&&!!parseFloat(o):!!o);break;default:r.substring?t=`${parseFloat(o)}${r}`:h=!1}h&&("Group"===e.type?e.setArtefacts({[s]:t}):e.set({[s]:t}),l())}}};return n(i,h,s),function(){r(i,h,s)}},$r=(t=q)=>Lr(t),Oval=function(t=q){return this.shapeInit(t),this};let jr=Oval.prototype=Object.create(Object.prototype);jr.type="Oval",jr.lib="entity",jr.isArtefact=!0,jr.isAsset=!1,jr=me(jr),jr=hn(jr);jr.defs=at(jr.defs,{radiusX:5,radiusY:5,intersectX:.5,intersectY:.5,offshootA:.55,offshootB:0});let Xr=jr.setters,Yr=jr.deltaSetters;Xr.radius=function(t){this.setRectHelper(t,["radiusX","radiusY"])},Xr.radiusX=function(t){this.setRectHelper(t,["radiusX"])},Xr.radiusY=function(t){this.setRectHelper(t,["radiusY"])},Yr.radius=function(t){this.deltaRectHelper(t,["radiusX","radiusY"])},Yr.radiusX=function(t){this.deltaRectHelper(t,["radiusX"])},Yr.radiusY=function(t){this.deltaRectHelper(t,["radiusY"])},Xr.offshootA=function(t){this.offshootA=t,this.updateDirty()},Xr.offshootB=function(t){this.offshootB=t,this.updateDirty()},Yr.offshootA=function(t){t.toFixed&&(this.offshootA+=t,this.updateDirty())},Yr.offshootB=function(t){t.toFixed&&(this.offshootB+=t,this.updateDirty())},Xr.intersectA=function(t){this.intersectA=t,this.updateDirty()},Xr.intersectB=function(t){this.intersectB=t,this.updateDirty()},Yr.intersectA=function(t){t.toFixed&&(this.intersectA+=t,this.updateDirty())},Yr.intersectB=function(t){t.toFixed&&(this.intersectB+=t,this.updateDirty())},jr.setRectHelper=function(t,e){this.updateDirty(),e.forEach((e=>{this[e]=t}),this)},jr.deltaRectHelper=function(t,e){this.updateDirty(),e.forEach((e=>{this[e]=addStrings(this[e],t)}),this)},jr.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeOvalPath(),this.pathDefinition=t},jr.makeOvalPath=function(){let t,e,i=parseFloat(this.offshootA.toFixed(6)),s=parseFloat(this.offshootB.toFixed(6)),n=this.radiusX,r=this.radiusY;if(n.substring||r.substring){let i=this.getHost();if(i){let[s,o]=i.currentDimensions;t=2*(n.substring?parseFloat(n)/100*s:n),e=2*(r.substring?parseFloat(r)/100*o:r)}}else t=2*n,e=2*r;let o=parseFloat((t*this.intersectX).toFixed(2)),a=parseFloat((t-o).toFixed(2)),l=parseFloat((e*this.intersectY).toFixed(2)),h=parseFloat((e-l).toFixed(2)),c="m0,0";return c+=`c${a*i},${l*s} ${a-a*s},${l-l*i}, ${a},${l} `,c+=`${-a*s},${h*i} ${a*i-a},${h-h*s} ${-a},${h} `,c+=`${-o*i},${-h*s} ${o*s-o},${h*i-h} ${-o},${-h} `,c+=`${o*s},${-l*i} ${o-o*i},${l*s-l} ${o},${-l}z`,c},jr.calculateLocalPathAdditionalActions=function(){let[t,e,i,s]=this.localBox;this.pathDefinition=this.pathDefinition.replace("m0,0",`m${-t},${-e}`),this.pathCalculatedOnce=!1,this.calculateLocalPath(this.pathDefinition,!0)};const Nr=function(t){return!!t&&(t.species="oval",new Oval(t))};H.Oval=Oval;const VideoAsset=function(t=q){return this.assetConstructor(t)};let Gr=VideoAsset.prototype=Object.create(Object.prototype);Gr.type="Video",Gr.lib="asset",Gr.isArtefact=!1,Gr.isAsset=!0,Gr=me(Gr),Gr=Oi(Gr),Gr.saveAsPacket=function(){return[this.name,this.type,this.lib,{}]},Gr.stringifyFunction=Z,Gr.processPacketOut=Z,Gr.finalizePacketOut=Z,Gr.clone=U,Gr.getters;let zr=Gr.setters;Gr.deltaSetters,zr.source=function(t){t&&("VIDEO"===t.tagName.toUpperCase()&&(this.source=t,this.sourceNaturalWidth=t.videoWidth||0,this.sourceNaturalHeight=t.videoHeight||0,this.sourceLoaded=t.readyState>2),this.sourceLoaded&&this.notifySubscribers())},Gr.checkSource=function(t,e){let i=this.source;i&&i.readyState>2?(this.sourceLoaded=!0,this.sourceNaturalWidth===i.videoWidth&&this.sourceNaturalHeight===i.videoHeight&&this.sourceNaturalWidth===t&&this.sourceNaturalHeight===e||(this.sourceNaturalWidth=i.videoWidth,this.sourceNaturalHeight=i.videoHeight,this.notifySubscribers())):this.sourceLoaded=!1},Gr.addTextTrack=function(t,e,i){let s=this.source;s&&s.addTextTrack&&s.addTextTrack(t,e,i)},Gr.captureStream=function(){let t=this.source;return!(!t||!t.captureStream)&&t.captureStream()},Gr.canPlayType=function(t){let e=this.source;return e?e.canPlayType(t):"maybe"},Gr.fastSeek=function(t){let e=this.source;e&&e.fastSeek&&e.fastSeek(t)},Gr.load=function(){let t=this.source;t&&t.load()},Gr.pause=function(){let t=this.source;t&&t.pause()},Gr.play=function(){let t=this.source;return t?t.play().catch((t=>console.log(t.code,t.name,t.message))):Promise.reject("Source not defined")},Gr.setMediaKeys=function(t){let e=this.source;return e?e.setMediaKeys?e.setMediaKeys(t):Promise.reject("setMediaKeys not supported"):Promise.reject("Source not defined")},Gr.setSinkId=function(){let t=this.source;return t?t.setSinkId?t.setSinkId():Promise.reject("setSinkId not supported"):Promise.reject("Source not defined")};const Wr=["video_audioTracks","video_autoPlay","video_buffered","video_controller","video_controls","video_controlsList","video_crossOrigin","video_currentSrc","video_currentTime","video_defaultMuted","video_defaultPlaybackRate","video_disableRemotePlayback","video_duration","video_ended","video_error","video_loop","video_mediaGroup","video_mediaKeys","video_muted","video_networkState","video_paused","video_playbackRate","video_readyState","video_seekable","video_seeking","video_sinkId","video_src","video_srcObject","video_textTracks","video_videoTracks","video_volume"],Vr=["video_autoPlay","video_controller","video_controls","video_crossOrigin","video_currentTime","video_defaultMuted","video_defaultPlaybackRate","video_disableRemotePlayback","video_loop","video_mediaGroup","video_muted","video_playbackRate","video_src","video_srcObject","video_volume"],Zr=function(t){let e=/.*\/(.*?)\./;document.querySelectorAll(t).forEach((t=>{let i;if("VIDEO"===t.tagName.toUpperCase()){if(t.id||t.name)i=t.id||t.name;else{let s=e.exec(t.src);i=s&&s[1]?s[1]:""}let s=Kr({name:i,source:t});t.readyState<=2&&(t.oncanplay=()=>{s.set({source:t})})}}))},_r=function(t=q){let e={};e.audio=!ut(t.audio)||t.audio,e.video={};let i=e.video.width={};t.minWidth&&(i.min=t.minWidth),t.maxWidth&&(i.max=t.maxWidth),i.ideal=t.width?t.width:1280;let s=e.video.height={};t.minHeight&&(s.min=t.minHeight),t.maxHeight&&(s.max=t.maxHeight),s.ideal=t.height?t.height:720,t.facing&&(e.video.facingMode=t.facing);let n=t.name||Q(),r=document.createElement("video"),o=Kr({name:n,source:r});return new Promise(((t,i)=>{navigator&&navigator.mediaDevices?navigator.mediaDevices.getUserMedia(e).then((e=>{let i,s=e.getVideoTracks();Array.isArray(s)&&s[0]&&(i=s[0].getConstraints()),r.id=o.name,i&&(r.width=i.width,r.height=i.height),r.srcObject=e,r.onloadedmetadata=function(t){r.play()},t(o)})).catch((e=>{console.log(e.message),t(o)})):i("Navigator.mediaDevices object not found")}))},Ur=function(...t){let e=/.*\/(.*?)\./,i="";if(t.length){let s,n,r,o,a,l,h=!1,c=t[0];if(c.substring){let i=e.exec(c);s=i&&i[1]?i[1]:"",a=[...t],n="",r=!1,o=null,l="auto",h=!0}else c&&c.src&&(s=c.name||"",a=[...c.src],n=c.className||"",r=c.visibility||!1,o=document.querySelector(o),l=c.preload||"auto",h=!0);let u=Kr({name:s});if(h){let t=document.createElement("video");t.name=s,t.className=n,t.style.display=r?"block":"none",t.crossOrigin="anonymous",t.preload=l,a.forEach((e=>{let i=document.createElement("source");i.src=e,t.appendChild(i)})),t.onload=()=>{u.set({source:t}),o&&o.appendChild(t)},u.set({source:t}),i=s}}return i},Kr=function(t){return!!t&&new VideoAsset(t)};H.VideoAsset=VideoAsset;const SpriteAsset=function(t=q){return this.assetConstructor(t),this};let qr=SpriteAsset.prototype=Object.create(Object.prototype);qr.type="Sprite",qr.lib="asset",qr.isArtefact=!1,qr.isAsset=!0,qr=me(qr),qr=Oi(qr);qr.defs=at(qr.defs,{manifest:null}),qr.saveAsPacket=function(){return[this.name,this.type,this.lib,{}]},qr.stringifyFunction=Z,qr.processPacketOut=Z,qr.finalizePacketOut=Z,qr.clone=U,qr.getters;let Qr=qr.setters;qr.deltaSetters,Qr.source=function(t=[]){if(t&&t[0]){this.sourceHold||(this.sourceHold={});let e=this.sourceHold;t.forEach((t=>{let i=t.id||t.name;i&&(e[i]=t)})),this.source=t[0],this.sourceNaturalWidth=t[0].naturalWidth,this.sourceNaturalHeight=t[0].naturalHeight,this.sourceLoaded=t[0].complete}},qr.checkSource=Z;const Jr=function(...t){let e=/.*\/(.*?)\./,i=/\.(jpeg|jpg|png|gif|webp|svg|JPEG|JPG|PNG|GIF|WEBP|SVG)/,s=[];return t.forEach((t=>{let n,r,o,a,l,h=!1,c=!1;if(t.substring){let s=e.exec(t);n=s&&s[1]?s[1]:"",r=[t],o="",a=!1,l=t.replace(i,".json"),c=!0}else rt(t)&&t.imageSrc&&t.manifestSrc?(n=t.name||"",r=Array.isArray(t.imageSrc)?t.imageSrc:[t.imageSrc],l=t.manifestSrc,o=t.className||"",a=t.visibility||!1,h=document.querySelector(t.parent),c=!0):s.push(!1);if(c){let t=to({name:n});rt(l)?t.manifest=l:fetch(l).then((t=>{if(200!==t.status)throw new Error("Failed to load manifest");return t.json()})).then((e=>t.manifest=e)).catch((t=>console.log(t.message)));let c=[];r.forEach((t=>{let s,r,l=document.createElement("img");i.test(t)&&(r=e.exec(t),s=r&&r[1]?r[1]:""),l.name=s||n,l.className=o,l.crossorigin="anonymous",l.style.display=a?"block":"none",h&&h.appendChild(l),l.src=t,c.push(l)})),t.set({source:c}),s.push(n)}else s.push(!1)})),s},to=function(t){return!!t&&new SpriteAsset(t)};function eo(t=q){t.defs=at(t.defs,{asset:null,removeAssetOnKill:!1,spriteIsRunning:!1,spriteLastFrameChange:0,spriteCurrentFrame:0,spriteTrack:"default",spriteForward:!0,spriteFrameDuration:100,spriteWillLoop:!0});const e=t.getters,i=t.setters;return e.sourceDimensions=function(){return[this.sourceNaturalWidth,this.sourceNaturalHeight]},i.asset=function(t){const e=this.asset,i=t&&t.name?t.name:t;e&&!e.substring&&e.unsubscribe(this),this.asset=i,this.dirtyAsset=!0},i.imageSource=function(t){const e=Di(t);if(e){const t=l[e[0]];if(t){const e=this.asset;e&&e.unsubscribe&&e.unsubscribe(this),t.subscribe(this)}}},i.videoSource=function(t){const e=Ur(t);if(e){const t=l[e];if(t){const e=this.asset;e&&e.unsubscribe&&e.unsubscribe(this),t.subscribe(this)}}},i.spriteSource=function(t){const e=Jr(t);if(e){const t=l[e];if(t){const e=this.asset;e&&e.unsubscribe&&e.unsubscribe(this),t.subscribe(this)}}},t.cleanAsset=function(){const t=this.asset;if(t&&t.substring){const e=l[t];e&&(this.dirtyAsset=!1,e.subscribe(this))}},t.videoAction=function(t,...e){const i=this.asset;if(i&&"Video"===i.type)return i[t](...e)},t.videoPromiseAction=function(t,...e){const i=this.asset;return i&&"Video"===i.type?i[t](...e):Promise.reject("Asset not a video")},t.videoAddTextTrack=function(t,e,i){return this.videoAction("addTextTrack",t,e,i)},t.videoCaptureStream=function(){return this.videoAction("captureStream")},t.videoCanPlayType=function(t){return this.videoAction("canPlayType",t)},t.videoFastSeek=function(t){return this.videoAction("fastSeek",t)},t.videoLoad=function(){return this.videoAction("load")},t.videoPause=function(){return this.videoAction("pause")},t.videoPlay=function(){return this.videoPromiseAction("play")},t.videoSetMediaKeys=function(t){return this.videoPromiseAction("setMediaKeys",t)},t.videoSetSinkId=function(){return this.videoPromiseAction("setSinkId")},t.checkSpriteFrame=function(){const t=this.asset;if(t&&"Sprite"===t.type&&t.manifest){const e=this.copyArray;if(this.spriteIsRunning){const i=this.spriteLastFrameChange,s=this.spriteFrameDuration,n=Date.now();if(n>i+s){const i=t.manifest;if(i){const s=i[this.spriteTrack],r=s.length,o=this.spriteWillLoop;let a=this.spriteCurrentFrame;a=this.spriteForward?a+1:a-1,a<0&&(a=o?r-1:0),a>=r&&(a=o?0:r-1);const[l,h,c,u,d]=s[a];e.length=0,e.push(h,c,u,d),this.dirtyCopyStart=!1,this.dirtyCopyDimensions=!1;if(l!==(this.source.id||this.source.name)){const e=t.sourceHold[l];e&&(this.source=e)}this.spriteCurrentFrame=a,this.spriteLastFrameChange=n}}}else{const[i,s,n,r,o]=t.manifest[this.spriteTrack][this.spriteCurrentFrame],[a,l,h,c]=e;a===s&&l===n&&h===r&&c===o||(e.length=0,e.push(s,n,r,o),this.dirtyCopyStart=!1,this.dirtyCopyDimensions=!1)}}},t.playSprite=function(t,e,i,s,n){ut(t)&&(this.spriteFrameDuration=t),ut(e)&&(this.spriteWillLoop=e),ut(i)&&(this.spriteTrack=i),ut(s)&&(this.spriteForward=s),ut(n)&&(this.spriteCurrentFrame=n),this.spriteLastFrameChange=Date.now(),this.spriteIsRunning=!0},t.haltSprite=function(t,e,i,s,n){ut(t)&&(this.spriteFrameDuration=t),ut(e)&&(this.spriteWillLoop=e),ut(i)&&(this.spriteTrack=i),ut(s)&&(this.spriteForward=s),ut(n)&&(this.spriteCurrentFrame=n),this.spriteIsRunning=!1},t}H.SpriteAsset=SpriteAsset;const Pattern=function(t=q){return this.makeName(t.name),this.register(),this.set(this.defs),this.set(t),this};let io=Pattern.prototype=Object.create(Object.prototype);io.type="Pattern",io.lib="styles",io.isArtefact=!1,io.isAsset=!1,io=me(io),io=_i(io),io=eo(io);io.defs=at(io.defs,{}),io.packetObjects=ht(io.packetObjects,["asset"]),io.finalizePacketOut=function(t,e){if(Array.isArray(e.patternMatrix))t.patternMatrix=e.patternMatrix;else{let e=this.patternMatrix;e&&(t.patternMatrix=[e.a,e.b,e.c,e.d,e.e,e.f])}return t},io.kill=function(){let{name:t,asset:e,removeAssetOnKill:i}=this;return rt(e)&&e.unsubscribe(this),Object.entries(f).forEach((([e,i])=>{let s=i.state;if(s){let e=s.fillStyle,i=s.strokeStyle;rt(e)&&e.name===t&&(s.fillStyle=s.defs.fillStyle),rt(i)&&i.name===t&&(s.strokeStyle=s.defs.strokeStyle)}})),i&&(i.substring?e.kill(!0):e.kill()),this.deregister(),this},io.get=function(t){let e=this.source;if(0!==t.indexOf("video_")&&0!==t.indexOf("image_")||!e){let e=this.getters[t];if(e)return e.call(this);{let e,i=this.defs[t];return void 0!==i?(e=this[t],void 0!==e?e:i):undef}}return Wr.indexOf(t)>=0||wi.indexOf(t)>=0?e[t.substring(6)]:void 0},io.set=function(t=q){const e=Object.keys(t),i=e.length;if(i){const s=this.setters,n=this.source,r=this.defs;let o,a,l,h;for(a=0;a=0||Pi.indexOf(l)>=0)&&(n[l.substring(6)]=h);this.dirtyFilterIdentifier=!0}return this},io.getData=function(t,e){return this.dirtyAsset&&this.cleanAsset(),this.asset.checkSource(this.sourceNaturalWidth,this.sourceNaturalHeight),this.buildStyle(e)};const so=function(t){return!!t&&new Pattern(t)};H.Pattern=Pattern;const FontAttributes=function(t=q){return this.makeName(t.name),this.set(this.defs),this.set(t),this};let no=FontAttributes.prototype=Object.create(Object.prototype);no.type="FontAttributes",no.lib="fontattribute",no=me(no);no.defs=at(no.defs,{style:"normal",variant:"normal",weight:"normal",stretch:"normal",sizeValue:12,sizeMetric:"px",family:"sans-serif"});let ro=no.getters,oo=no.setters;no.deltaSetters,ro.size=function(){return this.sizeValue?`${this.sizeValue}${this.sizeMetric}`:this.sizeMetric},oo.size=function(t){if(ut(t)){let e,i,s,n=0,r="medium";t.indexOf("xx-small")>=0?r="xx-small":t.indexOf("x-small")>=0?r="x-small":t.indexOf("smaller")>=0?r="smaller":t.indexOf("small")>=0?r="small":t.indexOf("medium")>=0?r="medium":t.indexOf("xxx-large")>=0?r="xxx-large":t.indexOf("xx-large")>=0?r="xx-large":t.indexOf("x-large")>=0?r="x-large":t.indexOf("larger")>=0?r="larger":t.indexOf("large")>=0?r="large":(n=12,r="px");let o=t.match(/(\d+\.\d+|\d+|\.\d+)(rem|em|rlh|lh|ex|cap|ch|ic|%|vw|vh|vmax|vmin|vi|vb|in|cm|mm|Q|pc|pt|px)?/i);Array.isArray(o)?([e,i,s]=o,i&&s&&"."!=i&&(n=i,r=s)):(o=t.match(/\/(\d+\.\d+|\d+|\.\d+)(rem|em|rlh|lh|ex|cap|ch|ic|%|vw|vh|vmax|vmin|vi|vb|in|cm|mm|Q|pc|pt|px)?/i),Array.isArray(o)&&([e,i,s]=o,i&&s&&"."!=i&&(n=i,r=s))),n!==this.sizeValue&&(this.sizeValue=n,this.dirtyFont=!0),r!==this.sizeMetric&&(this.sizeMetric=r,this.dirtyFont=!0)}},oo.sizeValue=function(t){ut(t)&&t!==this.sizeValue&&(this.sizeValue=t,this.dirtyFont=!0)},oo.sizeMetric=function(t){ut(t)&&t!==this.sizeMetric&&(this.sizeMetric=t,this.dirtyFont=!0)},oo.font=function(t){ut(t)&&(oo.style.call(this,t),oo.variant.call(this,t),oo.weight.call(this,t),oo.stretch.call(this,t),oo.size.call(this,t),oo.family.call(this,t))},oo.style=function(t){if(ut(t)){let e="normal";e=t.indexOf("italic")>=0?"italic":e,e=t.indexOf("oblique")>=0?"oblique":e,e!==this.style&&(this.style=e,this.dirtyFont=!0)}},oo.variant=function(t){if(ut(t)){let e="normal";e=t.indexOf("small-caps")>=0?"small-caps":e,e!==this.variant&&(this.variant=e,this.dirtyFont=!0)}},oo.weight=function(t){if(ut(t)){let e="normal";t.toFixed?e=t:(e=t.indexOf("bold")>=0?"bold":e,e=t.indexOf("lighter")>=0?"lighter":e,e=t.indexOf("bolder")>=0?"bolder":e,e=t.indexOf(" 100 ")>=0?"100":e,e=t.indexOf(" 200 ")>=0?"200":e,e=t.indexOf(" 300 ")>=0?"300":e,e=t.indexOf(" 400 ")>=0?"400":e,e=t.indexOf(" 500 ")>=0?"500":e,e=t.indexOf(" 600 ")>=0?"600":e,e=t.indexOf(" 700 ")>=0?"700":e,e=t.indexOf(" 800 ")>=0?"800":e,e=t.indexOf(" 900 ")>=0?"900":e,e=/^\d00$/.test(t)?t:e),e!==this.weight&&(this.weight=e,this.dirtyFont=!0)}},oo.stretch=function(t){if(ut(t)){let e="normal";e=t.indexOf("semi-condensed")>=0?"semi-condensed":e,e=t.indexOf("condensed")>=0?"condensed":e,e=t.indexOf("extra-condensed")>=0?"extra-condensed":e,e=t.indexOf("ultra-condensed")>=0?"ultra-condensed":e,e=t.indexOf("semi-expanded")>=0?"semi-expanded":e,e=t.indexOf("expanded")>=0?"expanded":e,e=t.indexOf("extra-expanded")>=0?"extra-expanded":e,e=t.indexOf("ultra-expanded")>=0?"ultra-expanded":e,e!==this.stretch&&(this.stretch=e,this.dirtyFont=!0)}},no.rfsTestArray1=["italic","oblique","small-caps","normal","bold","lighter","bolder","ultra-condensed","extra-condensed","semi-condensed","condensed","ultra-expanded","extra-expanded","semi-expanded","expanded","xx-small","x-small","small","medium","xxx-large","xx-large","x-large","large"],no.rfsTestArray2=["0","1","2","3","4","5","6","7","8","9"],oo.family=function(t){if(ut(t)){let e="sans-serif",i=t.split(" "),s=i.length;1===s&&(e=t);let n=0,r=!0;for(;r;)if(n===s)r=!1;else{let t=i[n];t.length?this.rfsTestArray1.indexOf(t)>=0||this.rfsTestArray2.indexOf(t[0])>=0?n++:r=!1:n++}n0&&t!==this.scale&&(this.scale=t,this.dirtyFont=!0),e&&e.toFixed&&e>0&&e!==this.lineHeight&&(this.lineHeight=e,this.dirtyFont=!0);let s=this.host&&this.host.type&&"Cell"===this.host.type?this.host.name:"";i&&i.type&&"Cell"===i.type&&i.name!==s&&(this.host=i,this.dirtyFont=!0)},no.calculateSize=function(){if(this.host){let t,e,i,s,{scale:n,lineHeight:r,host:o,sizeValue:a,sizeMetric:l}=this;if(o.getComputedFontSizes())[t,e,i,s]=o.getComputedFontSizes();else if(["in","cm","mm","Q","pc","pt","px"].indexOf(l)<0)return this.dirtyFont=!0,"12px";isNaN(a)&&(a=12);let h=t;switch(l){case"rem":h=e*a;break;case"em":case"cap":case"ch":case"ic":h=t*a;break;case"rlh":h=e*r*a;break;case"lh":h=t*r*a;break;case"ex":h=t/2*a;break;case"%":h=t/100*a;break;case"vw":case"vi":h=i/100*a;break;case"vh":case"vb":h=s/100*a;break;case"vmax":h=Math.max(i,s)/100*a;break;case"vmin":h=Math.min(i,s)/100*a;break;case"in":h=96*a;break;case"cm":h=37.8*a;break;case"mm":h=3.78*a;break;case"Q":h=.95*a;break;case"pc":h=16*a;break;case"pt":h=1.33*a;break;case"px":h=a;break;case"xx-small":h=.6*t;break;case"x-small":h=.75*t;break;case"smaller":h=.8*t;break;case"small":h=.89*t;break;case"xxx-large":h=3*t;break;case"xx-large":h=2*t;break;case"x-large":h=1.5*t;break;case"larger":h=1.3*t;break;case"large":h=1.2*t}return h*n+"px"}return"12px"},no.buildFont=function(){this.dirtyFont=!1;let t="";"normal"!==this.style&&(t+=`${this.style} `),"normal"!==this.variant&&(t+=`${this.variant} `),"normal"!==this.weight&&(t+=`${this.weight} `),"normal"!==this.stretch&&(t+=`${this.stretch} `),t+=`${this.calculateSize()} `,t+=`${this.family}`;let e=hi();return e.engine.font=t,t=e.engine.font,ci(e),this.temperedFontString=t,t},no.update=function(t){return t&&this.set(t),this.getFontString()};H.FontAttributes=FontAttributes;const ao=document.createElement("div");ao.style.padding=0,ao.style.border=0,ao.style.margin=0,ao.style.height="auto",ao.style.lineHeight=1,ao.style.boxSizing="border-box",ao.innerHTML="|/}ÁÅþ§¶¿∑ƒ⌈⌊qwertyd0123456789QWERTY",ao.setAttribute("aria-hidden","true"),zt.appendChild(ao);const lo=document.createElement("textarea"),ho=(t,e)=>(t=parseFloat(t),nt(t)||(t=0),nt(e)||(e=0),parseFloat(t.toFixed(e))),co=(t,e)=>(t=parseFloat(t),nt(t)||(t=0),nt(e)||(e=0),Math.abs(parseFloat(t.toFixed(e)))),Phrase=function(t=q){return this.fontAttributes=function(t){return!!t&&new FontAttributes(t)}(q),this.entityInit(t),this.dirtyDimensions=!0,this.dirtyText=!0,this.dirtyFont=!0,this.dirtyPathObject=!0,this};let uo=Phrase.prototype=Object.create(Object.prototype);uo.type="Phrase",uo.lib="entity",uo.isArtefact=!0,uo.isAsset=!1,uo=me(uo),uo=tn(uo),uo.midInitActions=function(t){this.sectionStyles=[],this.sectionClasses=M};uo.defs=at(uo.defs,{text:"",width:"auto",exposeText:!0,lineHeight:1.15,letterSpacing:0,justify:"left",sectionClassMarker:"[§<>]",sectionClasses:null,overlinePosition:-.1,overlineStyle:"rgb(250 0 0)",overlineWidth:1,noOverlineGlyphs:"",underlinePosition:.6,underlineStyle:"rgb(250 0 0)",underlineWidth:1,noUnderlineGlyphs:"",highlightStyle:"rgb(250 218 94 / 0.4)",boundingBoxColor:"rgb(0 0 0 / 0.5)",showBoundingBox:!1,textPath:"",textPathPosition:0,textPathLoop:!0,addTextPathRoll:!0,textPathDirection:"ltr",treatWordAsGlyph:!1}),uo.packetExclusions=ht(uo.packetExclusions,["textPositions","textLines","textLineWidths","textLineWords","textGlyphs","textGlyphWidths","fontAttributes"]),uo.finalizePacketOut=function(t,e){let i=JSON.parse(this.state.saveAsPacket(e))[3];t=at(t,i);let s=JSON.parse(this.fontAttributes.saveAsPacket(e))[3];return delete s.name,t=at(t,s),t=this.handlePacketAnchor(t,e)},uo.factoryKill=function(){this.exposedTextHold&&this.exposedTextHold.remove()};let fo=uo.getters,po=uo.setters,mo=uo.deltaSetters;po.handleX=function(t){null!=t&&(this.handle[0]=t,this.dirtyHandle=!0,this.dirtyText=!0,this.dirtyPathObject=!0)},po.handleY=function(t){null!=t&&(this.handle[1]=t,this.dirtyHandle=!0,this.dirtyText=!0,this.dirtyPathObject=!0)},po.handle=function(t,e){this.setCoordinateHelper("handle",t,e),this.dirtyHandle=!0,this.dirtyText=!0,this.dirtyPathObject=!0},mo.handleX=function(t){let e=this.handle;e[0]=addStrings(e[0],t),this.dirtyHandle=!0,this.dirtyText=!0,this.dirtyPathObject=!0},mo.handleY=function(t){let e=this.handle;e[1]=addStrings(e[1],t),this.dirtyHandle=!0,this.dirtyText=!0,this.dirtyPathObject=!0},mo.handle=function(t,e){this.setDeltaCoordinateHelper("handle",t,e),this.dirtyHandle=!0,this.dirtyText=!0,this.dirtyPathObject=!0},fo.text=function(){return this.currentText||this.text||""},po.text=function(t){var e;this.text=(e=t).substring?e:e.toString,this.dirtyText=!0,this.dirtyPathObject=!0,this.dirtyDimensions=!0,this.dirtyFilterIdentifier=!0},uo.permittedJustifications=["left","right","center","full"],po.justify=function(t){this.permittedJustifications.indexOf(t)>=0&&(this.justify=t),this.dirtyText=!0,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},po.width=function(t){this.dimensions[0]=t,this.dirtyDimensions=!0,this.dirtyHandle=!0,this.dirtyPathObject=!0,this.dirtyText=!0},mo.width=function(t){let e=this.dimensions;e[0]=addStrings(e[0],t),this.dirtyDimensions=!0,this.dirtyHandle=!0,this.dirtyPathObject=!0,this.dirtyText=!0},po.scale=function(t){this.scale=t,this.dirtyDimensions=!0,this.dirtyHandle=!0,this.dirtyFont=!0,this.dirtyPathObject=!0,this.dirtyScale=!0},mo.scale=function(t){this.scale+=t,this.dirtyDimensions=!0,this.dirtyHandle=!0,this.dirtyFont=!0,this.dirtyPathObject=!0,this.dirtyScale=!0},po.lineHeight=function(t){this.lineHeight=co(t,3),this.lineHeight<.5&&(this.lineHeight=.5),this.dirtyPathObject=!0,this.dirtyText=!0,this.dirtyFilterIdentifier=!0},mo.lineHeight=function(t){this.lineHeight+=ho(t,3),this.lineHeight<.5&&(this.lineHeight=.5),this.dirtyPathObject=!0,this.dirtyText=!0,this.dirtyFilterIdentifier=!0},po.letterSpacing=function(t){this.letterSpacing=co(t,3),this.dirtyPathObject=!0,this.dirtyText=!0,this.dirtyFilterIdentifier=!0},mo.letterSpacing=function(t){this.letterSpacing+=ho(t,3),this.letterSpacing<0&&(this.letterSpacing=0),this.dirtyPathObject=!0,this.dirtyText=!0,this.dirtyFilterIdentifier=!0},po.overlinePosition=function(t){this.overlinePosition=ho(t,3),this.dirtyPathObject=!0,this.dirtyText=!0,this.dirtyFilterIdentifier=!0},mo.overlinePosition=function(t){this.overlinePosition+=ho(t,3),this.dirtyPathObject=!0,this.dirtyText=!0,this.dirtyFilterIdentifier=!0},po.noOverlineGlyphs=function(t){t.substring&&(this.noOverlineGlyphs=t)},po.underlinePosition=function(t){this.underlinePosition=ho(t,3),this.dirtyPathObject=!0,this.dirtyText=!0,this.dirtyFilterIdentifier=!0},mo.underlinePosition=function(t){this.underlinePosition+=ho(t,3),this.dirtyPathObject=!0,this.dirtyText=!0,this.dirtyFilterIdentifier=!0},po.noUnderlineGlyphs=function(t){t.substring&&(this.noUnderlineGlyphs=t)},po.textPath=function(t){this.textPath=t,this.dirtyHandle=!0,this.dirtyText=!0,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},po.textPathPosition=function(t){this.textPathLoop?(t<0&&(t=Math.abs(t)),t>1&&(t%=1),this.textPathPosition=parseFloat(t.toFixed(6))):this.textPathPosition=t,this.dirtyFilterIdentifier=!0},mo.textPathPosition=function(t){let e=this.textPathPosition+t;this.textPathLoop?(e<0&&(e+=1),e>1&&(e%=1),this.textPathPosition=parseFloat(e.toFixed(6))):this.textPathPosition=e,this.dirtyFilterIdentifier=!0},fo.font=function(){return this.fontAttributes.getFontString()},po.font=function(t){this.fontAttributes.set({font:t}),this.dirtyFont=!0,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},fo.style=function(){return this.fontAttributes.get("style")},po.style=function(t){this.fontAttributes.set({style:t}),this.dirtyFont=!0,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},fo.variant=function(){return this.fontAttributes.get("variant")},po.variant=function(t){this.fontAttributes.set({variant:t}),this.dirtyFont=!0,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},fo.weight=function(){return this.fontAttributes.get("weight")},po.weight=function(t){this.fontAttributes.set({weight:t}),this.dirtyFont=!0,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},fo.stretch=function(){return this.fontAttributes.get("stretch")},po.stretch=function(t){this.fontAttributes.set({stretch:t}),this.dirtyFont=!0,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},fo.size=function(){return this.fontAttributes.get("size")},po.size=function(t){this.fontAttributes.set({size:t}),this.dirtyFont=!0,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},fo.sizeValue=function(){return this.fontAttributes.get("sizeValue")},po.sizeValue=function(t){this.fontAttributes.set({sizeValue:t}),this.dirtyFont=!0,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},mo.sizeValue=function(t){this.fontAttributes.deltaSet({sizeValue:t}),this.dirtyFont=!0,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},fo.sizeMetric=function(){return this.fontAttributes.get("sizeMetric")},po.sizeMetric=function(t){this.fontAttributes.set({sizeMetric:t}),this.dirtyFont=!0,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},fo.family=function(){return this.fontAttributes.get("family")},po.family=function(t){this.fontAttributes.set({family:t}),this.dirtyFont=!0,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},uo.cleanDimensionsAdditionalActions=function(){if(this.fontAttributes.dirtyFont=!0,this.fontAttributes.updateMetadata(this.scale,this.lineHeight,this.getHost()),"auto"===this.dimensions[0]){this.buildText();let t=hi(),e=t.engine;e.font=this.fontAttributes.getFontString(),this.currentDimensions[0]=Math.ceil(e.measureText(this.currentText).width/this.scale),ci(t)}this.textLines?this.currentDimensions[1]=Math.ceil(this.textHeight*this.textLines.length*this.lineHeight/this.scale):this.dirtyDimensions=!0},uo.setSectionStyles=function(t){let e,i,s,n=new RegExp(this.sectionClassMarker),r=t.split(n),o=this.sectionStyles,a=this.sectionClasses,l="";return o.length=0,r.forEach((t=>{e=a[t],e?(i=l.length,s=o[i],s?Object.assign(s,e):o[i]=Object.assign({},e)):ut(t)&&(l+=t)})),l},uo.addSectionClass=function(t,e){return dt(t,e)&&t.substring&&rt(e)&&(this.sectionClasses[t]=e),this.dirtyText=!0,this.dirtyPathObject=!0,this},uo.removeSectionClass=function(t){return delete this.sectionClasses[t],this.dirtyText=!0,this.dirtyPathObject=!0,this},uo.getTextPath=function(){let t=this.textPath;return t&&t.substring&&(t=this.textPath=o[this.textPath],"Shape"===t.type&&t.useAsPath?t.pathed.push(this.name):t=this.path=!1),t},uo.cleanPathObject=function(){if(this.dirtyPathObject=!1,!this.noPathUpdates||!this.pathObject){this.dirtyFont&&this.fontAttributes&&(this.dirtyFont=!1,this.dirtyText=!0,this.dirtyMimicDimensions=!0,this.dirtyPositionSubscribers=!0),this.dirtyText&&this.buildText(),this.dirtyHandle&&this.cleanHandle();let t=this.pathObject=new Path2D,e=this.currentHandle,i=this.currentDimensions,s=this.currentScale,n=-e[0]*s,r=-e[1]*s,o=i[0]*s,a=i[1]*s;this.boxStartValues=[n,r],t.rect(n,r,o,a)}},uo.buildText=function(){this.dirtyText=!1;let t=this.convertTextEntityCharacters(this.text);if(t=this.setSectionStyles(t),this.currentText=t,isNaN(this.currentDimensions[0]))this.dirtyText=!0;else if(this.calculateTextPositions(t),this.exposeText){if(!this.exposedTextHold){let t=document.createElement("div");t.id=`${this.name}-text-hold`,t.setAttribute("aria-live","polite"),this.exposedTextHold=t,this.exposedTextHoldAttached=!1}if(this.exposedTextHold.textContent=t,!this.exposedTextHoldAttached&&this.currentHost){let t=this.getCanvasTextHold(this.currentHost);t&&t.textHold&&(t.textHold.appendChild(this.exposedTextHold),this.exposedTextHoldAttached=!0)}}},uo.getCanvasTextHold=function(t){return t&&"Cell"===t.type&&t.controller&&"Canvas"===t.controller.type&&t.controller.textHold?t.controller:!(!t||"Cell"!==t.type||!t.currentHost)&&this.getCanvasTextHold(t.currentHost)},uo.convertTextEntityCharacters=function(t){let e=t.trim();return e=e.replace(/[\s\uFEFF\xA0]+/g," "),lo.innerHTML=e,lo.value},uo.calculateTextPositions=function(t){const e=function(t){if(!H)return M.dirtyPathObject=!0,M.dirtyText=!0,"black";if(t.substring){let e=!1;if(R.indexOf(t)>=0?e=D[t]:d.indexOf(t)>=0&&(e=u[t]),e)return e}return t};let i,s,n,r,o,a,l,h,c,f,p,m,g,y,b,S,k,A,O,v,x,C,w,P,F=hi(),E=F.engine,M=this,H=!(!this.group||!this.group.getHost)&&this.group.getHost(),I=[],B=[],T=[],L=[],$=[],j=[],X=[],Y=this.getTextPath(),N=this.fontAttributes,G=N.clone({}),z=this.sectionStyles,W=this.state,V={},Z=[],_=this.currentScale,U=this.currentDimensions,K=U[0]*_,q=this.treatWordAsGlyph,Q=this.lineHeight,J=this.justify;N.updateMetadata(_,Q,H),G.updateMetadata(_,Q,H);let tt=N.getFontString(),et=e(W.fillStyle),it=e(W.strokeStyle),st=this.letterSpacing*_,nt=tt,rt=et,ot=it,at=st;this.highlightStyle&&e(this.highlightStyle);let lt=!1;this.underlineStyle&&e(this.underlineStyle),this.underlinePosition;let ht=!1;this.overlineStyle&&e(this.overlineStyle),this.overlinePosition;let ct=!1,dt=0;for(i=q?t.split(" "):t.split(""),Z.push(nt),f=0,p=i.length;f{E.font=t;let e=E.measureText("|/}ÁÅþ§¶¿∑ƒ⌈⌊qwertyd0123456789QWERTY");null!=e.actualBoundingBoxAscent&&null!=e.actualBoundingBoxDescent?V[t]=Math.ceil(e.actualBoundingBoxAscent+e.actualBoundingBoxDescent):(ao.style.font=t,r=ao.clientHeight,V[t]=r)})),E.restore(),dt=Math.max(...Object.values(V)),x=v=o=a=0,f=0,p=$.length;fk&&!n[0]&&(j[f]-=b-k));for(f=0,p=$.length;f=K&&ot+e),0),T.push(b),v-=b,o=a+1),f+1===p&&(v===x?(y=t,B.push(y),L.push(q?y.split(" ").length-1:y.split(" ").length),T.push(x)):(y=i.slice(o).join(""),B.push(y),b=q?y.split(" ").length-1:y.split(" ").length,L.push(b),b=I.slice(o).reduce(((t,e)=>t+e),0),T.push(b))),ut(S[3])&&(lt=S[3]),ut(S[4])&&(ht=S[4]),ut(S[5])&&(ct=S[5]),S[3]=lt,S[4]=ht,S[5]=ct;if(_<=0&&(_=1),U[1]=Math.ceil(dt*B.length*Q/_),this.cleanHandle(),this.dirtyHandle=!1,C=this.currentHandle,w=-C[0]*_,P=-C[1]*_,!Y)if("full"===J)for(l=0,h=P,f=0,p=T.length;f1?(K-T[f])/(L[f]-1):0,m=0,g=B[f].length;m1||n<0)&&(n=n>.5?n-1:n+1),t[10]=n<=1&&n>=0&&r.getPathPositionData(n,f),t[9]=s,h?c+=s/o:c-=s/o,d&&(c>1||c<0)&&(c=c>.5?c-1:c+1)}},uo.preStamper=function(t,e,i,s){const n=function(e){return e.getData?e.getData(i,t):e};let[r,o,a,l,h,c,...u]=s;if(r&&(e.font=r),l||h||c){let{highlightStyle:t,textHeight:s,underlineStyle:r,underlineWidth:o,underlinePosition:a,noUnderlineGlyphs:d,overlineStyle:f,overlineWidth:p,overlinePosition:m,noOverlineGlyphs:g}=i;e.save(),l&&(e.fillStyle=n(t),e.fillRect(u[1],u[2],u[3],s)),h&&d.indexOf(u[0])<0&&(e.fillStyle=n(r),e.fillRect(u[1],u[2]+s*a,u[3],o)),c&&(e.fillStyle=n(f),e.fillRect(u[1],u[2]+s*m,u[3],p)),e.restore()}return o&&(e.strokeStyle=n(o)),a&&(e.fillStyle=n(a)),u},uo.stamper={draw:function(t,e,i){t.strokeText(...i)},fill:function(t,e,i){t.fillText(...i)},drawAndFill:function(t,e,i){t.strokeText(...i),t.fillText(...i),e.currentHost.clearShadow(),t.strokeText(...i),t.fillText(...i),e.currentHost.restoreShadow(e)},fillAndDraw:function(t,e,i){t.fillText(...i),t.strokeText(...i),e.currentHost.clearShadow(),t.fillText(...i),t.strokeText(...i),e.currentHost.restoreShadow(e)},drawThenFill:function(t,e,i){t.strokeText(...i),t.fillText(...i)},fillThenDraw:function(t,e,i){t.fillText(...i),t.strokeText(...i)},clear:function(t,e,i){let s=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",t.fillText(...i),t.globalCompositeOperation=s}},uo.drawBoundingBox=function(t){t.save(),t.strokeStyle=this.boundingBoxColor,t.lineWidth=1,t.globalCompositeOperation="source-over",t.globalAlpha=1,t.shadowOffsetX=0,t.shadowOffsetY=0,t.shadowBlur=0,t.stroke(this.pathObject),t.restore()},uo.performRotation=function(t){let e=this.currentHost;if(e){let[i,s]=this.currentStampPosition;e.rotateDestination(t,i,s,this)}};const go=function(t){return!!t&&new Phrase(t)};H.Phrase=Phrase;const Picture=function(t=q){return this.copyStart=mi(),this.currentCopyStart=mi(),this.copyDimensions=mi(),this.currentCopyDimensions=mi(),this.copyArray=[],this.pasteArray=[],this.entityInit(t),t.copyStart||(t.copyStartX||(this.copyStart[0]=0),t.copyStartY||(this.copyStart[1]=0)),t.copyDimensions||(t.copyWidth||(this.copyDimensions[0]=1),t.copyHeight||(this.copyDimensions[1]=1)),this.imageSubscribers=[],this.dirtyCopyStart=!0,this.dirtyCopyDimensions=!0,this.dirtyImage=!0,this};let yo=Picture.prototype=Object.create(Object.prototype);yo.type="Picture",yo.lib="entity",yo.isArtefact=!0,yo.isAsset=!1,yo=me(yo),yo=tn(yo),yo=eo(yo);yo.defs=at(yo.defs,{copyStart:null,copyDimensions:null,checkHitIgnoreTransparency:!1}),yo.packetCoordinates=ht(yo.packetCoordinates,["copyStart","copyDimensions"]),yo.packetObjects=ht(yo.packetObjects,["asset"]),yo.factoryKill=function(t=!1){let{asset:e,removeAssetOnKill:i}=this;rt(e)&&(e.unsubscribe(this),i&&e.kill(!0))};let bo=yo.getters,So=yo.setters,ko=yo.deltaSetters;bo.copyStart=function(){return[].concat(this.currentCopyStart)},bo.copyStartX=function(){return this.currentCopyStart[0]},bo.copyStartY=function(){return this.currentCopyStart[1]},So.copyStartX=function(t){null!=t&&(this.copyStart[0]=t,this.dirtyCopyStart=!0,this.dirtyImageSubscribers=!0,this.dirtyFilterIdentifier=!0)},So.copyStartY=function(t){null!=t&&(this.copyStart[1]=t,this.dirtyCopyStart=!0,this.dirtyImageSubscribers=!0,this.dirtyFilterIdentifier=!0)},So.copyStart=function(t,e){this.setCoordinateHelper("copyStart",t,e),this.dirtyCopyStart=!0,this.dirtyImageSubscribers=!0,this.dirtyFilterIdentifier=!0},ko.copyStartX=function(t){let e=this.copyStart;e[0]=G(e[0],t),this.dirtyCopyStart=!0,this.dirtyImageSubscribers=!0,this.dirtyFilterIdentifier=!0},ko.copyStartY=function(t){let e=this.copyStart;e[1]=G(e[1],t),this.dirtyCopyStart=!0,this.dirtyFilterIdentifier=!0},ko.copyStart=function(t,e){this.setDeltaCoordinateHelper("copyStart",t,e),this.dirtyCopyStart=!0,this.dirtyImageSubscribers=!0,this.dirtyFilterIdentifier=!0},bo.copyWidth=function(){return this.currentCopyDimensions[0]},bo.copyHeight=function(){return this.currentCopyDimensions[1]},bo.copyDimensions=function(t,e){return[].concat(this.currentCopyDimensions)},So.copyWidth=function(t){null!=t&&(this.copyDimensions[0]=t,this.dirtyCopyDimensions=!0,this.dirtyImageSubscribers=!0,this.dirtyFilterIdentifier=!0)},So.copyHeight=function(t){null!=t&&(this.copyDimensions[1]=t,this.dirtyCopyDimensions=!0,this.dirtyImageSubscribers=!0,this.dirtyFilterIdentifier=!0)},So.copyDimensions=function(t,e){this.setCoordinateHelper("copyDimensions",t,e),this.dirtyCopyDimensions=!0,this.dirtyImageSubscribers=!0,this.dirtyFilterIdentifier=!0},ko.copyWidth=function(t){let e=this.copyDimensions;e[0]=G(e[0],t),this.dirtyCopyDimensions=!0,this.dirtyImageSubscribers=!0,this.dirtyFilterIdentifier=!0},ko.copyHeight=function(t){let e=this.copyDimensions;e[1]=G(e[1],t),this.dirtyCopyDimensions=!0,this.dirtyImageSubscribers=!0,this.dirtyFilterIdentifier=!0},ko.copyDimensions=function(t,e){this.setDeltaCoordinateHelper("copyDimensions",t,e),this.dirtyCopyDimensions=!0,this.dirtyImageSubscribers=!0,this.dirtyFilterIdentifier=!0},So.checkHitIgnoreTransparency=function(t){this.checkHitIgnoreTransparency=t,t&&(this.stashOutput=!0)},yo.get=function(t){let e=this.source;if(0!==t.indexOf("video_")&&0!==t.indexOf("image_")||!e){let e=this.getters[t];if(e)return e.call(this);{let e,i=this.defs[t],s=this.state;return void 0!==i?(e=this[t],void 0!==e?e:i):(i=s.defs[t],void 0!==i?(e=s[t],void 0!==e?e:i):undef)}}return Wr.indexOf(t)>=0||wi.indexOf(t)>=0?e[t.substring(6)]:void 0},yo.set=function(t=q){const e=Object.keys(t),i=e.length;if(i){const s=this.setters,n=this.defs,r=this.source,o=this.state,a=o?o.setters:q,l=o?o.defs:q;let h,c,u,d;for(c=0;c=0||Pi.indexOf(u)>=0)&&(r[u.substring(6)]=d)}return this},yo.updateImageSubscribers=function(){this.dirtyImageSubscribers=!1,this.imageSubscribers.length&&this.imageSubscribers.forEach((t=>{let e=o[t];e&&(e.dirtyInput=!0)}))},yo.imageSubscribe=function(t){t&&t.substring&&ht(this.imageSubscribers,t)},yo.imageUnsubscribe=function(t){t&&t.substring&&ct(this.imageSubscribers,t)},yo.cleanImage=function(){let t=this.sourceNaturalWidth,e=this.sourceNaturalHeight;if(dt(t,e)&&t>0&&e>0){this.dirtyImage=!1;let i=this.currentCopyStart,s=i[0],n=i[1],r=this.currentCopyDimensions,o=r[0],a=r[1];s+o>t&&(i[0]=t-o),n+a>e&&(i[1]=e-a);let l=this.copyArray;l.length=0,l.push(i[0],i[1],o,a)}},yo.cleanCopyStart=function(){let t=this.sourceNaturalWidth,e=this.sourceNaturalHeight;if(dt(t,e)&&t>0&&e>0){this.dirtyCopyStart=!1,this.cleanPosition(this.currentCopyStart,this.copyStart,[t,e]);let i=this.currentCopyStart,s=i[0],n=i[1];(s<0||s>t)&&(i[0]=s<0?0:t-1),(n<0||n>e)&&(i[1]=n<0?0:e-1),this.dirtyImage=!0}},yo.cleanCopyDimensions=function(){let t=this.sourceNaturalWidth,e=this.sourceNaturalHeight;if(dt(t,e)&&t>0&&e>0){this.dirtyCopyDimensions=!1;let i=this.copyDimensions,s=this.currentCopyDimensions,n=i[0],r=i[1];n.substring?s[0]=parseFloat(n)/100*t:s[0]=n,r.substring?s[1]=parseFloat(r)/100*e:s[1]=r;let o=s[0],a=s[1];(o<=0||o>t)&&(s[0]=o<=0?1:t),(a<=0||a>e)&&(s[1]=a<=0?1:e),this.dirtyImage=!0}},yo.prepareStamp=function(){this.dirtyAsset&&this.cleanAsset(),this.asset&&("Sprite"===this.asset.type?this.checkSpriteFrame(this):this.asset.checkSource?this.asset.checkSource(this.sourceNaturalWidth,this.sourceNaturalHeight):this.dirtyAsset=!0),(this.dirtyDimensions||this.dirtyHandle||this.dirtyScale)&&(this.dirtyPaste=!0),(this.dirtyScale||this.dirtyDimensions||this.dirtyStart||this.dirtyOffset||this.dirtyHandle)&&(this.dirtyPathObject=!0),this.dirtyScale&&this.cleanScale(),this.dirtyDimensions&&this.cleanDimensions(),this.dirtyLock&&this.cleanLock(),this.dirtyStart&&this.cleanStart(),this.dirtyOffset&&this.cleanOffset(),this.dirtyHandle&&this.cleanHandle(),this.dirtyRotation&&this.cleanRotation(),(this.isBeingDragged||this.lockTo.indexOf("mouse")>=0||this.lockTo.indexOf("particle")>=0)&&(this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtyStampHandlePositions&&this.cleanStampHandlePositions(),this.dirtyCopyStart&&this.cleanCopyStart(),this.dirtyCopyDimensions&&this.cleanCopyDimensions(),this.dirtyImage&&this.cleanImage(),this.dirtyPaste&&this.preparePasteObject(),this.dirtyPathObject&&this.cleanPathObject(),this.dirtyPositionSubscribers&&this.updatePositionSubscribers(),this.dirtyImageSubscribers&&this.updateImageSubscribers()},yo.preparePasteObject=function(){this.dirtyPaste=!1;let t=this.currentStampHandlePosition,e=this.currentDimensions,i=this.currentScale,s=-t[0]*i,n=-t[1]*i,r=e[0]*i,o=e[1]*i,a=this.pasteArray;a.length=0,a.push(s,n,r,o),this.dirtyPathObject=!0},yo.cleanPathObject=function(){if(this.dirtyPathObject=!1,!this.noPathUpdates||!this.pathObject)if(this.pasteArray&&4===this.pasteArray.length||this.preparePasteObject(),4!==this.pasteArray.length)this.dirtyPathObject=!0;else{(this.pathObject=new Path2D).rect(...this.pasteArray)}},yo.draw=function(t){t.stroke(this.pathObject)},yo.fill=function(t){let[e,i,s,n]=this.copyArray;this.source&&s&&n&&t.drawImage(this.source,...this.copyArray,...this.pasteArray)},yo.drawAndFill=function(t){let[e,i,s,n]=this.copyArray;this.source&&s&&n&&(t.stroke(this.pathObject),t.drawImage(this.source,...this.copyArray,...this.pasteArray),this.currentHost.clearShadow(),t.stroke(this.pathObject),t.drawImage(this.source,...this.copyArray,...this.pasteArray))},yo.fillAndDraw=function(t){let[e,i,s,n]=this.copyArray;this.source&&s&&n&&(t.drawImage(this.source,...this.copyArray,...this.pasteArray),t.stroke(this.pathObject),this.currentHost.clearShadow(),t.drawImage(this.source,...this.copyArray,...this.pasteArray),t.stroke(this.pathObject)),t.stroke(this.pathObject)},yo.drawThenFill=function(t){let[e,i,s,n]=this.copyArray;this.source&&s&&n&&(t.stroke(this.pathObject),t.drawImage(this.source,...this.copyArray,...this.pasteArray))},yo.fillThenDraw=function(t){let[e,i,s,n]=this.copyArray;this.source&&s&&n&&(t.drawImage(this.source,...this.copyArray,...this.pasteArray),t.stroke(this.pathObject))},yo.checkHitReturn=function(t,e,i){if(this.checkHitIgnoreTransparency&&i&&i.engine){let[s,n,r,o]=this.copyArray,[a,l,h,c]=this.pasteArray,[u,d]=this.currentStampPosition,f=4*((e-d)*h+(t-u))+3;return!!i.engine.getImageData(s,n,r,o).data[f]&&{x:t,y:e,artefact:this}}return{x:t,y:e,artefact:this}};const Ao=function(t){return!!t&&new Picture(t)};H.Picture=Picture;const Polygon=function(t=q){return this.shapeInit(t),this};let Oo=Polygon.prototype=Object.create(Object.prototype);Oo.type="Polygon",Oo.lib="entity",Oo.isArtefact=!0,Oo.isAsset=!1,Oo=me(Oo),Oo=hn(Oo);Oo.defs=at(Oo.defs,{sides:0,sideLength:0,radius:0});let vo=Oo.setters,xo=Oo.deltaSetters;vo.sides=function(t){this.sides=t,this.updateDirty()},xo.sides=function(t){this.sides+=t,this.updateDirty()},vo.sideLength=function(t){this.sideLength=t,this.updateDirty()},xo.sideLength=function(t){this.sideLength+=t,this.updateDirty()},vo.radius=function(t){this.radius=t,this.updateDirty()},xo.radius=function(t){this.radius+=t,this.updateDirty()},Oo.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makePolygonPath(),this.pathDefinition=t},Oo.makePolygonPath=function(){let t,e,i,s=this.sideLength||this.radius,n=this.sides,r=360/n,o="",a=[],l=0,h=is({x:0,y:-s});for(let t=0;t{if("pins"===e){let e=[];t.pins.forEach((t=>{rt(t)?e.push(t.name):Array.isArray(t)?e.push([].concat(t)):e.push(t)})),t.pins=e}})),t};let Po=wo.getters,Do=wo.setters,Ro=wo.deltaSetters;Po.pins=function(t){return ut(t)?this.getPinAt(t):this.currentPins.concat()},Do.pins=function(t){if(ut(t)){let e=this.pins;if(Array.isArray(t))e.forEach(((t,e)=>this.removePinAt(e))),e.length=0,e.push(...t),this.updateDirty();else if(rt(t)&&ut(t.index)){let i=e[t.index];Array.isArray(i)&&(ut(t.x)&&(i[0]=t.x),ut(t.y)&&(i[1]=t.y),this.updateDirty())}}},Ro.pins=function(t){if(ut(t)){let e=this.pins;if(rt(t)&&ut(t.index)){let i=e[t.index];Array.isArray(i)&&(ut(t.x)&&(i[0]=addStrings(i[0],t.x)),ut(t.y)&&(i[1]=addStrings(i[1],t.y)),this.updateDirty())}}},Do.tension=function(t){t.toFixed&&(this.tension=t,this.updateDirty())},Ro.tension=function(t){t.toFixed&&(this.tension+=t,this.updateDirty())},Do.closed=function(t){this.closed=t,this.updateDirty()},Do.mapToPins=function(t){this.mapToPins=t,this.updateDirty()},Do.flipUpend=function(t){this.flipUpend=t,this.updateDirty()},Do.flipReverse=function(t){this.flipReverse=t,this.updateDirty()},Do.useAsPath=function(t){this.useAsPath=t,this.updateDirty()},Do.pivot=function(t){if(tt(t)&&!t)this.pivot=null,"pivot"===this.lockTo[0]&&(this.lockTo[0]="start"),"pivot"===this.lockTo[1]&&(this.lockTo[1]="start"),this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0;else{let e=this.pivot,i=t.substring?o[t]:t,s=this.name;i&&i.name&&(e&&e.name!==i.name&&ct(e.pivoted,s),ht(i.pivoted,s),this.pivot=i,this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0)}this.updateDirty()},wo.updateDirty=function(){this.dirtySpecies=!0,this.dirtyPathObject=!0,this.dirtyPins=!0},wo.getPinAt=function(t){let e=Math.floor(t);if(this.useAsPath){let t=this.getPathPositionData(this.unitPartials[e]);return[t.x,t.y]}{let t,i,s=this.currentPins,n=s[e],[r,o,a,l]=this.localBox,[h,c]=n,[u,d]=s[0],[f,p]=this.localOffset,[m,g]=this.currentStampPosition;return this.mapToPins?(t=h-u+r,i=c-u+o):(t=h-f,i=c-p),[m+t,g+i]}},wo.updatePinAt=function(t,e){if(dt(t,e)){e=Math.floor(e);let i=this.pins;if(e=0){let s=i[e];rt(s)&&s.pivoted&&ct(s.pivoted,this.name),i[e]=t,this.updateDirty()}}},wo.removePinAt=function(t){t=Math.floor(t);let e=this.pins;if(t=0){let i=e[t];rt(i)&&i.pivoted&&ct(i.pivoted,this.name),e[t]=null,this.updateDirty()}},wo.prepareStamp=function(){this.dirtyHost&&(this.dirtyHost=!1),this.useParticlesAsPins&&(this.dirtyPins=!0),(this.dirtyPins||this.dirtyLock)&&(this.dirtySpecies=!0),(this.dirtyScale||this.dirtySpecies||this.dirtyDimensions||this.dirtyStart||this.dirtyHandle)&&(this.dirtyPathObject=!0,(this.dirtyScale||this.dirtySpecies)&&(this.pathCalculatedOnce=!1)),(this.isBeingDragged||this.lockTo.indexOf("mouse")>=0||this.lockTo.indexOf("particle")>=0)&&(this.dirtyStampPositions=!0),this.dirtyScale&&this.cleanScale(),this.dirtyStart&&this.cleanStart(),this.dirtyOffset&&this.cleanOffset(),this.dirtyRotation&&this.cleanRotation(),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtySpecies&&this.cleanSpecies(),this.dirtyPathObject&&(this.cleanPathObject(),this.updatePathSubscribers()),this.dirtyPositionSubscribers&&this.updatePositionSubscribers()},wo.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makePolylinePath(),this.pathDefinition=t},wo.getPathParts=function(t,e,i,s,n,r,o){let a=Math.sqrt,l=Math.pow,h=a(l(i-t,2)+l(s-e,2)),c=a(l(n-i,2)+l(r-s,2)),u=o*h/(h+c),d=o*c/(h+c);return[i-u*(n-t),s-u*(r-e),i,s,i+d*(n-t),s+d*(r-e)]},wo.buildLine=function(t,e,i){let s="m0,0l";for(let n=2;n2&&(t=i[r],e=i[r+1],n=0);return s},wo.cleanCoordinate=function(t,e){return t.toFixed?t:"left"===t||"top"===t?0:"right"===t||"bottom"===t?e:"center"===t?e/2:parseFloat(t)/100*e},wo.cleanPinsArray=function(){this.dirtyPins=!1;let t=this.pins,e=this.currentPins;if(e.length=0,this.useParticlesAsPins)t.forEach(((i,s)=>{let n;i&&i.substring?(n=b[i],n&&(t[s]=n)):n=i;let r=!(!n||!n.position)&&n.position;r&&e.push([r.x,r.y])})),e.length||(this.dirtyPins=!0);else{let i,s,n,r=1,a=1,l=this.getHost(),h=this.cleanCoordinate;l&&(n=l.currentDimensions,n&&([r,a]=n)),t.forEach(((n,l)=>{let c;if(n&&n.substring?(c=o[n],t[l]=c):c=n,c)if(Array.isArray(c))[i,s]=c,e.push([h(i,r),h(s,a)]);else if(rt(c)&&c.currentStart){let t=this.name;c.pivoted.indexOf(t)<0&&ht(c.pivoted,t),e.push([...c.currentStampPosition])}}))}if(e.length){let t=e[0][0],i=e[0][1];e.forEach((e=>{e[0]{let e=o[t];e&&(e.dirtyStart=!0)}))};const Fo=function(t){return!!t&&(t.species="polyline",new Polyline(t))};H.Polyline=Polyline;const Quadratic=function(t=q){return this.control=mi(),this.currentControl=mi(),this.controlLockTo="coord",this.curveInit(t),this.shapeInit(t),this.dirtyControl=!0,this};let Eo=Quadratic.prototype=Object.create(Object.prototype);Eo.type="Quadratic",Eo.lib="entity",Eo.isArtefact=!0,Eo.isAsset=!1,Eo=me(Eo),Eo=hn(Eo),Eo=un(Eo);Eo.defs=at(Eo.defs,{control:null,controlPivot:"",controlPivotCorner:"",addControlPivotHandle:!1,addControlPivotOffset:!1,controlPath:"",controlPathPosition:0,addControlPathHandle:!1,addControlPathOffset:!0,controlParticle:"",controlLockTo:""}),Eo.packetExclusions=ht(Eo.packetExclusions,[]),Eo.packetExclusionsByRegex=ht(Eo.packetExclusionsByRegex,[]),Eo.packetCoordinates=ht(Eo.packetCoordinates,["control"]),Eo.packetObjects=ht(Eo.packetObjects,["controlPivot","controlPath"]),Eo.packetFunctions=ht(Eo.packetFunctions,[]);let Mo=Eo.getters,Ho=Eo.setters,Io=Eo.deltaSetters;Ho.controlPivot=function(t){this.setControlHelper(t,"controlPivot","control"),this.updateDirty(),this.dirtyControl=!0},Ho.controlParticle=function(t){this.setControlHelper(t,"controlParticle","control"),this.updateDirty(),this.dirtyControl=!0},Ho.controlPath=function(t){this.setControlHelper(t,"controlPath","control"),this.updateDirty(),this.dirtyControl=!0,this.currentControlPathData=!1},Ho.controlPathPosition=function(t){this.controlPathPosition=t,this.dirtyControl=!0,this.currentControlPathData=!1,this.dirtyFilterIdentifier=!0},Io.controlPathPosition=function(t){this.controlPathPosition+=t,this.dirtyControl=!0,this.currentControlPathData=!1,this.dirtyFilterIdentifier=!0},Mo.controlPositionX=function(){return this.currentControl[0]},Mo.controlPositionY=function(){return this.currentControl[1]},Mo.controlPosition=function(){return[].concat(this.currentControl)},Ho.controlX=function(t){null!=t&&(this.control[0]=t,this.updateDirty(),this.dirtyControl=!0,this.currentControlPathData=!1)},Ho.controlY=function(t){null!=t&&(this.control[1]=t,this.updateDirty(),this.dirtyControl=!0,this.currentControlPathData=!1)},Ho.control=function(t,e){this.setCoordinateHelper("control",t,e),this.updateDirty(),this.dirtyControl=!0,this.currentControlPathData=!1},Io.controlX=function(t){let e=this.control;e[0]=G(e[0],t),this.updateDirty(),this.dirtyControl=!0,this.currentControlPathData=!1},Io.controlY=function(t){let e=this.control;e[1]=G(e[1],t),this.updateDirty(),this.dirtyControl=!0,this.currentControlPathData=!1},Io.control=function(t,e){this.setDeltaCoordinateHelper("control",t,e),this.updateDirty(),this.dirtyControl=!0,this.currentControlPathData=!1},Ho.controlLockTo=function(t){this.controlLockTo=t,this.updateDirty(),this.dirtyControlLock=!0,this.currentControlPathData=!1},Eo.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeQuadraticPath(),this.pathDefinition=t},Eo.makeQuadraticPath=function(){let[t,e]=this.currentStampPosition,[i,s]=this.currentControl,[n,r]=this.currentEnd;return`m0,0q${(i-t).toFixed(2)},${(s-e).toFixed(2)} ${(n-t).toFixed(2)},${(r-e).toFixed(2)}`},Eo.cleanDimensions=function(){this.dirtyDimensions=!1,this.dirtyHandle=!0,this.dirtyOffset=!0,this.dirtyStart=!0,this.dirtyControl=!0,this.dirtyEnd=!0,this.dirtyFilterIdentifier=!0},Eo.preparePinsForStamp=function(){const t=this.dirtyPins,e=this.endPivot,i=this.endPath,s=this.controlPivot,n=this.controlPath;for(let r,o=0,a=t.length;o{if(nt(t))return t;switch(t){case"top":case"left":return 0;case"bottom":case"right":return e;case"center":return e/2;default:return t=parseFloat(t),nt(t)?t/100*e:0}};this.currentStartRadius=t?e(this.startRadius,t):this.defs.startRadius,this.currentEndRadius=t?e(this.endRadius,t):this.defs.endRadius},To.buildStyle=function(t){if(t){let e=t.engine;if(e){let t=e.createRadialGradient(...this.gradientArgs);return this.addStopsToGradient(t,this.paletteStart,this.paletteEnd,this.cyclePalette)}}return"rgb(0 0 0 / 0)"},To.updateGradientArgs=function(t,e){let i=this.gradientArgs,s=this.currentStart,n=this.currentEnd,r=this.currentStartRadius,o=this.currentEndRadius,a=s[0]+t,l=s[1]+e,h=n[0]+t,c=n[1]+e;a===h&&l===c&&r===o&&o++,i.length=0,i.push(a,l,r,h,c,o)};const Xo=function(t){return!!t&&new RadialGradient(t)};H.RadialGradient=RadialGradient;const RawAsset=function(t=q){this.makeName(t.name),this.register(),this.subscribers=[],this.set(this.defs),this.updateSource=Z;let e=t.keytypes||{};t.userAttributes&&t.userAttributes.forEach((t=>{this.addAttribute(t),t.type&&(e[t.key]=t.type)})),this.initializeAttributes(e),this.set(t);let i=document.createElement("canvas");return i.width=0,i.height=0,this.element=i,this.engine=i.getContext("2d",{willReadFrequently:!0}),t.subscribe&&this.subscribers.push(t.subscribe),this};let Yo=RawAsset.prototype=Object.create(Object.prototype);Yo.type="RawAsset",Yo.lib="asset",Yo.isArtefact=!1,Yo.isAsset=!0,Yo=me(Yo),Yo=Oi(Yo);Yo.defs=at(Yo.defs,{keytypes:null,data:null,updateSource:null}),Yo.saveAsPacket=function(){return[this.name,this.type,this.lib,{}]},Yo.stringifyFunction=Z,Yo.processPacketOut=Z,Yo.finalizePacketOut=Z,Yo.clone=U;let No=Yo.getters,Go=Yo.setters,zo=Yo.deltaSetters;Go.source=Z,Go.element=Z,Go.engine=Z,Go.data=function(t){t&&(this.data=t,this.dirtyData=!0)},Go.updateSource=function(t){t&&st(t)&&(this.updateSource=t,this.dirtyData=!0)},Yo.checkSource=function(t,e){this.source||(this.source=this.element);let i=this.source;if(i){let s=!1;this.dirtyData&&(this.dirtyData=!1,this.updateSource(this),s=!0),this.sourceLoaded=!0,this.sourceNaturalWidth&&this.sourceNaturalHeight&&this.sourceNaturalWidth===t&&this.sourceNaturalHeight===e||(this.sourceNaturalWidth=i.width,this.sourceNaturalHeight=i.height,s=!0),s&&this.sourceNaturalWidth&&this.sourceNaturalHeight&&this.notifySubscribers()}else this.sourceLoaded=!1},Yo.subscribeAction=function(t={}){this.subscribers.push(t),t.asset=this,t.source=this.element,this.notifySubscriber(t)},Yo.addAttribute=function(t=q){let{key:e,defaultValue:i,setter:s,deltaSetter:n,getter:r}=t;return e&&e.substring&&(this.defs[e]=ut(i)?i:null,this[e]=ut(i)?i:null,st(s)&&(Go[e]=s),st(n)&&(zo[e]=n),st(r)&&(No[e]=r)),this},Yo.removeAttribute=function(t){return t&&t.substring&&(delete this.defs[t],delete this[t],delete No[t],delete Go[t],delete zo[t]),this},Yo.initializeAttributes=function(t){for(let[e,i]of Object.entries(t))switch(i){case"Quaternion":this[e]=makeQuaternion();break;case"Vector":this[e]=makeVector();break;case"Coordinate":this[e]=makeCoordinate()}};const Wo=function(t){return!!t&&new RawAsset(t)};H.RawAsset=RawAsset;const RdAsset=function(t=q){return this.makeName(t.name),this.register(),this.installElement(this.name),this.subscribers=[],this.set(this.defs),this.set(t),t.subscribe&&this.subscribers.push(t.subscribe),this.currentGeneration=0,this.dataArrays=[],this.dirtyScene=!0,this.dirtyOutput=!0,this};let Vo=RdAsset.prototype=Object.create(Object.prototype);Vo.type="RdAsset",Vo.lib="asset",Vo.isArtefact=!1,Vo.isAsset=!0,Vo=me(Vo),Vo=Oi(Vo),Vo=Mr(Vo),Vo=_i(Vo);Vo.defs=at(Vo.defs,{width:300,height:150,diffusionRateA:.2097,diffusionRateB:.105,feedRate:.054,killRate:.062,initialSettingPreference:"random",randomEngineSeed:"some-random-string-or-other",initialRandomSeedLevel:.0045,initialSettingEntity:null,drawEvery:10,maxGenerations:4e3}),delete Vo.defs.source,delete Vo.defs.sourceLoaded,Vo.stringifyFunction=Z,Vo.processPacketOut=Z,Vo.finalizePacketOut=Z,Vo.saveAsPacket=function(){return`[${this.name}, ${this.type}, ${this.lib}, {}]`},Vo.clone=U,Vo.getters;let Zo=Vo.setters;Vo.deltaSetters,Zo.subscribers=Z,Zo.width=function(t){t.toFixed&&(this.width=t,this.sourceNaturalWidth=t,this.dirtyScene=!0)},Zo.height=function(t){t.toFixed&&(this.height=t,this.sourceNaturalHeight=t,this.dirtyScene=!0)},Zo.initialRandomSeedLevel=function(t){t.toFixed&&(this.initialRandomSeedLevel=t,this.dirtyScene=!0)},Zo.diffusionRateA=function(t){t.toFixed&&(this.diffusionRateA=t,this.dirtyScene=!0)},Zo.diffusionRateB=function(t){t.toFixed&&(this.diffusionRateB=t,this.dirtyScene=!0)},Zo.feedRate=function(t){t.toFixed&&(this.feedRate=t,this.dirtyScene=!0)},Zo.killRate=function(t){t.toFixed&&(this.killRate=t,this.dirtyScene=!0)},Zo.drawEvery=function(t){t.toFixed&&(this.drawEvery=t,this.dirtyScene=!0)},Zo.maxGenerations=function(t){t.toFixed&&(this.maxGenerations=t,this.dirtyScene=!0)},Vo.initialSettingPreferenceValues=["random","entity"],Zo.initialSettingPreference=function(t){t.substring&&this.initialSettingPreferenceValues.indexOf(t)>=0&&(this.initialSettingPreference=t,this.dirtyScene=!0)},Zo.randomEngineSeed=function(t){t.substring&&(this.randomEngineSeed=t,this.dirtyScene=!0)},Zo.initialSettingEntity=function(t){t&&(t.substring||(t=t.name||""),t&&(this.initialSettingEntity=t,this.dirtyScene=!0))},Zo.preset=function(t){if(t.substring){switch(t){case"negativeBubbles":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.098,this.killRate=.0555,this.maxGenerations=4e3,this.initialRandomSeedLevel=.05;break;case"positiveBubbles":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.098,this.killRate=.057,this.maxGenerations=4e3,this.initialRandomSeedLevel=.1;break;case"precriticalBubbles":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.082,this.killRate=.059,this.maxGenerations=4e3,this.initialRandomSeedLevel=.08;break;case"wormsAndLoops":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.082,this.killRate=.06,this.maxGenerations=4e3,this.initialRandomSeedLevel=.08;break;case"stableSolitons":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.074,this.killRate=.064,this.maxGenerations=4e3,this.initialRandomSeedLevel=.15;break;case"uSkateWorld":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.062,this.killRate=.0609,this.maxGenerations=4e3,this.initialRandomSeedLevel=.0045;break;case"worms":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.058,this.killRate=.065,this.maxGenerations=4e3,this.initialRandomSeedLevel=.1;break;case"wormsJoinIntoMazes":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.046,this.killRate=.063,this.maxGenerations=4e3,this.initialRandomSeedLevel=.0045;break;case"negatons":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.046,this.killRate=.0594,this.maxGenerations=4e3,this.initialRandomSeedLevel=.0045;break;case"turingPatterns":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.042,this.killRate=.059,this.maxGenerations=4e3,this.initialRandomSeedLevel=.0045;break;case"chaosToTuringNegatons":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.039,this.killRate=.058,this.maxGenerations=4e3,this.initialRandomSeedLevel=.0045;break;case"fingerprints":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.037,this.killRate=.06,this.maxGenerations=4e3,this.initialRandomSeedLevel=.0045;break;case"chaosWithNegatons":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.0353,this.killRate=.0566,this.maxGenerations=0,this.initialRandomSeedLevel=.0045;break;case"spotsAndWorms":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.034,this.killRate=.0618,this.maxGenerations=4e3,this.initialRandomSeedLevel=.0045;break;case"selfReplicatingSpots":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.03,this.killRate=.063,this.maxGenerations=4e3,this.initialRandomSeedLevel=.0045;break;case"superResonantMazes":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.03,this.killRate=.0565,this.maxGenerations=4e3,this.initialRandomSeedLevel=.0045;break;case"mazes":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.029,this.killRate=.057,this.maxGenerations=4e3,this.initialRandomSeedLevel=.0045;break;case"mazesWithSomeChaos":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.026,this.killRate=.055,this.maxGenerations=0,this.initialRandomSeedLevel=.0045;break;case"chaos":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.026,this.killRate=.051,this.maxGenerations=0,this.initialRandomSeedLevel=.009;break;case"warringMicrobes":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.022,this.killRate=.059,this.maxGenerations=0,this.initialRandomSeedLevel=.0045;break;case"spotsAndLoops":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.018,this.killRate=.051,this.maxGenerations=0,this.initialRandomSeedLevel=.0045;break;case"movingSpots":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.014,this.killRate=.054,this.maxGenerations=0,this.initialRandomSeedLevel=.0045;break;case"waves":this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.014,this.killRate=.045,this.maxGenerations=0,this.initialRandomSeedLevel=.0045;break;default:this.diffusionRateA=.2097,this.diffusionRateB=.105,this.feedRate=.054,this.killRate=.062,this.maxGenerations=4e3,this.initialRandomSeedLevel=.0045}this.dirtyScene=!0}},Vo.update=function(){this.dirtyOutput=!0},Vo.cleanOutput=function(t=0){if(this.dirtyScene&&this.cleanScene(),!this.dirtyScene){const{element:e,engine:i,dataArrays:s,diffusionRateA:n,diffusionRateB:r,feedRate:o,killRate:a,currentSource:l,drawEvery:h,maxGenerations:c,currentGeneration:u}=this;let d,f,p,m,g,y,b,S,k,A;if(!c||ui?i:t},Vo.calculateLaplacian=function(t,e){const i=this.width;let s,n=0,r=Math.floor(t/i),o=this.checkRow(r-1)*i,a=this.checkRow(r+1)*i,l=r*i,h=t-l,c=this.checkCol(h-1),u=this.checkCol(h+1);return n+=-1*e[t],s=o+c,n+=.05*e[s],s=o+u,n+=.05*e[s],s=a+c,n+=.05*e[s],s=a+u,n+=.05*e[s],s=o+h,n+=.2*e[s],s=l+u,n+=.2*e[s],s=l+c,n+=.2*e[s],s=a+h,n+=.2*e[s],n},Vo.checkRow=function(t){const e=this.height;return t<0?e-1:t>=e?0:t},Vo.checkCol=function(t){const e=this.width;return t<0?e-1:t>=e?0:t},Vo.checkOutputValuesExist=function(){return!!this.dataArrays.length},Vo.getOutputValue=function(t,e){let i,s,n,r;const{dataArrays:o,currentSource:a}=this;return a?[i,s,n,r]=o:[s,i,r,n]=o,(i[t]-n[t]+1)/2};const _o=function(t){return!!t&&new RdAsset(t)};H.RdAsset=RdAsset;const Rectangle=function(t=q){return this.shapeInit(t),this.currentRectangleWidth=1,this.currentRectangleHeight=1,this};let Uo=Rectangle.prototype=Object.create(Object.prototype);Uo.type="Rectangle",Uo.lib="entity",Uo.isArtefact=!0,Uo.isAsset=!1,Uo=me(Uo),Uo=hn(Uo);Uo.defs=at(Uo.defs,{rectangleWidth:10,rectangleHeight:10,radiusTLX:0,radiusTLY:0,radiusTRX:0,radiusTRY:0,radiusBRX:0,radiusBRY:0,radiusBLX:0,radiusBLY:0,offshootA:.55,offshootB:0});let Ko=Uo.setters,qo=Uo.deltaSetters;Ko.radius=function(t){this.setRectHelper(t,["radiusTLX","radiusTRX","radiusBRX","radiusBLX","radiusX","radiusTLY","radiusTRY","radiusBRY","radiusBLY","radiusY"])},Ko.radiusX=function(t){this.setRectHelper(t,["radiusTLX","radiusTRX","radiusBRX","radiusBLX","radiusX"])},Ko.radiusY=function(t){this.setRectHelper(t,["radiusTLY","radiusTRY","radiusBRY","radiusBLY","radiusY"])},Ko.radiusT=function(t){this.setRectHelper(t,["radiusTLX","radiusTLY","radiusTRX","radiusTRY"])},Ko.radiusB=function(t){this.setRectHelper(t,["radiusBRX","radiusBRY","radiusBLX","radiusBLY"])},Ko.radiusL=function(t){this.setRectHelper(t,["radiusTLX","radiusTLY","radiusBLX","radiusBLY"])},Ko.radiusR=function(t){this.setRectHelper(t,["radiusTRX","radiusTRY","radiusBRX","radiusBRY"])},Ko.radiusTX=function(t){this.setRectHelper(t,["radiusTLX","radiusTRX"])},Ko.radiusBX=function(t){this.setRectHelper(t,["radiusBRX","radiusBLX"])},Ko.radiusLX=function(t){this.setRectHelper(t,["radiusTLX","radiusBLX"])},Ko.radiusRX=function(t){this.setRectHelper(t,["radiusTRX","radiusBRX"])},Ko.radiusTY=function(t){this.setRectHelper(t,["radiusTLY","radiusTRY"])},Ko.radiusBY=function(t){this.setRectHelper(t,["radiusBRY","radiusBLY"])},Ko.radiusLY=function(t){this.setRectHelper(t,["radiusTLY","radiusBLY"])},Ko.radiusRY=function(t){this.setRectHelper(t,["radiusTRY","radiusBRY"])},Ko.radiusTL=function(t){this.setRectHelper(t,["radiusTLX","radiusTLY"])},Ko.radiusTR=function(t){this.setRectHelper(t,["radiusTRX","radiusTRY"])},Ko.radiusBL=function(t){this.setRectHelper(t,["radiusBLX","radiusBLY"])},Ko.radiusBR=function(t){this.setRectHelper(t,["radiusBRX","radiusBRY"])},Ko.radiusTLX=function(t){this.setRectHelper(t,["radiusTLX"])},Ko.radiusTLY=function(t){this.setRectHelper(t,["radiusTLY"])},Ko.radiusTRX=function(t){this.setRectHelper(t,["radiusTRX"])},Ko.radiusTRY=function(t){this.setRectHelper(t,["radiusTRY"])},Ko.radiusBRX=function(t){this.setRectHelper(t,["radiusBRX"])},Ko.radiusBRY=function(t){this.setRectHelper(t,["radiusBRY"])},Ko.radiusBLX=function(t){this.setRectHelper(t,["radiusBLX"])},Ko.radiusBLY=function(t){this.setRectHelper(t,["radiusBLY"])},qo.radius=function(t){this.deltaRectHelper(t,["radiusTLX","radiusTRX","radiusBRX","radiusBLX","radiusX","radiusTLY","radiusTRY","radiusBRY","radiusBLY","radiusY"])},qo.radiusX=function(t){this.deltaRectHelper(t,["radiusTLX","radiusTRX","radiusBRX","radiusBLX","radiusX"])},qo.radiusY=function(t){this.deltaRectHelper(t,["radiusTLY","radiusTRY","radiusBRY","radiusBLY","radiusY"])},qo.radiusT=function(t){this.deltaRectHelper(t,["radiusTLX","radiusTLY","radiusTRX","radiusTRY"])},qo.radiusB=function(t){this.deltaRectHelper(t,["radiusBRX","radiusBRY","radiusBLX","radiusBLY"])},qo.radiusL=function(t){this.deltaRectHelper(t,["radiusTLX","radiusTLY","radiusBLX","radiusBLY"])},qo.radiusR=function(t){this.deltaRectHelper(t,["radiusTRX","radiusTRY","radiusBRX","radiusBRY"])},qo.radiusTX=function(t){this.deltaRectHelper(t,["radiusTLX","radiusTRX"])},qo.radiusBX=function(t){this.deltaRectHelper(t,["radiusBRX","radiusBLX"])},qo.radiusLX=function(t){this.deltaRectHelper(t,["radiusTLX","radiusBLX"])},qo.radiusRX=function(t){this.deltaRectHelper(t,["radiusTRX","radiusBRX"])},qo.radiusTY=function(t){this.deltaRectHelper(t,["radiusTLY","radiusTRY"])},qo.radiusBY=function(t){this.deltaRectHelper(t,["radiusBRY","radiusBLY"])},qo.radiusLY=function(t){this.deltaRectHelper(t,["radiusTLY","radiusBLY"])},qo.radiusRY=function(t){this.deltaRectHelper(t,["radiusTRY","radiusBRY"])},qo.radiusTL=function(t){this.deltaRectHelper(t,["radiusTLX","radiusTLY"])},qo.radiusTR=function(t){this.deltaRectHelper(t,["radiusTRX","radiusTRY"])},qo.radiusBL=function(t){this.deltaRectHelper(t,["radiusBLX","radiusBLY"])},qo.radiusBR=function(t){this.deltaRectHelper(t,["radiusBRX","radiusBRY"])},qo.radiusTLX=function(t){this.deltaRectHelper(t,["radiusTLX"])},qo.radiusTLY=function(t){this.deltaRectHelper(t,["radiusTLY"])},qo.radiusTRX=function(t){this.deltaRectHelper(t,["radiusTRX"])},qo.radiusTRY=function(t){this.deltaRectHelper(t,["radiusTRY"])},qo.radiusBRX=function(t){this.deltaRectHelper(t,["radiusBRX"])},qo.radiusBRY=function(t){this.deltaRectHelper(t,["radiusBRY"])},qo.radiusBLX=function(t){this.deltaRectHelper(t,["radiusBLX"])},qo.radiusBLY=function(t){this.deltaRectHelper(t,["radiusBLY"])},Ko.offshootA=function(t){this.offshootA=t,this.updateDirty()},Ko.offshootB=function(t){this.offshootB=t,this.updateDirty()},qo.offshootA=function(t){t.toFixed&&(this.offshootA+=t,this.updateDirty())},qo.offshootB=function(t){t.toFixed&&(this.offshootB+=t,this.updateDirty())},Ko.rectangleWidth=function(t){null!=t&&(this.rectangleWidth=t,this.dirtyDimensions=!0,this.dirtyFilterIdentifier=!0)},Ko.rectangleHeight=function(t){null!=t&&(this.rectangleHeight=t,this.dirtyDimensions=!0,this.dirtyFilterIdentifier=!0)},qo.rectangleWidth=function(t){this.rectangleWidth=G(this.rectangleWidth,t),this.dirtyDimensions=!0,this.dirtyFilterIdentifier=!0},qo.rectangleHeight=function(t){this.rectangleHeight=G(this.rectangleHeight,t),this.dirtyDimensions=!0,this.dirtyFilterIdentifier=!0},Uo.setRectHelper=function(t,e){this.updateDirty(),e.forEach((e=>{this[e]=t}),this)},Uo.deltaRectHelper=function(t,e){this.updateDirty(),e.forEach((e=>{this[e]=G(this[e],t)}),this)},Uo.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeRectanglePath(),this.pathDefinition=t},Uo.cleanDimensions=function(){this.dirtyDimensions=!1;let t=this.getHost();if(t){let e=t.currentDimensions?t.currentDimensions:[t.w,t.h],i=this.rectangleWidth,s=this.rectangleHeight,n=this.currentRectangleWidth||1,r=this.currentRectangleHeight||1;i.substring&&(i=parseFloat(i)/100*e[0]),s.substring&&(s=parseFloat(s)/100*e[1]);let o,a=this.mimic;a&&a.name&&this.useMimicDimensions&&(o=a.currentDimensions),o?(this.currentRectangleWidth=this.addOwnDimensionsToMimic?o[0]+i:o[0],this.currentRectangleHeight=this.addOwnDimensionsToMimic?o[1]+s:o[1]):(this.currentRectangleWidth=i,this.currentRectangleHeight=s),this.currentDimensions[0]=this.currentRectangleWidth,this.currentDimensions[1]=this.currentRectangleHeight,this.dirtyStart=!0,this.dirtyHandle=!0,this.dirtyOffset=!0,n===this.currentRectangleWidth&&r===this.currentRectangleHeight||(this.dirtyPositionSubscribers=!0),this.mimicked&&this.mimicked.length&&(this.dirtyMimicDimensions=!0)}else this.dirtyDimensions=!0},Uo.makeRectanglePath=function(){this.dirtyDimensions&&this.cleanDimensions();let t=this.currentRectangleWidth,e=this.currentRectangleHeight,i=this.offshootA,s=this.offshootB,n=this.radiusTLX,r=this.radiusTLY,o=this.radiusTRX,a=this.radiusTRY,l=this.radiusBRX,h=this.radiusBRY,c=this.radiusBLX,u=this.radiusBLY;(n.substring||r.substring||o.substring||a.substring||l.substring||h.substring||c.substring||u.substring)&&(n=n.substring?parseFloat(n)/100*t:n,r=r.substring?parseFloat(r)/100*e:r,o=o.substring?parseFloat(o)/100*t:o,a=a.substring?parseFloat(a)/100*e:a,l=l.substring?parseFloat(l)/100*t:l,h=h.substring?parseFloat(h)/100*e:h,c=c.substring?parseFloat(c)/100*t:c,u=u.substring?parseFloat(u)/100*e:u);let d="m0,0";return t-n-o!=0&&(d+="h"+(t-n-o)),o+a!==0&&(d+=`c${o*i},${a*s} ${o-o*s},${a-a*i}, ${o},${a}`),e-a-h!=0&&(d+="v"+(e-a-h)),l+h!==0&&(d+=`c${-l*s},${h*i} ${l*i-l},${h-h*s} ${-l},${h}`),-t+c+l!==0&&(d+=`h${-t+c+l}`),c+u!==0&&(d+=`c${-c*i},${-u*s} ${c*s-c},${u*i-u} ${-c},${-u}`),-e+r+u!==0&&(d+=`v${-e+r+u}`),n+r!==0&&(d+=`c${n*s},${-r*i} ${n-n*i},${r*s-r} ${n},${-r}`),d+="z",d},Uo.calculateLocalPathAdditionalActions=function(){let[t,e,i,s]=this.localBox;this.pathDefinition=this.pathDefinition.replace("m0,0",`m${-t},${-e}`),this.pathCalculatedOnce=!1,this.calculateLocalPath(this.pathDefinition,!0)};const Qo=function(t){return!!t&&(t.species="rectangle",new Rectangle(t))};H.Rectangle=Rectangle;const Shape=function(t=q){return this.shapeInit(t),this};let Jo=Shape.prototype=Object.create(Object.prototype);Jo.type="Shape",Jo.lib="entity",Jo.isArtefact=!0,Jo.isAsset=!1,Jo=me(Jo),Jo=hn(Jo);Jo.defs=at(Jo.defs,{}),Jo.cleanSpecies=function(){this.dirtySpecies=!1},Jo.cleanStampHandlePositionsAdditionalActions=function(){let t=this.localBox,e=this.currentStampHandlePosition;e[0]+=t[0],e[1]+=t[1]};const ta=function(t){return!!t&&new Shape(t)};H.Shape=Shape;const Spiral=function(t=q){return this.shapeInit(t),this};let ea=Spiral.prototype=Object.create(Object.prototype);ea.type="Spiral",ea.lib="entity",ea.isArtefact=!0,ea.isAsset=!1,ea=me(ea),ea=hn(ea);ea.defs=at(ea.defs,{loops:1,loopIncrement:1,drawFromLoop:0});let ia=ea.setters,sa=ea.deltaSetters;ia.loops=function(t){this.loops=t,this.updateDirty()},sa.loops=function(t){this.loops+=t,this.updateDirty()},ia.loopIncrement=function(t){this.loopIncrement=t,this.updateDirty()},sa.loopIncrement=function(t){this.loopIncrement+=t,this.updateDirty()},ia.drawFromLoop=function(t){this.drawFromLoop=Math.floor(t),this.updateDirty()},sa.drawFromLoop=function(t){this.drawFromLoop=Math.floor(this.drawFromLoop+t),this.updateDirty()},ea.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeSpiralPath(),this.pathDefinition=t},ea.firstTurn=[[.043,0,.082,-.035,.088,-.088],[.007,-.057,-.024,-.121,-.088,-.162],[-.07,-.045,-.169,-.054,-.265,-.015],[-.106,.043,-.194,.138,-.235,.265],[-.044,.139,-.026,.3,.058,.442],[.091,.153,.25,.267,.442,.308],[.206,.044,.431,-.001,.619,-.131],[.2,-.139,.34,-.361,.381,-.619]],ea.subsequentTurns=[[0,-.27,-.11,-.52,-.29,-.71],[-.19,-.19,-.44,-.29,-.71,-.29],[-.27,0,-.52,.11,-.71,.29],[-.19,.19,-.29,.44,-.29,.71],[0,.27,.11,.52,.29,.71],[.19,.19,.44,.29,.71,.29],[.27,0,.52,-.11,.71,-.29],[.19,-.19,.29,-.44,.29,-.71]],ea.makeSpiralPath=function(){let t,e,i,s,n,r,o,a,l,h,c,u,d=Math.floor(this.loops),f=this.loopIncrement,p=Math.floor(this.drawFromLoop),m=this.firstTurn,g=this.subsequentTurns,y=[];for(let o=0;o=p&&(b+=`c${t},${e} ${i},${s} ${n},${r}`),[o,a,l,h,c,u]=g[d],y[d]=[t+o*f,e+a*f,i+l*f,s+h*f,n+c*f,r+u*f];return b},ea.calculateLocalPathAdditionalActions=function(){let[t,e,i,s]=this.localBox,n=this.scale;this.pathDefinition=this.pathDefinition.replace("m0,0",`m${-t/n},${-e/n}`),this.pathCalculatedOnce=!1,this.calculateLocalPath(this.pathDefinition,!0)};const na=function(t){return!!t&&(t.species="spiral",new Spiral(t))};H.Spiral=Spiral;const Star=function(t=q){return this.shapeInit(t),this};let ra=Star.prototype=Object.create(Object.prototype);ra.type="Star",ra.lib="entity",ra.isArtefact=!0,ra.isAsset=!1,ra=me(ra),ra=hn(ra);ra.defs=at(ra.defs,{radius1:0,radius2:0,points:0,twist:0});let oa=ra.setters,aa=ra.deltaSetters;oa.radius1=function(t){this.radius1=t,this.updateDirty()},aa.radius1=function(t){this.radius1+=t,this.updateDirty()},oa.radius2=function(t){this.radius2=t,this.updateDirty()},aa.radius2=function(t){this.radius2+=t,this.updateDirty()},oa.points=function(t){this.points=t,this.updateDirty()},aa.points=function(t){this.points+=t,this.updateDirty()},oa.twist=function(t){this.twist=t,this.updateDirty()},aa.twist=function(t){this.twist+=t,this.updateDirty()},ra.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeStarPath(),this.pathDefinition=t},ra.makeStarPath=function(){let t,e,i,s,n,r,o,a=this.points,l=this.twist,h=this.radius1,c=this.radius2,u=360/a,d=[],f="";if(h.substring||c.substring){let t=this.getHost();if(t){let[e,i]=t.currentDimensions;h=h.substring?parseFloat(h)/100*e:h,c=c.substring?parseFloat(c)/100*e:c}}let p=is({x:0,y:-h}),m=is({x:0,y:-c});for(t=p.x,e=p.y,d.push(t),m.rotate(-u/2),m.rotate(l),o=0;o{this[e]=t}),this)},ha.deltaRectHelper=function(t,e){this.updateDirty(),e.forEach((e=>{this[e]=addStrings(this[e],t)}),this)},ha.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeTetragonPath(),this.pathDefinition=t},ha.makeTetragonPath=function(){let t,e,i=this.radiusX,s=this.radiusY;if(i.substring||s.substring){let n=this.getHost();if(n){let[r,o]=n.currentDimensions;t=2*(i.substring?parseFloat(i)/100*r:i),e=2*(s.substring?parseFloat(s)/100*o:s)}}else t=2*i,e=2*s;let n=parseFloat((t*this.intersectX).toFixed(2)),r=parseFloat((t-n).toFixed(2)),o=parseFloat((e*this.intersectY).toFixed(2)),a=parseFloat((e-o).toFixed(2)),l="m0,0";return l+=`l${r},${o} ${-r},${a} ${-n},${-a} ${n},${-o}z`,l},ha.calculateLocalPathAdditionalActions=function(){let[t,e,i,s]=this.localBox;this.pathDefinition=this.pathDefinition.replace("m0,0",`m${-t},${-e}`),this.pathCalculatedOnce=!1,this.calculateLocalPath(this.pathDefinition,!0)};const da=function(t){return!!t&&(t.species="tetragon",new Tetragon(t))};H.Tetragon=Tetragon;const Ticker=function(t=q){return this.makeName(t.name),this.register(),this.subscribers=[],this.subscriberObjects=[],this.set(this.defs),this.set(t),this.cycleCount=0,this.active=!1,this.effectiveDuration=0,this.startTime=0,this.currentTime=0,this.tick=0,this.lastEvent=0,t.subscribers&&this.subscribe(t.subscribers),this.setEffectiveDuration(),this};let fa=Ticker.prototype=Object.create(Object.prototype);fa.type="Ticker",fa.lib="animationtickers",fa.isArtefact=!1,fa.isAsset=!1,fa=me(fa);fa.defs=at(fa.defs,{order:1,duration:0,subscribers:null,killOnComplete:!1,cycles:1,eventChoke:0,observer:null,onRun:null,onHalt:null,onReverse:null,onResume:null,onSeekTo:null,onSeekFor:null,onComplete:null,onReset:null}),fa.packetExclusions=ht(fa.packetExclusions,["subscribers"]),fa.packetFunctions=ht(fa.packetFunctions,["onRun","onHalt","onReverse","onResume","onSeekTo","onSeekFor","onComplete","onReset"]),fa.kill=function(){return this.active&&this.halt(),ct(ga,this.name),ya=!0,this.deregister(),!0},fa.killTweens=function(t=!1){let e,i,s;for(e=0,i=this.subscribers.length;e{t=w[i],t&&e.push(t)}))},fa.getSubscriberObjects=function(){return this.subscribers.length&&!this.subscriberObjects.length&&this.repopulateSubscriberObjects(),this.subscriberObjects},fa.sortSubscribers=function(){let t=this.subscribers;if(t.length>1){let e=[].concat(t),i=Math.floor,s=[];e.forEach((t=>{let e=i(t.effectiveTime)||0;s[e]||(s[e]=[]),s[e].push(t)})),this.subscribers=s.reduce(((t,e)=>t.concat(e)),[])}this.repopulateSubscriberObjects()},fa.updateSubscribers=function(t,e){e=!!ut(e)&&e;let i,s,n=this.getSubscriberObjects();if(e)for(i=n.length-1;i>=0;i--)n[i].set(t);else for(i=0,s=n.length;it.reversed=!t.reversed)),this},fa.makeTickerUpdateEvent=function(){return new CustomEvent("tickerupdate",{detail:{name:this.name,type:"Ticker",tick:this.tick,reverseTick:this.effectiveDuration-this.tick},bubbles:!0,cancelable:!0})},fa.recalculateEffectiveDuration=function(){let t,e=this.getSubscriberObjects(),i=0;return this.duration?this.setEffectiveDuration():(e.forEach((e=>{t=e.getEndTime(),t>i&&(i=t)})),this.effectiveDuration=i),this},fa.setEffectiveDuration=function(){let t;return this.duration&&(t=z(this.duration),"%"===t[0]?(this.duration=0,this.recalculateEffectiveDuration()):this.effectiveDuration=t[1]),this},fa.checkObserverRunningState=function(){let t=this.observer;if(t){if(t.substring){const e=i[t];if(!e||"RenderAnimation"!==e.type)return!0;t=this.observer=e}if("RenderAnimation"===t.type)return t.isRunning()}return!0},fa.fn=function(t){let e=Sa();t=!!ut(t)&&t;let i,s,n,r,o,a,l,h,c=this.active,u=this.startTime,d=this.cycles,f=this.cycleCount,p=this.effectiveDuration,m=this.eventChoke;if(c&&u&&(!d||f=p?(h=this.tick=0,this.startTime=this.currentTime,e.tick=p,e.reverseTick=0,e.willLoop=!0,d&&(f++,this.cycleCount=f)):(e.tick=h,e.reverseTick=p-h),e.next=!0):h>=p?(e.tick=p,e.reverseTick=0,c=this.active=!1,d&&(f++,this.cycleCount=f)):(e.tick=h,e.reverseTick=p-h,e.next=!0),n=this.getSubscriberObjects(),t)for(i=n.length-1;i>=0;i--)n[i].update(e);else for(i=0,s=n.length;i=d&&this.killTweens(!0)}ka(e)},fa.run=function(){return this.active||(this.startTime=this.currentTime=Date.now(),this.cycleCount=0,this.updateSubscribers({reversed:!1}),this.active=!0,ht(ga,this.name),ya=!0,"function"==typeof this.onRun&&this.onRun()),this},fa.isRunning=function(){return this.active},fa.reset=function(){return this.active&&this.halt(),this.startTime=this.currentTime=Date.now(),this.cycleCount=0,this.updateSubscribers({reversed:!1}),this.active=!0,this.fn(!0),this.active=!1,"function"==typeof this.onReset&&this.onReset(),this},fa.complete=function(){return this.active&&this.halt(),this.startTime=this.currentTime=Date.now(),this.cycleCount=0,this.updateSubscribers({reversed:!0}),this.active=!0,this.fn(),this.active=!1,"function"==typeof this.onComplete&&this.onComplete(),this},fa.reverse=function(t=!1){let e;return t=ft(t,!1),this.active&&this.halt(),e=this.currentTime-this.startTime,this.startTime=this.currentTime-(this.effectiveDuration-e),this.changeSubscriberDirection(),this.active=!0,this.fn(),this.active=!1,"function"==typeof this.onReverse&&this.onReverse(),t&&this.resume(),this},fa.halt=function(){return this.active=!1,ht(ga,this.name),ya=!0,"function"==typeof this.onHalt&&this.onHalt(),this},fa.resume=function(){let t,e,i;return this.active||(t=Date.now(),e=this.currentTime,i=this.startTime,this.startTime=t-(e-i),this.currentTime=t,this.active=!0,ht(ga,this.name),ya=!0,"function"==typeof this.onResume&&this.onResume()),this},fa.seekTo=function(t,e=!1){let i=!1;return t=ft(t,0),this.active&&this.halt(),this.cycles&&this.cycleCount>=this.cycles&&(this.cycleCount=this.cycles-1),t=this.cycles&&(this.cycleCount=this.cycles-1),this.startTime-=t,t<0&&(i=!0),this.active=!0,this.fn(i),this.active=!1,"function"==typeof this.onSeekFor&&this.onSeekFor(),e&&this.resume(),this};let ga=[],ya=!0;ye({name:"coreTickersAnimation",order:0,fn:function(){if(ya){ya=!1;let t=[].concat(ga),e=Math.floor,i=[];t.forEach((t=>{let s=n[t];if(ut(s)){let t=e(s.order)||0;i[t]||(i[t]=[]),i[t].push(s.name)}})),ga=i.reduce(((t,e)=>t.concat(e)),[])}for(let t,e,i=0,s=ga.length;i{if(Array.isArray(t))i=t[0],s=t[1];else{if(!dt(t,t.x,t.y))return!1;i=t.x,s=t.y}if(!i.toFixed||!s.toFixed||isNaN(i)||isNaN(s))return!1;let e=is(r).vectorSubtract(t);return e.getMagnitude()t.name))),Array.isArray(this.definitions)&&(t.definitions=this.definitions.map((t=>{let e={};if(e.attribute=t.attribute,e.start=t.start,e.end=t.end,t.engine&&t.engine.substring)e.engine=t.engine.substring;else if(ut(t.engine)&&null!==t.engine){let i=this.stringifyFunction(t.engine);i&&(e.engine=i,e.engineIsFunction=!0)}return e}))),t},Ca.postCloneAction=function(t,e){if(e.useNewTicker){let i=n[this.ticker];ut(e.cycles)?t.cycles=e.cycles:t.cycles=i?i.cycles:1;let s=n[t.ticker];s.cycles=t.cycles,ut(e.duration)&&(t.duration=e.duration,t.calculateEffectiveDuration(),s&&s.recalculateEffectiveDuration())}return Array.isArray(t.definitions)&&t.definitions.forEach(((t,e)=>{t.engineIsFunction&&(t.engine=this.definitions[e].engine)})),t};let wa=Ca.getters,Pa=Ca.setters;wa.definitions=function(){return[].concat(this.definitions)},Pa.definitions=function(t){this.definitions=[].concat(t),this.setDefinitionsValues()},Pa.commenceAction=function(t){this.commenceAction=t,"function"!=typeof this.commenceAction&&(this.commenceAction=Z)},Pa.completeAction=function(t){this.completeAction=t,"function"!=typeof this.completeAction&&(this.completeAction=Z)},Ca.set=function(t=q){let e,i,s,n,r=this.setters,o=Object.keys(t),a=this.defs,l=!!ut(t.ticker)&&this.ticker;for(i=0,s=o.length;ie?r=1:ni&&(r=1)),a?r&&r==this.status||(this.status=r,this.doSimpleUpdate(t),t.next||(this.status=l?-1:1)):r!=this.status&&(this.status=r,this.doSimpleUpdate(t),t.next||(this.status=l?-1:1)),t.willLoop&&(this.reverseOnCycleEnd?this.reversed=!l:this.status=-1)},Ca.doSimpleUpdate=function(t=q){let e,i,s,n,r,o,a,l,h,c,u,d,f,p,m=this.effectiveTime,g=this.engineActions,y=this.effectiveDuration,b=this.status,S=this.definitions,k=this.targets,A=this.action,O=this.setObj||{},v=Math.round;for(e=this.reversed?t.reverseTick-m:t.tick-m,o=y&&!b?e/y:b>0?1:0,i=0,s=S.length;i(t=parseFloat(t),nt(t)||(t=0),nt(e)||(e=0),parseFloat(t.toFixed(e))),Wheel=function(t=q){return pt(t.dimensions,t.width,t.height,t.radius)||(t.radius=5),this.entityInit(t),this};let Fa=Wheel.prototype=Object.create(Object.prototype);Fa.type="Wheel",Fa.lib="entity",Fa.isArtefact=!0,Fa.isAsset=!1,Fa=me(Fa),Fa=tn(Fa);Fa.defs=at(Fa.defs,{radius:5,startAngle:0,endAngle:360,clockwise:!0,includeCenter:!1,closed:!0}),Fa.getters;let Ea=Fa.setters,Ma=Fa.deltaSetters;Ea.width=function(t){if(null!=t){let e=this.dimensions;e[0]=e[1]=t,this.dimensionsHelper()}},Ma.width=function(t){let e=this.dimensions;e[0]=e[1]=addStrings(e[0],t),this.dimensionsHelper()},Ea.height=function(t){if(null!=t){let e=this.dimensions;e[0]=e[1]=t,this.dimensionsHelper()}},Ma.height=function(t){let e=this.dimensions;e[0]=e[1]=addStrings(e[0],t),this.dimensionsHelper()},Ea.dimensions=function(t,e){this.setCoordinateHelper("dimensions",t,e),this.dimensionsHelper()},Ma.dimensions=function(t,e){this.setDeltaCoordinateHelper("dimensions",t,e),this.dimensionsHelper()},Ea.radius=function(t){this.radius=t,this.radiusHelper()},Ma.radius=function(t){this.radius=addStrings(this.radius,t),this.radiusHelper()},Ea.startAngle=function(t){this.startAngle=Ra(t,4),this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},Ma.startAngle=function(t){this.startAngle+=Ra(t,4),this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},Ea.endAngle=function(t){this.endAngle=Ra(t,4),this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},Ma.endAngle=function(t){this.endAngle+=Ra(t,4),this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0},Ea.closed=function(t){ut(t)&&(this.closed=!!t,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0)},Ea.includeCenter=function(t){ut(t)&&(this.includeCenter=!!t,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0)},Ea.clockwise=function(t){ut(t)&&(this.clockwise=!!t,this.dirtyPathObject=!0,this.dirtyFilterIdentifier=!0)},Fa.dimensionsHelper=function(){let t=this.dimensions[0];t.substring?this.radius=parseFloat(t)/2+"%":this.radius=t/2,this.dirtyDimensions=!0,this.dirtyFilterIdentifier=!0},Fa.radiusHelper=function(){let t=this.radius,e=this.dimensions;t.substring?e[0]=e[1]=2*parseFloat(t)+"%":e[0]=e[1]=2*t,this.dirtyDimensions=!0,this.dirtyFilterIdentifier=!0},Fa.cleanDimensionsAdditionalActions=function(){let t=this.radius,e=this.currentDimensions,i=t.substring?parseFloat(t)/100*e[0]:t;e[0]!==2*i?(e[1]=e[0],this.currentRadius=e[0]/2):this.currentRadius=i},Fa.cleanPathObject=function(){if(this.dirtyPathObject=!1,!this.noPathUpdates||!this.pathObject){let t=this.pathObject=new Path2D,e=this.currentStampHandlePosition,i=this.currentScale,s=this.currentRadius*i,n=s-e[0]*i,r=s-e[1]*i,o=this.startAngle*gt,a=this.endAngle*gt;t.arc(n,r,s,o,a,!this.clockwise),this.includeCenter?(t.lineTo(n,r),t.closePath()):this.closed&&t.closePath()}};const Ha=function(t){return!!t&&new Wheel(t)};H.Wheel=Wheel;const World=function(t=q){this.makeName(t.name),this.register(),this.set(this.defs);let e=t.keytypes||{};return e.gravity||(e.gravity="Vector"),t.gravity||(t.gravity=[0,9.81,0]),t.userAttributes&&t.userAttributes.forEach((t=>{this.addAttribute(t),t.type&&(e[t.key]=t.type)})),this.initializeAttributes(e),this.set(t),this};let Ia=World.prototype=Object.create(Object.prototype);Ia.type="World",Ia.lib="world",Ia.isArtefact=!1,Ia.isAsset=!1,Ia=me(Ia);Ia.defs=at(Ia.defs,{gravity:null,tickMultiplier:1,keytypes:null}),Ia.kill=function(){return this.deregister(),!0};let Ba=Ia.getters,Ta=Ia.setters,La=Ia.deltaSetters;Ta.gravityX=function(t){this.gravity&&ut(t)&&this.gravity.setX(t)},Ta.gravityY=function(t){this.gravity&&ut(t)&&this.gravity.setY(t)},Ta.gravityZ=function(t){this.gravity&&ut(t)&&this.gravity.setZ(t)},Ta.gravity=function(t){this.gravity&&ut(t)&&this.gravity.set(t)},Ia.addAttribute=function(t=q){let{key:e,defaultValue:i,setter:s,deltaSetter:n,getter:r}=t;return e&&e.substring&&(this.defs[e]=ut(i)?i:null,this[e]=ut(i)?i:null,st(s)&&(Ta[e]=s),st(n)&&(La[e]=n),st(r)&&(Ba[e]=r)),this},Ia.removeAttribute=function(t){return t&&t.substring&&(delete this.defs[t],delete this[t],delete Ba[t],delete Ta[t],delete La[t]),this},Ia.initializeAttributes=function(t){for(let[e,i]of Object.entries(t))switch(i){case"Quaternion":this[e]=hs();break;case"Vector":this[e]=ns();break;case"Coordinate":this[e]=mi()}};const $a=function(t){return!!t&&new World(t)};H.World=World;const ja=Bs;"undefined"!=typeof window&&Bs();export{Os as addCanvas,xt as addListener,Rt as addNativeListener,Hs as addStack,$s as clear,js as compile,Fi as createImageFromCell,Mi as createImageFromEntity,Ei as createImageFromGroup,Se as currentCorePosition,pe as forceUpdate,bs as getCanvas,$t as getIgnorePixelRatio,Tt as getPixelRatio,Is as getStack,Fe as getTouchActionChoke,Ri as importDomImage,Zr as importDomVideo,Di as importImage,_r as importMediaStream,Jr as importSprite,Ur as importVideo,ja as init,I as library,Js as makeAction,ye as makeAnimation,vt as makeAnimationObserver,gn as makeBezier,sn as makeBlock,kn as makeCog,Ue as makeColor,Pn as makeConicGradient,En as makeCrescent,Hn as makeDragZone,Cs as makeElement,Un as makeEmitter,er as makeFilter,sr as makeForce,qn as makeGradient,ar as makeGrid,$i as makeGroup,hr as makeKeyboardZone,ur as makeLine,mr as makeLineSpiral,kr as makeLoom,xr as makeMesh,Er as makeNet,Tr as makeNoise,Br as makeNoiseAsset,Nr as makeOval,so as makePattern,go as makePhrase,Ao as makePicture,Co as makePolygon,Fo as makePolyline,Bo as makeQuadratic,Xo as makeRadialGradient,Wo as makeRawAsset,_o as makeReactionDiffusionAsset,Qo as makeRectangle,Gs as makeRender,ta as makeShape,Ws as makeSnippet,na as makeSpiral,Pr as makeSpring,la as makeStar,da as makeTetragon,Aa as makeTicker,xa as makeTracer,Da as makeTween,$r as makeUpdater,Ha as makeWheel,$a as makeWorld,Lr as observeAndUpdate,pi as releaseCoordinate,ls as releaseQuaternion,ss as releaseVector,Ct as removeListener,Ft as removeNativeListener,Ys as render,fi as requestCoordinate,as as requestQuaternion,is as requestVector,si as seededRandomNumberGenerator,As as setCurrentCanvas,ki as setFilterMemoizationChoke,jt as setIgnorePixelRatio,Ht as setPixelRatioChangeAction,Ee as setTouchActionChoke,Xs as show,Y as startCoreAnimationLoop,Te as startCoreListeners,N as stopCoreAnimationLoop,Le as stopCoreListeners};
diff --git a/source/mixin/cell-key-functions.js b/source/mixin/cell-key-functions.js
index a3d09ac17..5dab9652d 100644
--- a/source/mixin/cell-key-functions.js
+++ b/source/mixin/cell-key-functions.js
@@ -287,9 +287,10 @@ export default function (P = Ωempty) {
     P.getEntityHits = function () {
 
         const response = [],
-            results = [],
             resultNames = [];
 
+        let results = [];
+
         if (this.groupBuckets) {
 
             this.groupBuckets.forEach(grp => {