From 9edba2c8f6fb330b655ee2a238934fefcc4bdff5 Mon Sep 17 00:00:00 2001 From: kangax Date: Mon, 5 Aug 2013 11:21:30 +0200 Subject: [PATCH] Add fabric.Image.pngCompression and use it in applyFilters under Node --- dist/all.js | 9 ++++++++- dist/all.min.js | 4 ++-- dist/all.min.js.gz | Bin 49805 -> 49832 bytes src/shapes/image.class.js | 9 ++++++++- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/dist/all.js b/dist/all.js index c99596e6..33022f93 100644 --- a/dist/all.js +++ b/dist/all.js @@ -15548,7 +15548,7 @@ fabric.util.object.extend(fabric.Object.prototype, { replacement.height = imgEl.height; if (fabric.isLikelyNode) { - replacement.src = canvasEl.toBuffer(); + replacement.src = canvasEl.toBuffer(undefined, fabric.Image.pngCompression); // onload doesn't fire in some node versions, so we invoke callback manually _this._element = replacement; @@ -15740,6 +15740,13 @@ fabric.util.object.extend(fabric.Object.prototype, { */ fabric.Image.async = true; + /** + * Indicates compression level used when generating PNG under Node (in applyFilters) + * @static + * @type Number [0-9] + */ + fabric.Image.pngCompression = 1; + })(typeof exports !== 'undefined' ? exports : this); diff --git a/dist/all.min.js b/dist/all.min.js index e64eef5d..287c434c 100644 --- a/dist/all.min.js +++ b/dist/all.min.js @@ -2,5 +2,5 @@ ;o-1?s(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)if(r==="opacity")s(e,t[r]);else{var i=r==="float"||r==="cssFloat"?typeof n.styleFloat=="undefined"?"cssFloat":"styleFloat":r;n[i]=t[r]}return e}var t=fabric.document.createElement("div"),n=typeof t.style.opacity=="string",r=typeof t.style.filter=="string",i=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(e){return e};n?s=function(e,t){return e.style.opacity=t,e}:r&&(s=function(e,t){var n=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(n.zoom=1),i.test(n.filter)?(t=t>=.9999?"":"alpha(opacity="+t*100+")",n.filter=n.filter.replace(i,t)):n.filter+=" alpha(opacity="+t*100+")",e}),fabric.util.setStyle=e}(),function(){function t(e){return typeof e=="string"?fabric.document.getElementById(e):e}function s(e,t){var n=fabric.document.createElement(e);for(var r in t)r==="class"?n.className=t[r]:r==="for"?n.htmlFor=t[r]:n.setAttribute(r,t[r]);return n}function o(e,t){(" "+e.className+" ").indexOf(" "+t+" ")===-1&&(e.className+=(e.className?" ":"")+t)}function u(e,t,n){return typeof t=="string"&&(t=s(t,n)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t}function a(e){var t,n,r={left:0,top:0},i=e&&e.ownerDocument,s={left:0,top:0},o={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!i)return{left:0,top:0};for(var u in o)s[o[u]]+=parseInt(f(e,u),10)||0;return t=i.documentElement,typeof e.getBoundingClientRect!="undefined"&&(r=e.getBoundingClientRect()),i!=null&&i===i.window?n=i:n=i.nodeType===9&&(i.defaultView||i.parentWindow),{left:r.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)+s.left,top:r.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0)+s.top}}function f(e,t){e.style||(e.style={});if(fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle)return fabric.document.defaultView.getComputedStyle(e,null)[t];var n=e.style[t];return!n&&e.currentStyle&&(n=e.currentStyle[t]),n}var e=Array.prototype.slice,n=function(t){return e.call(t,0)},r;try{r=n(fabric.document.childNodes)instanceof Array}catch(i){}r||(n=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t}),function(){function n(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=fabric.util.falseFunction),t?e.style[t]="none":typeof e.unselectable=="string"&&(e.unselectable="on"),e}function r(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=null),t?e.style[t]="":typeof e.unselectable=="string"&&(e.unselectable=""),e}var e=fabric.document.documentElement.style,t="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=n,fabric.util.makeElementSelectable=r}(),function(){function e(e,t){var n=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),i=!0;r.onload=r.onreadystatechange=function(e){if(i){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;i=!1,t(e||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=e,n.appendChild(r)}fabric.util.getScript=e}(),fabric.util.getById=t,fabric.util.toArray=n,fabric.util.makeElement=s,fabric.util.addClass=o,fabric.util.wrapElement=u,fabric.util.getElementOffset=a,fabric.util.getElementStyle=f}(),function(){function e(e,t){return e+(/\?/.test(e)?"&":"?")+t}function n(){}function r(r,i){i||(i={});var s=i.method?i.method.toUpperCase():"GET",o=i.onComplete||function(){},u=t(),a;return u.onreadystatechange=function(){u.readyState===4&&(o(u),u.onreadystatechange=n)},s==="GET"&&(a=null,typeof i.parameters=="string"&&(r=e(r,i.parameters))),u.open(s,r,!0),(s==="POST"||s==="PUT")&&u.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),u.send(a),u}var t=function(){var e=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest}];for(var t=e.length;t--;)try{var n=e[t]();if(n)return e[t]}catch(r){}}();fabric.util.request=r}(),function(){function e(e){e||(e={});var t=+(new Date),r=e.duration||500,i=t+r,s,o=e.onChange||function(){},u=e.abort||function(){return!1},a=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},f="startValue"in e?e.startValue:0,l="endValue"in e?e.endValue:100,c=e.byValue||l-f;e.onStart&&e.onStart(),function h(){s=+(new Date);var l=s>i?r:s-t;o(a(l,f,c,r));if(s>i||u()){e.onComplete&&e.onComplete();return}n(h)}()}var t=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(e){fabric.window.setTimeout(e,1e3/60)},n=function(){return t.apply(fabric.window,arguments)};fabric.util.animate=e,fabric.util.requestAnimFrame=n}(),function(){function e(e,t,n,r){return n*(e/=r)*e+t}function t(e,t,n,r){return-n*(e/=r)*(e-2)+t}function n(e,t,n,r){return e/=r/2,e<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e,t,n,r){return n*(e/=r)*e*e+t}function i(e,t,n,r){return n*((e=e/r-1)*e*e+1)+t}function s(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e+t:n/2*((e-=2)*e*e+2)+t}function o(e,t,n,r){return n*(e/=r)*e*e*e+t}function u(e,t,n,r){return-n*((e=e/r-1)*e*e*e-1)+t}function a(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e+t:-n/2*((e-=2)*e*e*e-2)+t}function f(e,t,n,r){return n*(e/=r)*e*e*e*e+t}function l(e,t,n,r){return n*((e=e/r-1)*e*e*e*e+1)+t}function c(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e*e+t:n/2*((e-=2)*e*e*e*e+2)+t}function h(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t}function p(e,t,n,r){return n*Math.sin(e/r*(Math.PI/2))+t}function d(e,t,n,r){return-n/2*(Math.cos(Math.PI*e/r)-1)+t}function v(e,t,n,r){return e===0?t:n*Math.pow(2,10*(e/r-1))+t}function m(e,t,n,r){return e===r?t+n:n*(-Math.pow(2,-10*e/r)+1)+t}function g(e,t,n,r){return e===0?t:e===r?t+n:(e/=r/2,e<1?n/2*Math.pow(2,10*(e-1))+t:n/2*(-Math.pow(2,-10*--e)+2)+t)}function y(e,t,n,r){return-n*(Math.sqrt(1-(e/=r)*e)-1)+t}function b(e,t,n,r){return n*Math.sqrt(1-(e=e/r-1)*e)+t}function w(e,t,n,r){return e/=r/2,e<1?-n/2*(Math.sqrt(1-e*e)-1)+t:n/2*(Math.sqrt(1-(e-=2)*e)+1)+t}function E(e,t,n,r){var i=1.70158,s=0,o=n;return e===0?t:(e/=r,e===1?t+n:(s||(s=r*.3),o-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){w.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),w.has(e,function(r){r?w.get(e,function(e){var t=S(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})}function S(e){var n=e.objects,i=e.options;return n=n.map(function(e){return t[r(e.type)].fromObject(e)}),{objects:n,options:i}}function x(e,n,r){e=e.trim();var i;if(typeof DOMParser!="undefined"){var s=new DOMParser;s&&s.parseFromString&&(i=s.parseFromString(e,"text/xml"))}else t.window.ActiveXObject&&(i=new ActiveXObject("Microsoft.XMLDOM"),i.async="false",i.loadXML(e.replace(//i,"")));t.parseSVGDocument(i.documentElement,function(e,t){n(e,t)},r)}function T(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t}function N(e){var t="";return e.backgroundColor&&e.backgroundColor.source&&(t=['',''].join("")),t}function C(e){var t=e.getElementsByTagName("linearGradient"),n=e.getElementsByTagName("radialGradient"),r,i,s={};i=t.length;for(;i--;)r=t[i],s[r.getAttribute("id")]=r;i=n.length;for(;i--;)r=n[i],s[r.getAttribute("id")]=r;return s}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s=t.util.toFixed,o=t.util.multiplyTransformMatrices;t.SHARED_ATTRIBUTES=["transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width"];var u={"fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight",cx:"left",x:"left",r:"radius","stroke-dasharray":"strokeDashArray","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration",cy:"top",y:"top",transform:"transformMatrix"},a={stroke:"strokeOpacity",fill:"fillOpacity"};t.parseTransformAttribute=function(){function e(e,t){var n=t[0];e[0]=Math.cos(n),e[1]=Math.sin(n),e[2]=-Math.sin(n),e[3]=Math.cos(n)}function n(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function r(e,t){e[2]=t[0]}function i(e,t){e[1]=t[0]}function s(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var o=[1,0,0,1,0,0],u="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",a="(?:\\s+,?\\s*|,\\s*)",f="(?:(skewX)\\s*\\(\\s*("+u+")\\s*\\))",l="(?:(skewY)\\s*\\(\\s*("+u+")\\s*\\))",c="(?:(rotate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+")"+a+"("+u+"))?\\s*\\))",h="(?:(scale)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",p="(?:(translate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",d="(?:(matrix)\\s*\\(\\s*("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+"\\s*\\))",v="(?:"+d+"|"+p+"|"+h+"|"+c+"|"+f+"|"+l+")",m="(?:"+v+"(?:"+a+v+")*"+")",g="^\\s*(?:"+m+"?)\\s*$",y=new RegExp(g),b=new RegExp(v,"g");return function(u){var a=o.concat(),f=[];if(!u||u&&!y.test(u))return a;u.replace(b,function(t){var u=(new RegExp(v)).exec(t).filter(function(e){return e!==""&&e!=null}),l=u[1],c=u.slice(2).map(parseFloat);switch(l){case"translate":s(a,c);break;case"rotate":e(a,c);break;case"scale":n(a,c);break;case"skewX":r(a,c);break;case"skewY":i(a,c);break;case"matrix":a=c}f.push(a.concat()),a=o.concat()});var l=f[0];while(f.length>1)f.shift(),l=t.util.multiplyTransformMatrices(l,f[0]);return l}}(),t.parseSVGDocument=function(){function s(e,t){while(e&&(e=e.parentNode))if(t.test(e.nodeName))return!0;return!1}var e=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/,n="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",r=new RegExp("^\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*"+"$");return function(n,o,u){if(!n)return;var a=new Date,f=t.util.toArray(n.getElementsByTagName("*"));if(f.length===0){f=n.selectNodes("//*[name(.)!='svg']");var l=[];for(var c=0,h=f.length;ce.x&&this.y>e.y},gte:function(e){return this.x>=e.x&&this.y>=e.y},lerp:function(e,t){return new n(this.x+(e.x-this.x)*t,this.y+(e.y-this.y)*t)},distanceFrom:function(e){var t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)},midPointFrom:function(e){return new n(this.x+(e.x-this.x)/2,this.y+(e.y-this.y)/2)},min:function(e){return new n(Math.min(this.x,e.x),Math.min(this.y,e.y))},max:function(e){return new n(Math.max(this.x,e.x),Math.max(this.y,e.y))},toString:function(){return this.x+","+this.y},setXY:function(e,t){this.x=e,this.y=t},setFromPoint:function(e){this.x=e.x,this.y=e.y},swap:function(e){var t=this.x,n=this.y;this.x=e.x,this.y=e.y,e.x=t,e.y=n}}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){this.status=e,this.points=[]}var t=e.fabric||(e.fabric={});if(t.Intersection){t.warn("fabric.Intersection is already defined");return}t.Intersection=n,t.Intersection.prototype={appendPoint:function(e){this.points.push(e)},appendPoints:function(e){this.points=this.points.concat(e)}},t.Intersection.intersectLineLine=function(e,r,i,s){var o,u=(s.x-i.x)*(e.y-i.y)-(s.y-i.y)*(e.x-i.x),a=(r.x-e.x)*(e.y-i.y)-(r.y-e.y)*(e.x-i.x),f=(s.y-i.y)*(r.x-e.x)-(s.x-i.x)*(r.y-e.y);if(f!==0){var l=u/f,c=a/f;0<=l&&l<=1&&0<=c&&c<=1?(o=new n("Intersection"),o.points.push(new t.Point(e.x+l*(r.x-e.x),e.y+l*(r.y-e.y)))):o=new n}else u===0||a===0?o=new n("Coincident"):o=new n("Parallel");return o},t.Intersection.intersectLinePolygon=function(e,t,r){var i=new n,s=r.length;for(var o=0;o0&&(i.status="Intersection"),i},t.Intersection.intersectPolygonPolygon=function(e,t){var r=new n,i=e.length;for(var s=0;s0&&(r.status="Intersection"),r},t.Intersection.intersectPolygonRectangle=function(e,r,i){var s=r.min(i),o=r.max(i),u=new t.Point(o.x,s.y),a=new t.Point(s.x,o.y),f=n.intersectLinePolygon(s,u,e),l=n.intersectLinePolygon(u,o,e),c=n.intersectLinePolygon(o,a,e),h=n.intersectLinePolygon(a,s,e),p=new n;return p.appendPoints(f.points),p.appendPoints(l.points),p.appendPoints(c.points),p.appendPoints(h.points),p.points.length>0&&(p.status="Intersection"),p}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){e?this._tryParsingColor(e):this.setSource([0,0,0,1])}function r(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var t=e.fabric||(e.fabric={});if(t.Color){t.warn("fabric.Color is already defined.");return}t.Color=n,t.Color.prototype={_tryParsingColor:function(e){var t;e in n.colorNameMap&&(e=n.colorNameMap[e]),t=n.sourceFromHex(e),t||(t=n.sourceFromRgb(e)),t||(t=n.sourceFromHsl(e)),t&&this.setSource(t)},_rgbToHsl:function(e,n,r){e/=255,n/=255,r/=255;var i,s,o,u=t.util.array.max([e,n,r]),a=t.util.array.min([e,n,r]);o=(u+a)/2;if(u===a)i=s=0;else{var f=u-a;s=o>.5?f/(2-u-a):f/(u+a);switch(u){case e:i=(n-r)/f+(n']:this.type==="radial"&&(i=["']);for(var s=0;s');return i.push(this.type==="linear"?"":""),i.join("")},toLive:function(e){var t;if(!this.type)return;this.type==="linear"?t=e.createLinearGradient(this.coords.x1,this.coords.y1,this.coords.x2,this.coords.y2):this.type==="radial"&&(t=e.createRadialGradient(this.coords.x1,this.coords.y1,this.coords.r1,this.coords.x2,this.coords.y2,this.coords.r2));for(var n=0,r=this.colorStops.length;n'+''+""},toLive:function(e){var t=typeof this.source=="function"?this.source():this.source;return e.createPattern(t,this.repeat)}}),fabric.Shadow=fabric.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,initialize:function(e){for(var t in e)this[t]=e[t];this.id=fabric.Object.__uid++},toSVG:function(e){var t="SourceAlpha";if(e.fill===this.color||e.stroke===this.color)t="SourceGraphic";return''+''+''+""+""+''+""+""},toObject:function(){return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY}}}),function(){"use strict";if(fabric.StaticCanvas){fabric.warn("fabric.StaticCanvas is already defined.");return}var e=fabric.util.object.extend,t=fabric.util.getElementOffset,n=fabric.util.removeFromArray,r=fabric.util.removeListener,i=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=function(e,t){t||(t={}),this._initStatic(e,t),fabric.StaticCanvas.activeInstance=this},e(fabric.StaticCanvas.prototype,fabric.Observable),e(fabric.StaticCanvas.prototype,fabric.Collection),e(fabric.StaticCanvas.prototype,fabric.DataURLExporter),e(fabric.StaticCanvas.prototype,{backgroundColor:"",backgroundImage:"",backgroundImageOpacity:1,backgroundImageStretch:!0,overlayImage:"",overlayImageLeft:0 ,overlayImageTop:0,includeDefaultValues:!0,stateful:!0,renderOnAddition:!0,clipTo:null,controlsAboveOverlay:!1,onBeforeScaleRotate:function(){},_initStatic:function(e,t){this._objects=[],this._createLowerCanvas(e),this._initOptions(t),t.overlayImage&&this.setOverlayImage(t.overlayImage,this.renderAll.bind(this)),t.backgroundImage&&this.setBackgroundImage(t.backgroundImage,this.renderAll.bind(this)),t.backgroundColor&&this.setBackgroundColor(t.backgroundColor,this.renderAll.bind(this)),this.calcOffset()},calcOffset:function(){return this._offset=t(this.lowerCanvasEl),this},setOverlayImage:function(e,t,n){return fabric.util.loadImage(e,function(e){this.overlayImage=e,n&&"overlayImageLeft"in n&&(this.overlayImageLeft=n.overlayImageLeft),n&&"overlayImageTop"in n&&(this.overlayImageTop=n.overlayImageTop),t&&t()},this),this},setBackgroundImage:function(e,t,n){return fabric.util.loadImage(e,function(e){this.backgroundImage=e,n&&"backgroundImageOpacity"in n&&(this.backgroundImageOpacity=n.backgroundImageOpacity),n&&"backgroundImageStretch"in n&&(this.backgroundImageStretch=n.backgroundImageStretch),t&&t()},this),this},setBackgroundColor:function(e,t){if(e.source){var n=this;fabric.util.loadImage(e.source,function(r){n.backgroundColor=new fabric.Pattern({source:r,repeat:e.repeat}),t&&t()})}else this.backgroundColor=e,t&&t();return this},_createCanvasElement:function(){var e=fabric.document.createElement("canvas");e.style||(e.style={});if(!e)throw i;return this._initCanvasElement(e),e},_initCanvasElement:function(e){fabric.util.createCanvasElement(e);if(typeof e.getContext=="undefined")throw i},_initOptions:function(e){for(var t in e)this[t]=e[t];this.width=parseInt(this.lowerCanvasEl.width,10)||0,this.height=parseInt(this.lowerCanvasEl.height,10)||0;if(!this.lowerCanvasEl.style)return;this.lowerCanvasEl.style.width=this.width+"px",this.lowerCanvasEl.style.height=this.height+"px"},_createLowerCanvas:function(e){this.lowerCanvasEl=fabric.util.getById(e)||this._createCanvasElement(),this._initCanvasElement(this.lowerCanvasEl),fabric.util.addClass(this.lowerCanvasEl,"lower-canvas"),this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(e){return this._setDimension("width",e)},setHeight:function(e){return this._setDimension("height",e)},setDimensions:function(e){for(var t in e)this._setDimension(t,e[t]);return this},_setDimension:function(e,t){return this.lowerCanvasEl[e]=t,this.lowerCanvasEl.style[e]=t+"px",this.upperCanvasEl&&(this.upperCanvasEl[e]=t,this.upperCanvasEl.style[e]=t+"px"),this.cacheCanvasEl&&(this.cacheCanvasEl[e]=t),this.wrapperEl&&(this.wrapperEl.style[e]=t+"px"),this[e]=t,this.calcOffset(),this.renderAll(),this},getElement:function(){return this.lowerCanvasEl},getActiveObject:function(){return null},getActiveGroup:function(){return null},_draw:function(e,t){if(!t)return;if(this.controlsAboveOverlay){var n=t.hasBorders,r=t.hasControls;t.hasBorders=t.hasControls=!1,t.render(e),t.hasBorders=n,t.hasControls=r}else t.render(e)},_onObjectAdded:function(e){this.stateful&&e.setupState(),e.setCoords(),e.canvas=this,this.fire("object:added",{target:e}),e.fire("added")},_onObjectRemoved:function(e){this.fire("object:removed",{target:e}),e.fire("removed")},getObjects:function(){return this._objects},clearContext:function(e){return e.clearRect(0,0,this.width,this.height),this},getContext:function(){return this.contextContainer},clear:function(){return this._objects.length=0,this.discardActiveGroup&&this.discardActiveGroup(),this.discardActiveObject&&this.discardActiveObject(),this.clearContext(this.contextContainer),this.contextTop&&this.clearContext(this.contextTop),this.fire("canvas:cleared"),this.renderAll(),this},renderAll:function(e){var t=this[e===!0&&this.interactive?"contextTop":"contextContainer"];this.contextTop&&this.selection&&!this._groupSelector&&this.clearContext(this.contextTop),e||this.clearContext(t),this.fire("before:render"),this.clipTo&&fabric.util.clipContext(this,t),this.backgroundColor&&(t.fillStyle=this.backgroundColor.toLive?this.backgroundColor.toLive(t):this.backgroundColor,t.fillRect(this.backgroundColor.offsetX||0,this.backgroundColor.offsetY||0,this.width,this.height)),typeof this.backgroundImage=="object"&&this._drawBackroundImage(t);var n=this.getActiveGroup();for(var r=0,i=this._objects.length;r','\n'),t.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),""),this.backgroundColor&&this.backgroundColor.source&&t.push('"),this.backgroundImage&&t.push(''),this.overlayImage&&t.push('');var n=this.getActiveGroup();n&&this.discardActiveGroup();for(var r=0,i=this.getObjects(),s=i.length;r"),t.join("")},remove:function(e){return this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this.discardActiveObject(),this.fire("selection:cleared")),fabric.Collection.remove.call(this,e)},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll&&this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll&&this.renderAll()},sendBackwards:function(e,t){var r=this._objects.indexOf(e);if(r!==0){var i;if(t){i=r;for(var s=r-1;s>=0;--s){var o=e.intersectsWithObject(this._objects[s])||e.isContainedWithinObject(this._objects[s])||this._objects[s].isContainedWithinObject(e);if(o){i=s;break}}}else i=r-1;n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},bringForward:function(e,t){var r=this._objects.indexOf(e);if(r!==this._objects.length-1){var i;if(t){i=r;for(var s=r+1;s"},e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=n.width,s=n.height,o,u,a,f;for(a=0;a0&&(t>this.targetFindTolerance?t-=this.targetFindTolerance:t=0,n>this.targetFindTolerance?n-=this.targetFindTolerance:n=0);var o=!0,u=r.getImageData(t,n,this.targetFindTolerance*2||1,this.targetFindTolerance*2||1);for(var a=3,f=u.data.length;ao.padding?l.x<0?l.x+=o.padding:l.x-=o.padding:l.x=0,s(l.y)>o.padding?l.y<0?l.y+=o.padding:l.y-=o.padding:l.y=0;var c=o.scaleX,h=o.scaleY;if(n==="equally"&&!u&&!a){var p=l.y+l.x,d=(o.height+o.strokeWidth)*r.original.scaleY+(o.width+o.strokeWidth)*r.original.scaleX;c=r.original.scaleX*p/d,h=r.original.scaleY*p/d,o.set("scaleX",c),o.set("scaleY",h)}else n?n==="x"&&!o.get("lockUniScaling")?(c=l.x/(o.width+o.strokeWidth),u||o.set("scaleX",c)):n==="y"&&!o.get("lockUniScaling")&&(h=l.y/(o.height+o.strokeWidth),a||o.set("scaleY",h)):(c=l.x/(o.width+o.strokeWidth),h=l.y/(o.height+o.strokeWidth),u||o.set("scaleX",c),a||o.set("scaleY",h));c<0&&(r.originX==="left"?r.originX="right":r.originX==="right"&&(r.originX="left")),h<0&&(r.originY==="top"?r.originY="bottom":r.originY==="bottom"&&(r.originY="top")),o.setPositionByOrigin(f,r.originX,r.originY)},_rotateObject:function(e,t){var n=this._currentTransform,s=this._offset;if(n.target.get("lockRotation"))return;var o=i(n.ey-n.top-s.top,n.ex-n.left-s.left),u=i(t-n.top-s.top,e-n.left-s.left),a=r(u-o+n.theta);a<0&&(a=360+a),n.target.angle=a},_setCursor:function(e){this.upperCanvasEl.style.cursor=e},_resetObjectTransform:function(e){e.scaleX=1,e.scaleY=1,e.setAngle(0)},_drawSelection:function(){var e=this.contextTop,t=this._groupSelector,n=t.left,r=t.top,i=s(n),o=s(r);e.fillStyle=this.selectionColor,e.fillRect(t.ex-(n>0?0:-n),t.ey-(r>0?0:-r),i,o),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var u=t.ex+a-(n>0?0:i),f=t.ey+a-(r>0?0:o);e.beginPath(),fabric.util.drawDashedLine(e,u,f,u+i,f,this.selectionDashArray),fabric.util.drawDashedLine(e,u,f+o-1,u+i,f+o-1,this.selectionDashArray),fabric.util.drawDashedLine(e,u,f,u,f+o,this.selectionDashArray),fabric.util.drawDashedLine(e,u+i-1,f,u+i-1,f+o,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+a-(n>0?0:i),t.ey+a-(r>0?0:o),i,o)},_findSelectedObjects:function(e){var t=[],n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,s=r+this._groupSelector.top,a,f=new fabric.Point(o(n,i),o(r,s)),l=new fabric.Point(u(n,i),u(r,s)),c=n===i&&r===s;for(var h=this._objects.length;h--;){a=this._objects[h];if(!a)continue;if(a.intersectsWithRect(f,l)||a.isContainedWithinRect(f,l)||a.containsPoint(f)||a.containsPoint(l))if(this.selection&&a.selectable){a.set("active",!0),t.push(a);if(c)break}}t.length===1?this.setActiveObject(t[0],e):t.length>1&&(t=new fabric.Group(t.reverse()),this.setActiveGroup(t),t.saveCoords(),this.fire("selection:created",{target:t}),this.renderAll())},findTarget:function(e,t){var n,r=this.getPointer(e);if(this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay.visible&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay)&&this.lastRenderedObjectWithControlsAboveOverlay._findTargetCorner(e,this._offset))return n=this.lastRenderedObjectWithControlsAboveOverlay,n;var i=this.getActiveGroup();if(i&&!t&&this.containsPoint(e,i))return n=i,n;var s=[];for(var o=this._objects.length;o--;)if(this._objects[o]&&this._objects[o].visible&&this.containsPoint(e,this._objects[o])){if(!this.perPixelTargetFind&&!this._objects[o].perPixelTargetFind){n=this._objects[o],this.relatedTarget=n;break}s[s.length]=this._objects[o]}for(var u=0,a=s.length;u"},get:function(e){return this[e]},set:function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"&&e!=="clipTo"?this._set(e,t(this.get(e))):this._set(e,t);return this},_set:function(e,t){var n=e==="scaleX"||e==="scaleY";n&&(t=this._constrainScale(t));if(e==="scaleX"&&t<0)this.flipX=!this.flipX,t*=-1;else if(e==="scaleY"&&t<0)this.flipY=!this.flipY,t*=-1;else if(e==="width"||e==="height")this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2);return this[e]=t,this},toggle:function(e){var t=this.get(e);return typeof t=="boolean"&&this.set(e,!t),this},setSourcePath:function(e){return this.sourcePath=e,this},render:function(e,n){if(this.width===0||this.height===0||!this.visible)return;e.save();var r=this.transformMatrix;r&&!this.group&&e.setTransform(r[0],r[1],r[2],r[3],r[4],r[5]),n||this.transform(e),this.stroke&&(e.lineWidth=this.strokeWidth,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin,e.miterLimit=this.strokeMiterLimit,e.strokeStyle=this.stroke.toLive?this.stroke.toLive(e):this.stroke),this.overlayFill?e.fillStyle=this.overlayFill:this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill),r&&this.group&&(e.translate(-this.group.width/2,-this.group.height/2),e.transform(r[0],r[1],r[2],r[3],r[4],r[5])),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this.active&&!n&&(this.drawBorders(e),this.drawControls(e)),e.restore()},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_renderFill:function(e){if(!this.fill)return;this.fill.toLive&&(e.save(),e.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0)),e.fill(),this.fill.toLive&&e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke)return;e.save(),this.strokeDashArray?(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),o?(e.setLineDash(this.strokeDashArray),this._stroke&&this._stroke(e)):this._renderDashedStroke&&this._renderDashedStroke(e),e.stroke()):this._stroke?this._stroke(e):e.stroke(),this._removeShadow(e),e.restore()},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){var n=this.toDataURL();return t.util.loadImage(n,function(n){e&&e(new t.Image(n))}),this},toDataURL:function(e){e||(e={});var n=t.util.createCanvasElement();n.width=this.getBoundingRectWidth(),n.height=this.getBoundingRectHeight(),t.util.wrapElement(n,"div");var r=new t.Canvas(n);e.format==="jpeg"&&(r.backgroundColor="#fff");var i={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set({active:!1,left:n.width/2,top:n.height/2}),r.add(this);var s=r.toDataURL(e);return this.set(i).setCoords(),r.dispose(),r=null,s},isType:function(e){return this.type===e},toGrayscale:function(){var e=this.get("fill");return e&&this.set("overlayFill",(new t.Color(e)).toGrayscale().toRgb()),this},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradient:function(e,n){n||(n={});var r={colorStops:[]};r.type=n.type||(n.r1||n.r2?"radial":"linear"),r.coords={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2};if(n.r1||n.r2)r.coords.r1=n.r1,r.coords.r2=n.r2;for(var i in n.colorStops){var s=new t.Color(n.colorStops[i]);r.colorStops.push({offset:i,color:s.toRgb(),opacity:s.getAlpha()})}this.set(e,t.Gradient.forObject(this,r))},setPatternFill:function(e){return this.set("fill",new t.Pattern(e))},setShadow:function(e){return this.set("shadow",new t.Shadow(e))},centerH:function(){return this.canvas.centerObjectH(this),this},centerV:function(){return this.canvas.centerObjectV(this),this},center:function(){return this.centerH().centerV()},remove:function(){return this.canvas.remove(this)},sendToBack:function(){return this.group?t.StaticCanvas.prototype.sendToBack.call(this.group,this):this.canvas.sendToBack(this),this},bringToFront:function(){return this.group?t.StaticCanvas.prototype.bringToFront.call(this.group,this):this.canvas.bringToFront(this),this},sendBackwards:function(e){return this.group?t.StaticCanvas.prototype.sendBackwards.call(this.group,this,e):this.canvas.sendBackwards(this,e),this},bringForward:function(e){return this.group?t.StaticCanvas.prototype.bringForward.call(this.group,this,e):this.canvas.bringForward(this,e),this},moveTo:function(e){return this.group?t.StaticCanvas.prototype.moveTo.call(this.group,this,e):this.canvas.moveTo(this,e),this}}),t.util.createAccessors(t.Object),t.Object.prototype.rotate=t.Object.prototype.setAngle,n(t.Object.prototype,t.Observable),t.Object.NUM_FRACTION_DIGITS=2,t.Object.__uid=0}(typeof exports!="undefined"?exports:this),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{translateToCenterPoint:function(t,n,r){var i=t.x,s=t.y;return n==="left"?i=t.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"&&(i=t.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2),r==="top"?s=t.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"&&(s=t.y-(this.getHeight()+this.strokeWidth*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},translateToOriginPoint:function(t,n,r){var i=t.x,s=t.y;return n==="left"?i=t.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"&&(i=t.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2),r==="top"?s=t.y-(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"&&(s=t.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},getCenterPoint:function(){return this.translateToCenterPoint(new fabric.Point(this.left,this.top),this.originX,this.originY)},toLocalPoint:function(t,n,r){var i=this.getCenterPoint(),s,o;return n!==undefined&&r!==undefined?(n==="left"?s=i.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"?s=i.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2:s=i.x,r==="top"?o=i.y-(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"?o=i.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2:o=i.y):(s=this.left,o=this.top),fabric.util.rotatePoint(new fabric.Point(t.x,t.y),i,-e(this.angle)).subtractEquals(new fabric.Point(s,o))},setPositionByOrigin:function(e,t,n){var r=this.translateToCenterPoint(e,t,n),i=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",i.x),this.set("top",i.y)},adjustPosition:function(t){var n=e(this.angle),r=this.getWidth()/2,i=Math.cos(n)*r,s=Math.sin(n)*r,o=this.getWidth(),u=Math.cos(n)*o,a=Math.sin(n)*o;this.originX==="center"&&t==="left"||this.originX==="right"&&t==="center"?(this.left-=i,this.top-=s):this.originX==="left"&&t==="center"||this.originX==="center"&&t==="right"?(this.left+=i,this.top+=s):this.originX==="left"&&t==="right"?(this.left+=u,this.top+=a):this.originX==="right"&&t==="left"&&(this.left-=u,this.top-=a),this.setCoords(),this.originX=t},_getLeftTopCoords:function(){var t=e(this.angle),n=this.getWidth()/2,r=Math.cos(t)*n,i=Math.sin(t)*n,s=this.left,o=this.top;if(this.originX==="center"||this.originX==="right")s-=r;if(this.originY==="center"||this.originY==="bottom")o-=i;return{x:s,y:o}}})}(),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{oCoords:null,intersectsWithRect:function(e,t){var n=this.oCoords,r=new fabric.Point(n.tl.x,n.tl.y),i=new fabric.Point(n.tr.x,n.tr.y),s=new fabric.Point(n.bl.x,n.bl.y),o=new fabric.Point(n.br.x,n.br.y),u=fabric.Intersection.intersectPolygonRectangle([r,i,o,s],e,t);return u.status==="Intersection"},intersectsWithObject:function(e){function t(e){return{tl:new fabric.Point(e.tl.x,e.tl.y),tr:new fabric.Point(e.tr.x,e.tr.y),bl:new fabric.Point(e.bl.x,e.bl.y),br:new fabric.Point(e.br.x,e.br.y)}}var n=t(this.oCoords),r=t(e.oCoords),i=fabric.Intersection.intersectPolygonPolygon([n.tl,n.tr,n.br,n.bl],[r.tl,r.tr,r.br,r.bl]);return i.status==="Intersection"},isContainedWithinObject:function(e){var t=e.getBoundingRect(),n=new fabric.Point(t.left,t.top),r=new fabric.Point(t.left+t.width,t.top+t.height);return this.isContainedWithinRect(n,r)},isContainedWithinRect:function(e,t){var n=this.getBoundingRect();return n.left>e.x&&n.left+n.widthe.y&&n.top+n.height=e.y&&f.d.y>=e.y)continue;f.o.x===f.d.x&&f.o.x>=e.x?(o=f.o.x,u=e.y):(n=0,r=(f.d.y-f.o.y)/(f.d.x-f.o.x),i=e.y-n*e.x,s=f.o.y-r*f.o.x,o=-(i-s)/(n-r),u=i+n*o),o>=e.x&&(a+=1);if(a===2)break}return a},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],t=fabric.util.array.min(e),n=fabric.util.array.max(e),r=Math.abs(t-n),i=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],s=fabric.util.array.min(i),o=fabric.util.array.max(i),u=Math.abs(s-o);return{left:t,top:s,width:r,height:u}},getWidth:function(){return this.width*this.scaleX},getHeight:function(){return this.height*this.scaleY},_constrainScale:function(e){return Math.abs(e)1?this.strokeWidth:0,n=this.padding,r=e(this.angle);this.currentWidth=(this.width+t)*this.scaleX+n*2,this.currentHeight=(this.height+t)*this.scaleY+n*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var i=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),s=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),o=Math.cos(s+r)*i,u=Math.sin(s+r)*i,a=Math.sin(r),f=Math.cos(r),l=this.getCenterPoint(),c={x:l.x-o,y:l.y-u},h={x:c.x+this.currentWidth*f,y:c.y+this.currentWidth*a},p={x:h.x-this.currentHeight*a,y:h.y+this.currentHeight*f},d={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},v={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},m={x:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a},g={x:h.x-this.currentHeight/2*a,y:h.y+this.currentHeight/2*f},y={x:d.x+this.currentWidth/2*f,y:d.y+this.currentWidth/2*a},b={x:m.x,y:m.y};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords&&this._setCornerCoords(),this}})}(),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this[e]!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var e=fabric.util.getPointer,t=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{_findTargetCorner:function(t,n){if(!this.hasControls||!this.active)return!1;var r=e(t,this.canvas.upperCanvasEl),i=r.x-n.left,s=r.y-n.top,o,u;for(var a in this.oCoords){if(a==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||a!=="mt"&&a!=="mr"&&a!=="mb"&&a!=="ml"))continue;u=this._getImageLines(this.oCoords[a].corner),o=this._findCrossPoints({x:i,y:s},u);if(o!==0&&o%2===1)return this.__corner=a,a}return!1},_setCornerCoords:function(){var e=this.oCoords,n=t(this.angle),r=t(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);e.tl.corner={tl:{x:e.tl.x-o,y:e.tl.y-s},tr:{x:e.tl.x+s,y:e.tl.y-o},bl:{x:e.tl.x-s,y:e.tl.y+o},br:{x:e.tl.x+o,y:e.tl.y+s}},e.tr.corner={tl:{x:e.tr.x-o,y:e.tr.y-s},tr:{x:e.tr.x+s,y:e.tr.y-o},br:{x:e.tr.x+o,y:e.tr.y+s},bl:{x:e.tr.x-s,y:e.tr.y+o}},e.bl.corner={tl:{x:e.bl.x-o,y:e.bl.y-s},bl:{x:e.bl.x-s,y:e.bl.y+o},br:{x:e.bl.x+o,y:e.bl.y+s},tr:{x:e.bl.x+s,y:e.bl.y-o}},e.br.corner={tr:{x:e.br.x+s,y:e.br.y-o},bl:{x:e.br.x-s,y:e.br.y+o},br:{x:e.br.x+o,y:e.br.y+s},tl:{x:e.br.x-o,y:e.br.y-s}},e.ml.corner={tl:{x:e.ml.x-o,y:e.ml.y-s},tr:{x:e.ml.x+s,y:e.ml.y-o},bl:{x:e.ml.x-s,y:e.ml.y+o},br:{x:e.ml.x+o,y:e.ml.y+s}},e.mt.corner={tl:{x:e.mt.x-o,y:e.mt.y-s},tr:{x:e.mt.x+s,y:e.mt.y-o},bl:{x:e.mt.x-s,y:e.mt.y+o},br:{x:e.mt.x+o,y:e.mt.y+s}},e.mr.corner={tl:{x:e.mr.x-o,y:e.mr.y-s},tr:{x:e.mr.x+s,y:e.mr.y-o},bl:{x:e.mr.x-s,y:e.mr.y+o},br:{x:e.mr.x+o,y:e.mr.y+s}},e.mb.corner={tl:{x:e.mb.x-o,y:e.mb.y-s},tr:{x:e.mb.x+s,y:e.mb.y-o},bl:{x:e.mb.x-s,y:e.mb.y+o},br:{x:e.mb.x+o,y:e.mb.y+s}},e.mtr.corner={tl:{x:e.mtr.x-o+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},tr:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y-o-a*this.rotatingPointOffset},bl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y+o-a*this.rotatingPointOffset},br:{x:e.mtr.x+o+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return this;var t=this.padding,n=t*2,r=this.strokeWidth>1?this.strokeWidth:0;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect(~~(-(o/2)-t-r/2*this.scaleX)+.5,~~(-(u/2)-t-r/2*this.scaleY)+.5,~~(o+n+r*this.scaleX),~~(u+n+r*this.scaleY));if(this.hasRotatingPoint&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return this;var t=this.cornerSize,n=t/2,r=this.strokeWidth>1?this.strokeWidth/2:0,i=-(this.width/2),s=-(this.height/2),o,u,a=t/this.scaleX,f=t/this.scaleY,l=this.padding/this.scaleX,c=this.padding/this.scaleY,h=n/this.scaleY,p=n/this.scaleX,d=(n-t)/this.scaleX,v=(n-t)/this.scaleY,m=this.height,g=this.width,y=this.transparentCorners?"strokeRect":"fillRect",b=this.transparentCorners,w=typeof G_vmlCanvasManager!="undefined";return e.save(),e.lineWidth=1/Math.max(this.scaleX,this.scaleY),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=e.fillStyle=this.cornerColor,o=i-p-r-l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g-p+r+l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),this.get("lockUniScaling")||(o=i+g/2-p,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g/2-p,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m/2-h,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m/2-h,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),this.hasRotatingPoint&&(o=i+g/2-p,u=this.flipY?s+m+this.rotatingPointOffset/this.scaleY-f/2+r+c:s-this.rotatingPointOffset/this.scaleY-f/2-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),e.restore(),this}})}(),fabric.util.object.extend(fabric.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("left"),endValue:this.getCenter().left,duration:this.FX_DURATION,onChange:function(t){e.set("left",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxCenterObjectV:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("top"),endValue:this.getCenter().top,duration:this.FX_DURATION,onChange:function(t){e.set("top",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxRemove:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("opacity"),endValue:0,duration:this.FX_DURATION,onStart:function(){e.set("active",!1)},onChange:function(t){e.set("opacity",t),s.renderAll(),i()},onComplete:function(){s.remove(e),r()}}),this}}),fabric.util.object.extend(fabric.Object.prototype,{animate:function(){if(arguments[0]&&typeof arguments[0]=="object"){var e=[],t,n;for(t in arguments[0])e.push(t);for(var r=0,i=e.length;r'),e.join("")},complexity:function(){return 1}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e);var t=this.get("radius")*2;this.set("width",t).set("height",t)},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(){var e=this._createBaseSVGMarkup();return e.push("'),e.join("")},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this._renderFill(e),this._renderStroke(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=this.width/2,r=this.height/2;e.beginPath(),t.util.drawDashedLine(e,-n,r,0,-r,this.strokeDashArray),t.util.drawDashedLine(e,0,-r,n,r,this.strokeDashArray),t.util.drawDashedLine(e,n,r,-n,r,this.strokeDashArray),e.closePath()},toSVG:function(){var e=this._createBaseSVGMarkup(),t=this.width/2,n=this.height/2,r=[-t+" "+n,"0 "+ -n,t+" "+n].join(",");return e.push("'),e.join("")},complexity:function(){return 1}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("rx",e.rx||0),this.set("ry",e.ry||0),this.set("width",this.get("rx")*2),this.set("height",this.get("ry")*2)},toObject:function(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){var e=this._createBaseSVGMarkup();return e.push("'),e.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this._renderFill(e),this._renderStroke(e),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function r(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}t.Rect=t.util.createClass(t.Object,{type:"rect",rx:0,ry:0,strokeDashArray:null,initialize:function(e){e=e||{},this._initStateProperties(),this.callSuper("initialize",e),this._initRxRy(),this.x=e.x||0,this.y=e.y||0},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx||0,n=this.ry||0,r=-this.width/2,i=-this.height/2,s=this.width,o=this.height,u=this.group&&this.group.type!=="group";e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y);var a=t!==0||n!==0;e.moveTo(r+t,i),e.lineTo(r+s-t,i),a&&e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),a&&e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),a&&e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),a&&e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){return n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")})},toSVG:function(){var e=this._createBaseSVGMarkup();return e.push("'),e.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,i){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=r(s);var o=new t.Rect(n(i?t.util.object.clone(i):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed,r=t.util.array.min;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(){var e=[],t=this._createBaseSVGMarkup();for(var r=0,i=this.points.length;r'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n"},toObject:function(e){var t=s(this.callSuper("toObject",e),{path:this.path,pathOffset:this.pathOffset});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(){var e=[],t=this._createBaseSVGMarkup();for(var n=0,r=this.path.length;n',"",""),t.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n=[],r,i,s=/(-?\.\d+)|(-?\d+(\.\d+)?)/g,o,u;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];for(var n=0,r=e.length;n"),t.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},toGrayscale:function(){var e=this.paths.length;while(e--)this.paths[e].toGrayscale();return this},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e,n){typeof e.paths=="string"?t.loadSVGFromURL(e.paths,function(r){var i=e.paths;delete e.paths;var s=t.util.groupSVGElements(r,e,i);n(s)}):t.util.enlivenObjects(e.paths,function(r){delete e.paths,n(new t.PathGroup(r,e))})},t.PathGroup.async=!0}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){var e=this.left,t=this.top;this.forEachObject(function(n){var r=n.get("left"),i=n.get("top");n.set("originalLeft",r),n.set("originalTop",i),n.set("left",r-e),n.set("top",i-t),n.setCoords(),n.__origHasControls=n.hasControls,n.hasControls=!1},this)},toString:function(){return"#"},getObjects:function(){return this._objects},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textShadow:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e);var r=Math.max(this.scaleX,this.scaleY);this.clipTo&&t.util.clipContext(this,e);for(var i=0,s=this._objects.length;i'+e.join("")+""},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','');if(this.stroke||this.strokeDashArray){var t=this.fill;this.fill=null,e.push("'),this.fill=t}return e.push(""),e.join("")},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this.setElement(this._originalImage),e&&e();return}var t=this._originalImage,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;return n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.width=t.width,r.height=t.height,fabric.isLikelyNode?(r.src=n.toBuffer(),i._element=r,e&&e()):(r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png")),this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e){e.filters&&e.filters.length&&(this.filters=e.filters.map(function(e){return e&&fabric.Image.filters[e.type].fromObject(e)}))},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){var n=fabric.document.createElement("img"),r=e.src;e.width&&(n.width=e.width),e.height&&(n.height=e.height),n.onload=function(){fabric.Image.prototype._initFilters.call(e,e);var r=new fabric.Image(n,e);t&&t(r),n=n.onload=n.onerror=null},n.onerror=function(){fabric.log("Error loading "+n.src),t&&t(null,!0),n=n.onload=n.onerror=null},n.src=r},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))})},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height xlink:href".split(" ")),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.Brightness=fabric.util.createClass({type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.brightness;for(var s=0,o=r.length;s=0&&N=0&&Co&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.object.clone,i=t.util.toFixed,s=t.StaticCanvas.supports("setLineDash");if(t.Text){t.warn("fabric.Text is already defined");return}var o=t.Object.prototype.stateProperties.concat();o.push("fontFamily","fontWeight","fontSize","path","text","textDecoration","textShadow","textAlign","fontStyle","lineHeight","backgroundColor","textBackgroundColor","useNative"),t.Text=t.util.createClass(t.Object,{_dimensionAffectingProps:{fontSize:!0,fontWeight:!0,fontFamily:!0,textDecoration:!0,fontStyle:!0,lineHeight:!0,stroke:!0,strokeWidth:!0,text:!0},type:"text",fontSize:40,fontWeight:"normal",fontFamily:"Times New Roman",textDecoration:"",textShadow:"",textAlign:"left",fontStyle:"",lineHeight:1.3,backgroundColor:"",textBackgroundColor:"",path:null,useNative:!0,stateProperties:o,initialize:function(e,t){t=t||{},this.text=e,this.__skipDimension=!0,this.setOptions(t),this.__skipDimension=!1,this._initDimensions(),this.setCoords()},_initDimensions:function(){if(this.__skipDimension)return;var e=t.util.createCanvasElement();this._render(e.getContext("2d"))},toString:function(){return"#'},_render:function(e){var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group.width/2,-this.group.height/2),typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaNative:function(e){this.transform(e,t.isLikelyNode),this._setTextStyles(e);var n=this.text.split(/\r?\n/);this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this.clipTo&&t.util.clipContext(this,e),this._renderTextBackground(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),e.save(),this._setTextShadow(e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this.textShadow&&e.restore(),e.restore(),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this.clipTo&&e.restore(),this._setBoundaries(e,n),this._totalLineHeight=0,this.setCoords()},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_setTextShadow:function(e){if(!this.textShadow)return;var t=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/,n=this.textShadow,r=t.exec(this.textShadow),i=n.replace(t,"");e.save(),e.shadowColor=i,e.shadowOffsetX=parseInt(r[1],10),e.shadowOffsetY=parseInt(r[2],10),e.shadowBlur=parseInt(r[3],10),this._shadows=[{blur:e.shadowBlur,color:e.shadowColor,offX:e.shadowOffsetX,offY:e.shadowOffsetY}],this._shadowOffsets=[[parseInt(e.shadowOffsetX,10),parseInt(e.shadowOffsetY,10)]]},_drawTextLine:function(e,t,n,r,i){if(this.textAlign!=="justify"){t[e](n,r,i);return}var s=t.measureText(n).width,o=this.width;if(o>s){var u=n.split(/\s+/),a=t.measureText(n.replace(/\s+/g,"")).width,f=o-a,l=u.length-1,c=f/l,h=0;for(var p=0,d=u.length;p-1&&i(this.fontSize),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(0)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(e,t){if(!this.visible)return;e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){return n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].join("")},_getSVGShadows:function(e,n){var r=[],s,o,u,a,f=1;if(!this._shadows||!this._boundaries)return r;for(s=0,u=this._shadows.length;s",t.util.string.escapeXml(n[o]),""),f=1}else f++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;this.backgroundColor&&this._boundaries&&o.push("');for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.textBackgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},setColor:function(e){return this.set("fill",e),this},getText:function(){return this.text},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y font-family font-style font-weight font-size text-decoration".split(" ")),t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Text.prototype,{_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],n=null,this.setCoords()},_initDummyElementForCufon:function(){var e=fabric.document.createElement("pre"),t=fabric.document.createElement("div");return t.appendChild(e),typeof G_vmlCanvasManager=="undefined"?e.innerHTML=this.text:e.innerText=this.text.replace(/\r?\n/gi,"\r"),e.style.fontSize=this.fontSize+"px",e.style.letterSpacing="normal",e}}),function(){function request(e,t,n){var r=URL.parse(e);r.port||(r.port=r.protocol.indexOf("https:")===0?443:80);var i=r.port===443?HTTPS:HTTP,s=i.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function request_fs(e,t){var n=require("fs"),r=n.createReadStream(e),i="";r.on("data",function(e){i+=e}),r.on("end",function(){t(i)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=function(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)},i=new Image;e&&(e instanceof Buffer||e.indexOf("data")===0)?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?request_fs(e,r):e&&request(e,"binary",r)},fabric.loadSVGFromURL=function(e,t){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t)}):request(e,"",function(e){fabric.loadSVGFromString(e,t)})},fabric.loadSVGFromString=function(e,t){var n=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(n.documentElement,function(e,n){t(e,n)})},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e),t(r)})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s.Font=Canvas.Font,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file +.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){var e=this._createBaseSVGMarkup();return e.push("'),e.join("")},complexity:function(){return 1}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e);var t=this.get("radius")*2;this.set("width",t).set("height",t)},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(){var e=this._createBaseSVGMarkup();return e.push("'),e.join("")},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this._renderFill(e),this._renderStroke(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=this.width/2,r=this.height/2;e.beginPath(),t.util.drawDashedLine(e,-n,r,0,-r,this.strokeDashArray),t.util.drawDashedLine(e,0,-r,n,r,this.strokeDashArray),t.util.drawDashedLine(e,n,r,-n,r,this.strokeDashArray),e.closePath()},toSVG:function(){var e=this._createBaseSVGMarkup(),t=this.width/2,n=this.height/2,r=[-t+" "+n,"0 "+ -n,t+" "+n].join(",");return e.push("'),e.join("")},complexity:function(){return 1}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("rx",e.rx||0),this.set("ry",e.ry||0),this.set("width",this.get("rx")*2),this.set("height",this.get("ry")*2)},toObject:function(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){var e=this._createBaseSVGMarkup();return e.push("'),e.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this._renderFill(e),this._renderStroke(e),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function r(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}t.Rect=t.util.createClass(t.Object,{type:"rect",rx:0,ry:0,strokeDashArray:null,initialize:function(e){e=e||{},this._initStateProperties(),this.callSuper("initialize",e),this._initRxRy(),this.x=e.x||0,this.y=e.y||0},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx||0,n=this.ry||0,r=-this.width/2,i=-this.height/2,s=this.width,o=this.height,u=this.group&&this.group.type!=="group";e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y);var a=t!==0||n!==0;e.moveTo(r+t,i),e.lineTo(r+s-t,i),a&&e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),a&&e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),a&&e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),a&&e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){return n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")})},toSVG:function(){var e=this._createBaseSVGMarkup();return e.push("'),e.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,i){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=r(s);var o=new t.Rect(n(i?t.util.object.clone(i):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed,r=t.util.array.min;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(){var e=[],t=this._createBaseSVGMarkup();for(var r=0,i=this.points.length;r'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n"},toObject:function(e){var t=s(this.callSuper("toObject",e),{path:this.path,pathOffset:this.pathOffset});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(){var e=[],t=this._createBaseSVGMarkup();for(var n=0,r=this.path.length;n',"",""),t.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n=[],r,i,s=/(-?\.\d+)|(-?\d+(\.\d+)?)/g,o,u;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];for(var n=0,r=e.length;n"),t.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},toGrayscale:function(){var e=this.paths.length;while(e--)this.paths[e].toGrayscale();return this},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e,n){typeof e.paths=="string"?t.loadSVGFromURL(e.paths,function(r){var i=e.paths;delete e.paths;var s=t.util.groupSVGElements(r,e,i);n(s)}):t.util.enlivenObjects(e.paths,function(r){delete e.paths,n(new t.PathGroup(r,e))})},t.PathGroup.async=!0}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){var e=this.left,t=this.top;this.forEachObject(function(n){var r=n.get("left"),i=n.get("top");n.set("originalLeft",r),n.set("originalTop",i),n.set("left",r-e),n.set("top",i-t),n.setCoords(),n.__origHasControls=n.hasControls,n.hasControls=!1},this)},toString:function(){return"#"},getObjects:function(){return this._objects},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textShadow:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e);var r=Math.max(this.scaleX,this.scaleY);this.clipTo&&t.util.clipContext(this,e);for(var i=0,s=this._objects.length;i'+e.join("")+""},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','');if(this.stroke||this.strokeDashArray){var t=this.fill;this.fill=null,e.push("'),this.fill=t}return e.push(""),e.join("")},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this.setElement(this._originalImage),e&&e();return}var t=this._originalImage,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;return n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.width=t.width,r.height=t.height,fabric.isLikelyNode?(r.src=n.toBuffer(undefined,fabric.Image.pngCompression),i._element=r,e&&e()):(r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png")),this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e){e.filters&&e.filters.length&&(this.filters=e.filters.map(function(e){return e&&fabric.Image.filters[e.type].fromObject(e)}))},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){var n=fabric.document.createElement("img"),r=e.src;e.width&&(n.width=e.width),e.height&&(n.height=e.height),n.onload=function(){fabric.Image.prototype._initFilters.call(e,e);var r=new fabric.Image(n,e);t&&t(r),n=n.onload=n.onerror=null},n.onerror=function(){fabric.log("Error loading "+n.src),t&&t(null,!0),n=n.onload=n.onerror=null},n.src=r},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))})},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height xlink:href".split(" ")),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0,fabric.Image.pngCompression=1}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.Brightness=fabric.util.createClass({type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.brightness;for(var s=0,o=r.length;s=0&&N=0&&Co&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.object.clone,i=t.util.toFixed,s=t.StaticCanvas.supports("setLineDash");if(t.Text){t.warn("fabric.Text is already defined");return}var o=t.Object.prototype.stateProperties.concat();o.push("fontFamily","fontWeight","fontSize","path","text","textDecoration","textShadow","textAlign","fontStyle","lineHeight","backgroundColor","textBackgroundColor","useNative"),t.Text=t.util.createClass(t.Object,{_dimensionAffectingProps:{fontSize:!0,fontWeight:!0,fontFamily:!0,textDecoration:!0,fontStyle:!0,lineHeight:!0,stroke:!0,strokeWidth:!0,text:!0},type:"text",fontSize:40,fontWeight:"normal",fontFamily:"Times New Roman",textDecoration:"",textShadow:"",textAlign:"left",fontStyle:"",lineHeight:1.3,backgroundColor:"",textBackgroundColor:"",path:null,useNative:!0,stateProperties:o,initialize:function(e,t){t=t||{},this.text=e,this.__skipDimension=!0,this.setOptions(t),this.__skipDimension=!1,this._initDimensions(),this.setCoords()},_initDimensions:function(){if(this.__skipDimension)return;var e=t.util.createCanvasElement();this._render(e.getContext("2d"))},toString:function(){return"#'},_render:function(e){var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group.width/2,-this.group.height/2),typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaNative:function(e){this.transform(e,t.isLikelyNode),this._setTextStyles(e);var n=this.text.split(/\r?\n/);this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this.clipTo&&t.util.clipContext(this,e),this._renderTextBackground(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),e.save(),this._setTextShadow(e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this.textShadow&&e.restore(),e.restore(),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this.clipTo&&e.restore(),this._setBoundaries(e,n),this._totalLineHeight=0,this.setCoords()},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_setTextShadow:function(e){if(!this.textShadow)return;var t=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/,n=this.textShadow,r=t.exec(this.textShadow),i=n.replace(t,"");e.save(),e.shadowColor=i,e.shadowOffsetX=parseInt(r[1],10),e.shadowOffsetY=parseInt(r[2],10),e.shadowBlur=parseInt(r[3],10),this._shadows=[{blur:e.shadowBlur,color:e.shadowColor,offX:e.shadowOffsetX,offY:e.shadowOffsetY}],this._shadowOffsets=[[parseInt(e.shadowOffsetX,10),parseInt(e.shadowOffsetY,10)]]},_drawTextLine:function(e,t,n,r,i){if(this.textAlign!=="justify"){t[e](n,r,i);return}var s=t.measureText(n).width,o=this.width;if(o>s){var u=n.split(/\s+/),a=t.measureText(n.replace(/\s+/g,"")).width,f=o-a,l=u.length-1,c=f/l,h=0;for(var p=0,d=u.length;p-1&&i(this.fontSize),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(0)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(e,t){if(!this.visible)return;e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){return n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].join("")},_getSVGShadows:function(e,n){var r=[],s,o,u,a,f=1;if(!this._shadows||!this._boundaries)return r;for(s=0,u=this._shadows.length;s",t.util.string.escapeXml(n[o]),""),f=1}else f++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;this.backgroundColor&&this._boundaries&&o.push("');for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.textBackgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},setColor:function(e){return this.set("fill",e),this},getText:function(){return this.text},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y font-family font-style font-weight font-size text-decoration".split(" ")),t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Text.prototype,{_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],n=null,this.setCoords()},_initDummyElementForCufon:function(){var e=fabric.document.createElement("pre"),t=fabric.document.createElement("div");return t.appendChild(e),typeof G_vmlCanvasManager=="undefined"?e.innerHTML=this.text:e.innerText=this.text.replace(/\r?\n/gi,"\r"),e.style.fontSize=this.fontSize+"px",e.style.letterSpacing="normal",e}}),function(){function request(e,t,n){var r=URL.parse(e);r.port||(r.port=r.protocol.indexOf("https:")===0?443:80);var i=r.port===443?HTTPS:HTTP,s=i.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function request_fs(e,t){var n=require("fs"),r=n.createReadStream(e),i="";r.on("data",function(e){i+=e}),r.on("end",function(){t(i)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=function(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)},i=new Image;e&&(e instanceof Buffer||e.indexOf("data")===0)?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?request_fs(e,r):e&&request(e,"binary",r)},fabric.loadSVGFromURL=function(e,t){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t)}):request(e,"",function(e){fabric.loadSVGFromString(e,t)})},fabric.loadSVGFromString=function(e,t){var n=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(n.documentElement,function(e,n){t(e,n)})},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e),t(r)})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s.Font=Canvas.Font,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file diff --git a/dist/all.min.js.gz b/dist/all.min.js.gz index 5e4fe0533c23026f5912b40b6af640e017874947..60add19a20c327a080f2c2780f3084afeb97930d 100644 GIT binary patch delta 37503 zcmV(vKn1ddjb5474h)VcYk_SpwU(qC?i02-&*YZC$JjVG%8=Q%$xscr=F$FiQAG>bpOh ziuFwwQdK+Q7`nD)v%+|)V4E*mJpfk?^o%sgn%xKep+0gp+ zI|k^ieSprk3{XpBoIL^j#E*=1mR;eS>G(}=jCNs1sD1<&DE%xUuAQ^6 zA`Avu9+d^R1%8W@%1Okyp$c+;aDPu9&@xg<4#rZUl$%U}iK%Ni)@g@3ngWq8(fa|A;c+S3(Zc z{_!Rf4%2Gy{sN9_Tw5o+vG?p|E#qu6#B>u=L_xmu!h zr}tlFd6Nv-F9F`)L`S1BIv0GN^!^6_M@~Pev!QGfEULpnzmN8PvCNamA4+1Hlea1v zjP|narDU!+Rk-#`vi8UM<~d=2S+x7J_-y?RGS|bbal_;R-M)yj$lVIOuJM*0pxZtL zK7|W($UC5{FzR}FGyk%GtT@7P+EIzkqaJbGTWd&;B6aZ{bQ7ufHAF5cC=tdwX41s` z8V3iAvSV5fC{u=3bPxhotBJ!${?EMaWv%|2mt@6cLC;`-Ww9Wn7s%sChY|5o-bSf( zIPSAbx+sVJgI*Y1 z3srpW@+Ks|B98>XBib(H;(9VJk{s@`x#6@k`5Oso1$^PpdG;P}syuyvr%X}I{jCTl ztP>W@SuhwZqEYLAD{Ryam*SX|K&_pcQ8sa`Dg-2x1)RABz+fBs#r3y?=(`I;PBIg6 z5($?q9RN%IyK$Y<9czMJ8j-B~&PaPiXXFX`kUYqk4X9(*H*V@h%oc4hsjE z6a`Lku~o$EzkbX2U^LLG$Vm`T;U+4bf(DC>#}leY`w-fH;A6Ip)x<|CO6%F2Rch%( zvDVlbX`LH<24$CCa>;M}gxkyDmj(ODgZ5R8rSC*rmNb?g9nhAso&(|Cb*L&?iBiaB z)ue1r6yD8Tv$EgWWR}R;t^1IcQM>#=vJQC>@Pf+(A*m|%wHe@B!PpEK2H%zc^^=>x z4jTr4&n|y|&6ka2jo@MMzwnT2By>aJ{IMk6H|ekPfc?qruC2RiqRC{sL4|H$k zk)66|lanf6pqPjJA1mWC{6Wqn$&!Tc8m^jH&dOrqh~>v;>Du0M=4eOZZ4B$61?Guk z!_B37{1~Cvzc|`7ne(=q?C6vsUEJ_L=3I+^UekaGe$9?TjtkgWTVK|voomdn zqnHaPw0H=yf>EX;GpyWdMFgKbP0d_WE}YDEtRiJD8y>wGA1U~?;4!S_F)~x8DunrR zT#Z02>CK?mF;WWDRFTNAzx7!ooqP zr|AAP4yoWDe|UWgmqPyi(A)%BnCR{oi8QJ!PME_&k_T2-NTB zw)_75`z~t#c2^Y~N9b1u0rRmKxPqsVc((O_2+hx%S_X8^O%OWy7om|Ed?%5wd%t}5 z?boNLKL(Lyx4b21eS0%M{+-!+Pka6Lte9xIT!`V?Xqn$qAI?hxI{>yoa3^r;Fc!U* zC!hqMnSct`6nba1<$P57RvIf`vE~=FQp*ygXdo?_NW;>c{H+H^rKs|#x*|WL6 zf%OdT^@C}ot*_uTUzv?HvKkqu%{sB2s#N;`|vm(^l{j6 z6s_Dh-rUuA*(o4@*fmP%LJ?TMGx}Gp_3M&CXF}X|ajST4+$v$0Ml?gV9eZ<4Yn#qN zSFSL3ur6DFCrIW~OU=sne%lf==1LTk$(o0aD7p09Vf@0iSRVBL(jPqgYs~gi%Dsmi zT;IO%SUsV|yQ3F>xR=dt+-U}=e$f2DLTrr2UK!D}*cp{mZTqVcZxh>bhZ-t0_g2(C40AL%&Y%)=<$wR+ z0?h+K7TU?(9rf~I<$BJH5DGtp6wi*IMY`qA5zPSYw!=J6oF3KK=Yw8ok5s z_p(&PYK6{zp$ZlOuZ^-r(5(nUAK1fFnSs8(*Qx3IrA%7F%xA-2Rbu}B)=17FFKjb^ zj%+XNe|$4qjaTQ{h57tAw^V#aB+Wz57Xe)J9{51>i?@{ZKh1%mR5s6-{=I~jN zXW9Tod*u`#&!=!#$qTwjbAj!GHis#ONMV%7TfxN>9fE`;$&Am0yVd*Xm0_Kk^;AJfmWA>TiIx6 zAfzdSf=Bt|$9esI`h8eO<6>A_+_+-^mI^Cp(wSknrKjI$! z<4QT>vmSKu@erls5osWZX;QOOTZu_%!HQ>919s4SU(We4)0||4&c_!hhR;K!HfSfp z9>K`u_-GuXgh}KF{vs^nBD|#cWNs4)a&?IriXJCn!H9X*RmL6@cJY%XY#$a%DVD|` zL~#A*-2o*rx5Y@?b;daxs^77H)oy0$)@#LjsTf#YNS8-Y@<^C)-rbt(5fzi7cx?v_ zE(kl36l~fng45euB-ZN`2|*n$R1SqG@6X3*DIOQjMNaFS2&JKr{gU0Y)5~a#x-TNA zhJVn-*P^z9FU$Fq{>iHQIlAqEzk`1N{uusy3jciq|2>2MK864O0{{Jg75@8Mzt3eL zF7@IT;ipy2=WnKOdKaAt6Li8JYAo5nwqnZ>LKFOXifBm%0wcj1LSUp7{Q2}^RFOG| z_T*Xdf)qh$ImA@K7`+@S&4+dX>Z6*O%=tr6xQhLfT$Cm&V4W#Ud%;c0#BlgF7?u{0 zoqCuhOCx6&v7S^A$pxu@6~~qixV=;yGf4l4?Hc9MM03j~z@eda#L0%Rf-Bs$s7c2g z$hHyX-CV^u10n&6g-I=@SO()M=?M){{Uyma0?I*QY9N^{%=a?H>1rXa*o?ZZ^7>*+ zt?I?v6d#yoMmW3Lf56e3Ljf%}eslQdh>`nYOO%q93jjKQm1uKx#gD|uHu-ggX*a|A zs9Gt-(l{$*$q_0|-i7D?*a(=r5h}|KE(EDY5I|8hfiJcYC^&-;NAMqHFBm8u|Ijm( zjmVR`h&%!c5P^A&vW8SvoF*%L|DVAhXb~29o?axgjd4a=Qa4QyC8HEq4YJJIfl=IG zdx9KaEQuX|Q#$*kRfsCQ$l2GjwRk?^u6vbT!ObZQ{_*BbFX&Xr5F({1qx<{ZP4cGz zy$$IEc5KiobR_P%m9oD`?KYg37g3GFUysmh=>j!le);a( z(WBbcSwWay@wj6>jRH%qa-I@iDX^luUTi=A;X53YDLoW_^!X1jPtSh*Lax{F&AIsb z<{~;AKR?RZ=>?szjXp@eLvp1*eb(LB z-;-$j@QZ7IMza~d&zP@d*a_Ba7!nw2tRE|}sT*6Ss`rpA9yf}pK&iwgMH?l;^FshB zU)WH{Fe+*=3uCZsStzYn=K_!$3=^!RA8{^iFkHE)=`mNPpc8^;9wF$I0dbx*LZM=I zRDFv+wZ&1^L)!ravuCY{{(5*25MyMp+;K31 zz@V-s!vpl?{Y0d|a^v7h1aX_-Lbz266xCmn0`z&CpYbPgaPsK<<>xO>Uz`Ke76%s> z&!HrL>A~74(9(bY-WnHmuwJHL1vgTew*LI=rs3+13oO93b_7^OGZL9Q+mCc>bhi=3egR;_ynBR+4=W zB6(l)BqiL*xsj9rNRcgY4E0AjUO*~_FsRQf4?A&@R3if@-ON>N&!tXt*)Nt{liD@^ zB!f{D)-`RO&}gOw{h!bV%p3%DM69d{o=ND5+wmQN9=-nh#j7tqfBWL}^wl??{dD?D z#cLn{O4x|IpRP^xrz@?K#Ak(~(m2qeLa-`-bf;;3O^2-x!byal*a5gAbjVGz%3JEoQ~pKwfUR*4Gm=g%(ab|^&;=YyD#;PGFS z-UaBnuG_g7zY+fI-t^v(|2p`csfcI{2YX71-@K_iF$C6!_c8tp5i^Pi>tD0?zeE`J z=1quy!l1M21R^AYgmaznY-_>^CuD!XU{6Yj3_58i5TEAnXsnC57WJXyoZY3EITxH$ zd8v3^%a+Sc~{eh0ducT`c(nRbHvptGQVuj$_j{X3(7=VT*zBhtR>1fuEi zD>@7)@+!eAF*FckZaTr3TK%uEZxiFzdxZ$s#`n88xC+#(g4%V;M@T8r$`F6ffqgJP zTHW8T9zTAx=Bx8cIX_HCE5%`7YMyv0Z}8^r`yJf8v)gO}vD*c3z!uUYpb*5(Ni2b& z;zFKy9J#Mr(!=#!xVBa+AQ;wR8c!mIUu6H&ygq|r)`+1c7YvJL1a6XGSa~DPf??i> z;8he1(`2%l@ykT2#uX(ldX#@RQX_VTWQL84W*TX7Cc(&HAa=0|C=|p;6gjzbdarHX zXS}plP$g~va@lx0)bCso+CMMlW0`s(^FW8PzWLEVLcCtwPx5Lq&+ZrHe0^0G^cRo7 z`)oeX7j<@DA*d3C5F2_=E=d3N2so|>P`N5`&Wg~8F$;dy}>deNigN&W8X z$weTSkAb5*flKCfBFh?0PT)VdWX{hg7qH4EkT98VSl~Nr>_yYqj-9e9F*T3?6etre zmbfh3PqSGK^A!njki~!f{Q{CnN9N|ZOq0T4!r$fD`_IbT05SdDIA&fD&)<#Vi%x*h z{$!zX$$#F*UyK<2Vk*S1RfG??@3oog6bZ?oAH`poVaFVHWrjWFuuC)S6AHtG@5aU( z*SlzV1qpA=u$yRjNqv5u+)+m$2{(IqxpAIA60*$t$_PQ8MT>tOlQn-+@p9>e3rk|9 zE#XikgLb|7O{SJ%H^m1x)H8k^ZQ?w99l^RK!v}2Q`{eFAtsQ@a%a8zhpkb!#yG>j> z0UMN%#dppF`S3cnS_{4RJXa6jaVUXH)H-;9)xLcFntDH6$0*DJ;)PPApI&`C{K5c5$nRrk=!Y*69#iTy+#;k(ZArk!B5=sy z<-2uZOi!k_NyeTc*U57Gg_9(4?EVgC7oFOMf$0?QAg>S7ITDCwLui4Zw~T{WRW z?+i4-VG&y{M{TD{1^XGj?PR@M(O`7Z2Ma6%tA_Ni6X z85!C3s8`o2>l8i+cU9TdP403>ZSRHcwRVl(b{oBYy?6bp_Q=hdqP{<&HFbJ6;&S~wKiw{d`k+;;hQ zbhwne0YcXtx`t31cQ%Pf0@~&zm$!sKIHgS?`5&zSzdT%a&`T7ooP0_Yr%~drRvsPu zT6uI#Wftv4u{VWWmKj5lQEUgUW8BGDP>Xn3z*n)^eDrfpv>A$cR1nNz}k zqw{}XrwzIMK=B{B7&2B$#TqOm{E6WfjoUHDJx!Y=ht=2(Yw_!lwiCv}tum~5<60>z zai|$7XNi$t=II*s$UJl>c|?~HzGbYAW^ffxk7lF(Niu)@cz%)$9zTZPlgE!I@SE%) zXlDgxfAQJY8c%*dW&gfVIr^oO?ZEZP-`sx&_`jhjlphR9mFNCGB~uMm-AgEI0_O?7 zB@9(4@WbhRp3U|Bt=v8rKk`MjfkDm6D2$%YHELLR zCY~xl7lG&y*H~e27vup`?{T>tLBsz|F1MRI+&%CML#Lg#ktyF(f zCK-BkTEU;N#(w75Y5$;x=nD~DTiYE?-HukCj#h0Qt#)=45rfj=YVPha`I=qPp^-=E zOp?fcj+$NO3N3+*;=vTBRxncB5`!BPD?5xHCo>e?w8XDs!Y7@y4_J!v*KP4>Tx0x# zCrmE!Max2porrl`#H20a+K6b*(V~BCjuwB!VUv+Bgx=d_wHCKtp zRrI79If8pbJ-Z;cl0^rh;R^C~S#;_5$>8YIan?cq>Cxe*hsCfs={-Y>%#-7zrz#?Z zk8S}8hS@#`9ksM^!cnN_XzQ708zrJcjbC$()65-;CZ8}ObBqE`CWuCv&Ub(5f<%3G z(0O(d#Y>bv(EuWY@^yAgisuNbY(>1fLX|LI%-8jtV+1#=Cj`0Bx7F36+Ed`Evn_=OpzlzGKc=7VgQC$LDW=xEjni<4^n>9B7Kfe#8y zP{Hbe1jlAXg%KGn7l`;|lOH9YN{73|dD2sTm>)jJhW}R z>06!_;y2xtl7kUxk_=g0m{zka7V1(mRhPnG2w*D1po33j!~)}+m-v5ie1T6DqQLY) zC8k@7q#sXJ+14s*D>@cjvRZhdaMwIwpUtZ7Yls3qURJ%Ns{c&CuNuq?TVOf3! zq=epv_8M>{F{YV5>^-Hmd)RySH(I-gy#cwDBK423PoRmYB?FBZnH@7uFSyC$QFWnP z^w~U}{QCFn+>s;r`w69oOVO02Y|7Ht6x6ZN%>Y7he?K_>3*>(nJ{F7UMEuI4aes)^ z*==hP7lIUXThR`0p03f?s@2rY@@hnAI?STiTsn+x~IJ^1`q)t;({X^jv^683pasTEmTibt@c@aWId zi47^6jDdfb7!H7yb;Dtw4-qigEaTWy#&Js-$GVK#EaR!CjHfMSJXK|g4SKE$s)&TD z&)oj3>2rDh$%Xkqhu_g~aItC35#C+JPb&(J?gveuV19km=N8qRKHT5@p1QQGSd-A| z15D1Jfl2HjqliC_;6FLUG7SuV+bjXmw30q`lj?uTKmkQOBXBNynqDPoGD}L$I?t2x z1W5C^JR~W=uD#cW3dli!mNXcy$O9Z?U~; zBV@)Qt<&sIrJQB>X-5I6d(bS?t;j#iPEn}gZBB7^8|kTM%@)J{_D=xQsdy|5fMs!ORor@eA*@lNO4)eZLj`oV zHRI@bk0!L0z-^!+HVwU6&&anlu=Bec*j9qkzz?4=j5w0B#-j~4^5BE!O_U`jPZze4 zpgB?>#ma3sMhx$?*GKzK<$#jjZTNo~FrUhz1enO%x2t^G>G0)-M2Boj2K$)}IDpkn z?rsO@5~eJxY2CXWp!2r15wfO`+hZfmF{Lp=))=xes=;w4vk&sE(5nWCN?TER5O!>Y zVSc`GiJ(NhYD)zwHo3{{Z|DXaT}a0PsADEe0gCb(2oibxRUhK~Wd)a)GT46_T!l4D z&PS!rc!Q7;vi-=ZOF&Zyy0#Q_txyzC(zn96>1yL!dFkiLYYIZ{aA=2WkYgUHp)qQ) zH9W)S2*$dtL#OQm(_k#W z`TXsZSZqx+*s`k&o_N+c*>w#t4*Q5-Yw@+FuiIl0cT92OYmHyepIi)EwjedrHpKe< z&79ntO_{8XrofV+kBUBKw`PB4YokBV=E!+-bk~ryaPM@YoHtl-f~*F1fR~e(PZWQK z-i-9+Es^){I2f6{&hS7egLo4UgAvw!^!$kuIf-s~7gTU^WG|=Z!4SgixqD8=u*!@R zHtx45@MyjQ(alm;qpY`m^&*$dXV14*_2v%82{b>~_UG-f9V<7P=R{DIy|ViCfXb>J zb=!%L4gcG0ncK3;l$|bL!`*2uVmP&6DfFhTTUGO#q;wAyhu5Y|JX3yZ9qVTNn&SJLVQnvMe;a1EnA#1UP-yUss_>o5qN!_PRsZ06p$HXQ{acsca@@l zfHo~mXEWF`uh}sC(V&esI=5zcQ;hL z$Mo~;T~0>#7|8Si$8@ZI9X%cPBVIRuc0rG^{)A;Z_!gpoQ)RYEc-62U_l1@ zHyRsKGW``$ZR(r4VULuPf!4QK_7RUDuk}_@1}`!_BfP}aa6E*>*{=93Jwok85nV&& zlb31nF0Hk%6;mhAOtD=xk2OMC+3MI9=(*0iVw?G3cjNeuM24er<%yNf$Ya)jOa7v& zN^&2ynokdk61SAxa|i!1p$`1VLB@3k%IT5WKSvdqHTo3e@)pbE%esKxq|G-rsnFf9@1Dc$@Ms=rGWGQbOfEtUy zXWQ~tlU!67e|lzLwa(}dMrdd!l4luq_QibOyUgMGN^gHyoHOvc#Lw)Au#t4%as^aX zvs}KYHtX(4E>*CcA+)B=xHq-1=r(Uo6xJvV zog_Yf9JmV?U56Elr*c)10 zg?#h#B^Qk|8cG?|N-@r>rk=c2pv%;u<5x&|e{UXt_Pm+rpB>{P;y#zKo`i8gpIy01 zg|G?jaF{0($JASL3&^?HrFYxOf#!=6TRDZLB!uJke{kwW7Y4`EfHk(+_k7EdMbksc zSQgNhj;DnvlT%*inl@z1&vO{R8Y2a8NKA(G%{sQ{70@Cwvx?cdU7UiJF~0-bM956y zx8`mRFycEeTh}qg8cTh}s`H#go)1=_QJxj5 zleY&1UWHj$Ey!zfh%(X|_c#jY>5B;r(E^^Re_39kiX0Ddilqnf-7>8ZJSN*<7EZxY zW>a3#HP+J@t4O}=wiGHOnehA|aF1KLWsV2VdY+|~AY4A;0NunCXgNyKE={@2!_8Qj zjk4^TT~aDqu&bd`_fs@rn%9%Gni^|W5cOt++(lN5L{@H#k(tcV3BB#NPY7VYMWL-Z zf0;wqbIYq}Na@Lib<3VtAuWb3=P1E@)ECto$K5#4H3!4M?Lcrb^7nx8wxFKJkC_{J zi|pm%H3h57-u8ZG;`FyuS^dAHYxa=4r>HI6&>ugx7(WOzD~e?~jaw*sS;^;f_T}PB z(qkd>cuQQk6hh?2#g)pY{ou_mWO0i7fAhzmsrcqziegjL?cTDa3Qi!|7^KB`V==Gs z(mfHSu!*{%SIcgMeEW>N33WPE6h12M?+aO#NOWFZz?vv%reO^UCd`OMxG~*0DQPzo zup@Gz7JM$2pztFhwxGGpjk*wgO+!(@-HMkt(F}1YtOsHWUe`j*9 zJ2ICZW*5WhMmICy-MtyA_qy*OY;ILakf3IHggLtJS`BZ5$FeYSJJn zdNYVzJB_39eJxWeCt?20r6J=je=eoD!Wtv-`&QVN^?|2yhO5k{G6};fJ0hPXkB(!+ zepcb)3G?W91E)0=#9Q=hKf^%Vk-?*730!>`_2wkwYB}P}vVY!EHbXJHMK9G*Y%jU> z3S@N+BCUX*iFf4p*Lhag|MvQa?^{dK$+R;H&ts2!1(PYhBj*{RcJ&e44Rt@f96KkM z=Opu}wYHO?(zj3(GW zRwZ1=mwCp_OI*b)dKaoG_KLUkrYOK#(GfBs?YxU1T6}-P2l1mma4ihh(|EUc?G}JB zg50ac0#3vF$0|#2E>YSl%(tJMjBjt|2hio39?l27KE9==#WY3Lb95sZ9E{29hIILI zP`|r6`0=ODzWwIqLC`%q`uo$DM@OHZetrNgIT-W?M@L_LPaZjf>*aDWJUV*+{(bNL z(_UF!9f^PU?fMAP9${L@cLe1P2EFNW8a#hfJRx*ep@0k(1@RMTU{NQY(vJK6KIW#{ zDAkaZM0{xnfBW0tjwqH=8yz0F?n4BS?pXa|9%N{+BTp!g=|`lQNkG&ZoC|03Z~I5y zoz3F=@e`p_t)qoz^?}exaPpzP!V`X*)Gd1=exQFEgKp(*CpZX<@3r$SiwSTxVJJE@PKA)2yC6e@SB7>A`#0GzVYuCiu@9rdDhSF&XIXhSCR=aaKQ9 zDcS&O!^Y7NHL^5-YWaIN;Q7=$(hgwU!N@us-!vNMSu;oq9M6GAGHp!62 z68^;UxHk3bTCTP3$UkYhY6w+9@0BAqR0e;W30lYAO4R11$TB0z+3sq~2nqs9vBgI#%f}MXv zWbRc^tP105xQQ=OzxcHLvMLKdF!iq5gcNFzs<2zwsrM5sZy371Mf%mwyfjV!O2DO(g*Uqq+^n%7cTGR35M(Vo~1YR$_{ zFR`gLW4>+JeK~qWhW73pUEyOlkNbb|K4WY>G1An2SynjSA2i%{yz<(-Z4NpEX`JUu zQ#+miGiIgp2hR%b_tUZkzkAP$mwQ%>;NFX}Zp8s4(j@7Y`CKBEAoKdPTurWD!}SaG zBd6oA@;oD>LskT90wO8pU2n_cyK+@$pO^0oxahTK!r^f8d&q zhk8#G{rEBc5yaG6*Hu0h#8gm@{=|mnltgsv^6IAp>dkf4`7t@quyogOGsGvVzSMKcJos%3`UM zkZB175?h2KJ$jLq{8pykVo_c;g=kcV7LjOqC^)WCKo}wAO5w;zPx4U;j1GR!;Clv) z54veDll1VD!@4s&`~;!55yZIz|8xfY2jP^S#u%EcVh$HSj^PKow_AT14J}BnkKQB} zj7!t(?=B@T0Rwe^|7dB9Ok^k~NWQQ!a3j+-5hoQ8rkQY*WsYhvw9T0cYs{_vD4btq z1VxNa5Sw|8NKaN}(Boz_Y<;$6L)!lDt8`B850}+ikvPLtC?LN1=sy?PRe+BxkNUz_ zeHGnpq_e8gl*OJyV~~F~`|Lnm^2x45yqOF$!_S}>pH;vY@&$7X1TE##z?l*$7UmyDxon(CXj#HwhpKvPK*-pJI>7F z61RL6EvCRsAcCAEXU!yM@>0{*v%Ol+4TLpeb;oU=+nBy%GSjqYQJ~6>EsFwTmfFBS zX2m3*Z(r%|mWbP6ZH&%JnAW%2t3+%Z(jG|TMU|lsJK%{wuhRGAf?RS~lXQXnfC&FF zU9y)4;{f-R=gof|Twj@$b`N?_$=Bz*#X{25h(-+ezwF4iw8r}7r zIHuCI^uItZPDZj-h8Eu2bjsN8>P5cM&>r)*;Szm~kn<#!$u}X6Qw^@J*+C0kUMfJ@ zWJ$KsAp|rK&3XEOkudsB4aM1dz-GM6uJVGX#(X;$T|<8u=)w*e;KPSAnuhRZpww2Z z!6B`cN`h0M-k|A@CoE85{kK&*t>~0mRc7&VEj=4JjjI}sgKN^ohH0|VyjYTa8g)eA z{rM~GGM>V1caY2SRtcdnt%2bXnpJ8gl6P6PWDf+VrKrG48Ow5!INcgw>Fuo*x3=Qe ztTpJgVc36orbTO}9RC4+5~r<%KLhl6QLEWWVRmNP19^HfBkodQW7hVRl;{G3cEAe# zorvFa{GH42wfa5B-&k|XHK!e_dv18kz+|7P0a7kg% z{~;sh#r`37Ol36Q2aiN!^B@4>Z5MT);m5jLA*z3*C)Gfv8gQzSgzx$8Ac$2Vf&73Z z_+dgi58_mNCRv@NgzhX5{F_59i~n~h5tn;Ff7kSPCcbC<9r^pUk}Y0|eyuu#6WM^r zk3(-aA&tt`5nVN1xlo(FZMKPC-j&VvF0#c3kT#^JrwV%ET1pFNgAJ2m4MuEf^Ikr7 zZ0VCeVkLh*3U7ffHBZY2knzd9tTPW8w}~Cxn5AHv<8WM})l_X6XhYOn4wIWe-sj||q?euFaJ^EK0wH)PXH9=sX_$gdm310WdZw`-R zty#j^)Z#=Xlbq!CcceN63!q#KtBuVnz%h!XC%1nT$v=!`YBI-8QLYk{3}+ENdL$ll z^HIc4pZUhYf_X_Eiyz9oiYr7QM{>sr1sn zQ}^FEf9NhYW-DvkGSyld>>?;WrOpyaR8Vp`syouYF7XlnCzk0lN%YnQ+$5#1&@ zn?7w#l(yE|`Z0R&K?GloHt9%bwFYqwBx&Ys9udNe0jYpe%<5#ZY2Kb1TdBq?zO7KdDYxT zBp;IbpFz2rBjqJuMl!VSl?CNV-}GvjpVXsVd-yXJIaz>+1yh~p7lMBjIwVF26Fz_Z zzU>T{`r*eKK8OVBec~m9<$pIBEcYdYCGrpd1L)v`#S@OPkQCIi(Zu#8_T$cD(oIXI zBj++;O$Xfi!IJ|=w-Hkl6nMk~3fM-BPV zu5b*D+y53Evzg&+bw7AAC!A+^#6sb_Rgn|U)+x}>8jhJ8WTe^p$_jrn)N}~vOX(S! zA1~FraT=mii39ovUGyFFdrzZ4r^GjT0+k!099M=imVj9b<<9y9^YcK|F)yA)aYu+@vaN;LmcPDHURnVfUI*6KUv3w0tNiZdU~d zG3>b?^V@8GN~)Y+=EZ*$hjXdEPRltAEZ%7PvAb59FH)0L1w7VLO^pz*H17vWD@pU47+A^j#5WDJsZq8TUG~bGV7)D z<^Rgo(lXZGQ)o&gig04ap)Bc_M@bTJEc+@E!DMwnATi@*kCeZDd7WPsNp~=`z6X(N z)S17iGc4+|TrSHSRo0nP)|p$@FRCP6yb6kjMmvom5kW?dMkL}KOIveSn$on36ej{+ zc%@2d0i#FPe;I#=7U=qbv&s%DRNbUE>?v=}mt|FC ziVN#5Bn`9ixQWp}mVp3+erT4u7#@gvWTx?^AUqfvEV6(1uTVME%7pg`Pd4#X>Y;(; z!F~C>Eqc7{CT(#;x+Jz|Ew*GWl71v^7jT@d;M!-Y`r(zVE$`v+{rzBjY-BvpK1H`^ zq#MB4_>j?trSCS>R6knqeN{e>x;J79PZ}Nq3GY{_X`4{>#5yu7lNw`_6xJwy#rs6O; z@d0Q|L~#KxnU$u7sro6MR2mg7)vwEW5UnHySMGniWUFLy_3N^t9C*^nhl z6*;#HzMLDKGYW?EczBIeFJY{_JyHyV%YaB5l`2kojpZ>9>#!1MFMprO?=vMHD|@%y zibakj>E@>zrO^UDV2TV7|&bXbINIW4Xb#aD<4 zq`QAR*(iNZ0`sU3y5V5c(o=O@C3pUscXqqkBUzW131ZbG-p603#dOY_^V{;OfqU!Q z$hzJ^Ty}b$Iz1dqZ3aFTcRC^UNJ?bmH;w7s5!@(Ge zV=;=F&(IALML0GVSsI7Zv&ypUq!_i@ z#E5nDQg{gR@wtQ;GBaKb&zpg<@=E8}>?znFGc_M?ZH(1}265xga6j7MN+&V1R0e-Q zR1TacgehpccCq(ZlQwXLBa*VgrJMziIDL1b=*qZf9UjLJcG4%L4f8r?enq+g)}?FSTU(W#xs|O|WoN3gwOQGjRoR)S ztR_{y=VfmJ^afuTI;`BgdIys7Q}~XQzl;9MWd%E=d8pHF28|aNA`8LAMrCsTCw#TB(0BHwikuUvF@+tx{C>vHtM zj?Kd$ZeSVNMgbN~6Am<%olUWku%=h>EM9eT__w72yYqL-?tsgnUmsi!m-V6fJ2})n zlYh6BW9izOmIXxa<+oZ0)?m9sO-q4Qf2X_b&U0Cz-RFsxZt#DVQVNn*1i>9T-=oBX}x?!70K0(ll1aqWaz!i>l~&> zA|P9{D&&6qmli#|{+-fBW$Bzeu;^IIK3jzyIf_?XdY*q973ZQTQYn%raD5SyJ})BeI5*L_fiuF)BGKrc>%50V5pj>^)nogfT52lW zhjHBWk#_`tviMFnKE15VIn2And{|mtFZhezK>GCj(I;OR!uyc|LrIFgdQOiV&c<}T z`pKJRU7w<7sm%T+D*9Sq*YIvMK632gz zi_o3wL^!OZ@@=}4X%2K_Oxis3G%9dLq>;}!a@)Y{8Ld9UTjx6T-wJRL5Ogb}n&C*W zJe9b$=(iu%s#iA5$RH^-dUPGtm;nnA`$6tr6dJtMNMwaS&w-gjSETz5i`F}BdE^vJ z>EXzKie|&`;%^n?fmM_pG8{&1A<+$HeiuW#P{*BrYdxR|I&JfLf1aRbn973UYOA#K$%U^S z5UgA&yU=-V5k{M}U>8veNY~RubJLuQI2#kIATm~V_w0F4bS1o8P-ObI@v}C68$aLc z-^R~E{e~-5a(6>KM};aI)$lmJtcFkHo6F%R@#TE@EWVi!KaH33;a@h6qBvYGl%wi@ z9bT;cisu&BWa+B6&i9?6LhGk)0^!9lK1>=RhI`&7xL?u;X-)pqB5}TbNf`<-u|ItY z1&*O!FZ8AiYYO6&s9z*vM?i70Ck|oUvXaMP@gX3PTQYqR2qY|}1_C77>iKHf2LI@9 z*LL{FEqU7d!mjSNp;MXBNLe4XQW7EIQ@4pCMfW*O2&C(~i`$odx{*s%;ZS{54dz3Q1DuZ6{b$am#b zdH>C8q3Sqai&(inn=wkqTse=kZ}Bc0=o+c?^oqAG$TU$yT+er;BPMZglq}qRzu*44 zKSGc4LPcuXBgHFd0a;qekA&{9Fd{J4vSUp&8tnp=+^LcS)R)(3ag|NO$i|Hqcl?`j zn$PmabC2q$h?P%D2+#K}hu*V)p2IJ)%r>1iINbhoRV)37&|64L*$H1w{pB0_>-)Ka z^Sq);8GY4ui6(^)rG!wcv99=XD<{JgFet7#6cWAyi7qKc10DZvtaiH<$%so1P$lhVtYZS)gp3 z_2>g%K8L_2u9nLZpMwVs`uq5C8})R36|J&{T(T-X!6Bg(SBP{s9)XA{ zslnX?C#msRu9U@Xp$yu80}0n^En4hW16}=cii}%!Hkz5)3e)WC=?;ScF)poDsOSLv4*Hx#A=}bp=Z8L!?PT(^Q5AVY{f;T58G|gSR?Ol#$F_ zkZ{-4HXnZSz5QTNCVdY%K6crY&=cm4is#B7rzeSgbZgDMBv{)Zx2@chAat$7sf7-~ zAbO1xw^9ybyOdGD7HvAW6g~o)lU#Kh376H9XuN&T&0Uj#brgR_9y=0kMB_Y+3xQfVZZnS&q(iBnl_Vydec@J^EJ(mqx<_uI^*1{TtD|{!7GZ| zY9)o^0L+isSYeYBb`pOuOd_F?f+C_}b0EiIXqiOPEV>vA5v|k~W$}4W%;XC$S`;i# z32o9r9f5=J(F_O9&ZOES7j5g<`K$XvsOkG_jg=aIJ;TWhDL2G@S)26xl?{mwtCjh(Er{|3I}$uz}1US(7&-C6*Q$s9}zdu_IxqV zvkF4w(@QS0+(NRX-;twk${x~+RudEW=6 z%bn2gH6|JtO$JkHs`hqIOVolV)CX=;yBm-p&&y(DDAQM?;H;Y$9yTrS) zd>lry#SKWK;gb(|Apr-IF?baxMyH(nXUoNX)zD-7u=O=ZN89_YE^}Gyp}Av9G0b93 z5#Ue~)M8kZZFm_0)RTvJ9)Gn@ywmOLe3}`3rcp40oZ1>~+tHKld8cqGTcY)h6R|PT z5+8ox%*%9&vyAIyp4Bz^fNR&qlgTle5Sp4nO+bT3nJJWm!+_s~GvpXa-6I%d#@-@D zqm3*YW+S~%LQ^zt(e1ZcF^An&NFjF7lb#n%oibwOKD+wC@W)#thkp_&B|T4qR)a*u z6eTUSlP3DW`~E3lxEY579Yt;BbRiZ+{hu^H#c*L zh`6vQO^zF}MBu?;&U?~yW2|~%4pnHUvD@#uWKOb1(EWWsE?n=-PC7cj`c7MG-Bw9I zR2Mzt&4}J+BD<;9fq$-xrk{@*!$*icwqI&15iA5=3$e3ETNlDGKdY6+K|@vugQ*#3}5)S&hC?R~3t1()qECC7jI5BGa|NNwo}3 z)(jOatU`92bG}01f`o82Z7eM|hAN?K9vwp>K}?VG*_st~Mt`~@EUsKF3CYUrNMX~% zrMaw7>lD&#biGC??G7Y&;n0qjQcK)nBbSnKa=A%Ccujr3y2zJ=e22#CEs(1){B4&W(>W(Ay$aP( zd8*29S-9nd5)a#<5QPK^JV`-QNem^8MQFTX3B!fHv{~p&aHfGoWddpg3+5NZ;=~_k z_(K3jLmU~uL#_$Q1zw{%#Naq?LfIkusYJl&$CnNG(tkn!I37HE8Y6gVzxS7CQ6P$J zPef^&_^X6hFFbNGXG!+xD`;lGki1o6`%+`q*1^e)W?%jRzhnaW=piq%M>Ty)~2 zZqq~OO-@73!QbJ>w>gBN`v%6e=dyS}#Pa|9bylzpdf59!M3GqZ%M>3Ypgl@W_`4Jq z;4PPNlYbYKiYw^#2eFp$3W{FX2}&bLah<--_4Po6(kCA4yxLlY3j;sBTZ z0WJCiUh)UL;Q7zl0WEg=_w0Zc_kmdK2YQJg;2MfLFxJn3*mUCW*#Xb@fw77XoHcYH zSLH!tlQ(=Fe+vw(S$zqUe}%x$nd6Ox0US^j3jZ=Z_-hzCV1FNl9C(lmsAX~jEKAW? zXwV`|7Q}cQ=>#HoB&%;gjW=uO9ots3D4?}siOVhPRVW2mKL4_65Yx7^4o=ssg~L_< z*jI#$<3WLjJ`HCy4P-xaPrRc?+WxF~qxAc2+}`!wM7#XOS9Obik+3�S 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 delta 37491 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 T>kiz|qsjjVGpFn*xXA(ldaFA% diff --git a/src/shapes/image.class.js b/src/shapes/image.class.js index 1251e0c9..da493e62 100644 --- a/src/shapes/image.class.js +++ b/src/shapes/image.class.js @@ -283,7 +283,7 @@ replacement.height = imgEl.height; if (fabric.isLikelyNode) { - replacement.src = canvasEl.toBuffer(); + replacement.src = canvasEl.toBuffer(undefined, fabric.Image.pngCompression); // onload doesn't fire in some node versions, so we invoke callback manually _this._element = replacement; @@ -475,4 +475,11 @@ */ fabric.Image.async = true; + /** + * Indicates compression level used when generating PNG under Node (in applyFilters) + * @static + * @type Number [0-9] + */ + fabric.Image.pngCompression = 1; + })(typeof exports !== 'undefined' ? exports : this);