function RedirectToOrder(n){alert("design Saved1234"+n.response);window.top.location.href=n.response.location}function showSavePoup(){}function Exception(n,t){this.message=t;this.name=n}function Progressor(n,t){var c=c||document,r=t||$,l,u,a,v,y=this,w,g,h,f,p,rt,e=250,i=250,o=6,k="#FFFFFF",s="#2168c1",d=!0,b=!1,nt=!1,ut,ft,et,ot,st,ht,ct,lt,at,vt,yt,tt,pt,wt,it;this.appendTo=function(n,t){n&&!0!=!!w&&(it(t||null),h.appendChild(f),n.appendChild(h.cloneNode(!0)),f=h=null)};this.show=function(n,t){if(!0!==b){if(t=t||c.body,p=(n=n||null)&&n.callback?n.callback:null,!a){if(!0===nt)return;it(n);var i=c.createElement("div");g="modal"+(new Date).getTime();i.setAttribute("id",g);i.setAttribute("class","modal-container hidden");i.appendChild(f);h.appendChild(i);t.appendChild(h.cloneNode(!0));a=r("#"+g);f=h=null}a.removeClass("hidden");b=!0;y.start();p&&(rt=setInterval(yt,100))}};yt=function(){!0===a.is(":visible")&&(clearInterval(rt),p())};this.hide=function(n,t){b&&(p=(t=t||null)&&t.callback?t.callback:null,n=n||!1,p?y.stop(n,function(){tt();p()}):y.stop(n,tt))};tt=function(){a.addClass("hidden");b=!1;y.setText("")};this.isVisible=function(){return b};this.start=function(){!1!=!!w&&(l||(l=r("#"+w),u=r("#progressBar",l),v=r("#progressText",l),CustomEvent&&!0===d&&addEventListener("progressor_animation_complete",y.start),ut=r("#c1",u),ft=r("#c2",u),et=r("#c3",u),ot=r("#c4",u),st=r("#c5",u),ht=r("#c6",u),ct=r("#c7",u),lt=r("#c8",u),at=r("#c9",u),vt=r("#c10",u)),ut.velocity({fill:[s,k]},{delay:e,duration:i}).velocity("reverse",{delay:i*o,duration:i}),ft.velocity({fill:s},{delay:2*e,duration:i}).velocity("reverse",{delay:i*o,duration:i}),et.velocity({fill:s},{delay:3*e,duration:i}).velocity("reverse",{delay:i*o,duration:i}),ot.velocity({fill:s},{delay:4*e,duration:i}).velocity("reverse",{delay:i*o,duration:i}),st.velocity({fill:s},{delay:5*e,duration:i}).velocity("reverse",{delay:i*o,duration:i}),ht.velocity({fill:s},{delay:6*e,duration:i}).velocity("reverse",{delay:i*o,duration:i}),ct.velocity({fill:s},{delay:7*e,duration:i}).velocity("reverse",{delay:i*o,duration:i}),lt.velocity({fill:s},{delay:8*e,duration:i}).velocity("reverse",{delay:i*o,duration:i}),at.velocity({fill:s},{delay:9*e,duration:i}).velocity("reverse",{delay:i*o,duration:i}),vt.velocity({fill:s},{delay:10*e,duration:i}).velocity("reverse",{delay:i*o,duration:i,complete:pt}))};pt=function(){!0===d&&CustomEvent&&dispatchEvent(new CustomEvent("progressor_animation_complete"))};this.setText=function(n){n&&u&&("none"===v.css("display")&&""!==n?v.css("display",""):"none"!==v.css("display")&&""===n&&v.css("display","none"),v.text(n))};this.stop=function(n,t){n=n||!1;r("circle",u).velocity("stop",!0);wt(function(){!0===n&&(CustomEvent&&!0===d&&removeEventListener("progressor_animation_complete",y.start),l.remove(),r=c=l=a=u=null);t&&t()})};wt=function(n){r("circle",u).velocity({fill:k},{delay:0,duration:i,complete:function(){n&&n()}})};it=function(n){!0!==nt&&(w="progressor"+(new Date).getTime(),h=c.createDocumentFragment(),f=c.createElement("div"),f.setAttribute("class","progress-container"+(n&&n.hasOwnProperty("containerClass")?" "+n.containerClass:"")),f.setAttribute("style","width:248px; max-width:248px;"),f.setAttribute("id",w),f.innerHTML='<div id="progressText"style="text-align:center;margin-bottom:4px;display:none"><\/div><svg id="progressBar"style="display:block"width="248"height="16"xmlns="http://www.w3.org/2000/svg"xmlns:svg="http://www.w3.org/2000/svg"><circle id="c1"stroke="#000000"r="7"cy="7"cx="7"stroke-linecap="null"stroke-linejoin="null"stroke-dasharray="null"stroke-width="0"fill="#FFFFFF"/><circle id="c2"stroke="#000000"r="7"cy="7"cx="33"stroke-linecap="null"stroke-linejoin="null"stroke-dasharray="null"stroke-width="0"fill="#FFFFFF"/><circle id="c3"stroke="#000000"r="7"cy="7"cx="59"stroke-linecap="null"stroke-linejoin="null"stroke-dasharray="null"stroke-width="0"fill="#FFFFFF"/><circle id="c4"stroke="#000000"r="7"cy="7"cx="85"stroke-linecap="null"stroke-linejoin="null"stroke-dasharray="null"stroke-width="0"fill="#FFFFFF"/><circle id="c5"stroke="#000000"r="7"cy="7"cx="111"stroke-linecap="null"stroke-linejoin="null"stroke-dasharray="null"stroke-width="0"fill="#FFFFFF"/><circle id="c6"stroke="#000000"r="7"cy="7"cx="137"stroke-linecap="null"stroke-linejoin="null"stroke-dasharray="null"stroke-width="0"fill="#FFFFFF"/><circle id="c7"stroke="#000000"r="7"cy="7"cx="163"stroke-linecap="null"stroke-linejoin="null"stroke-dasharray="null"stroke-width="0"fill="#FFFFFF"/><circle id="c8"stroke="#000000"r="7"cy="7"cx="189"stroke-linecap="null"stroke-linejoin="null"stroke-dasharray="null"stroke-width="0"fill="#FFFFFF"/><circle id="c9"stroke="#000000"r="7"cy="7"cx="215"stroke-linecap="null"stroke-linejoin="null"stroke-dasharray="null"stroke-width="0"fill="#FFFFFF"/><circle id="c10"stroke="#000000"r="7"cy="7"cx="241"stroke-linecap="null"stroke-linejoin="null"stroke-dasharray="null"stroke-width="0"fill="#FFFFFF"/><\/svg>',n&&n.hasOwnProperty("labelClass")&&r("#progressText",f).addClass(n.labelClass),n&&n.hasOwnProperty("label")&&r("#progressText",f).css("display","").text(n.label),n&&n.hasOwnProperty("fillFrom")&&(k=n.fillFrom,r("circle",f).attr("fill",k)),n&&n.hasOwnProperty("fillTo")&&(s=n.fillTo),n&&n.hasOwnProperty("delay")&&(e=parseInt(n.delay,10)),n&&n.hasOwnProperty("duration")&&(i=parseInt(n.duration,10)),n&&n.hasOwnProperty("multiplier")&&(o=parseInt(n.multiplier,10)),n&&n.hasOwnProperty("repeat")&&(d=!!n.repeat),nt=!0)}}function Tracker(n){var t,i;this.Type={Item:0,Category:1,SubCategory:2};t=this;this.track=function(t,r){if(!1!=!!n&&"undefined"!=typeof n&&null!==n){var u=i(t,r);null!=u&&"object"==typeof u&&u.type&&"pageview"==u.type?n("send","pageview"):null!=u&&"object"==typeof u&&n("send","event",u.category,u.action,u.label);r&&r.callback&&window.setTimeout(function(){r.callback.call(this,r)},500)}};i=function(n,i){var r={};switch(n){case t.Type.Item:r.category=i.locale+"_wizard_item";r.action="apply";r.label=i.label;break;case t.Type.Category:r.category=i.locale+"_wizard_category";r.action="open";r.label=i.label;break;case t.Type.SubCategory:r.category=i.locale+"_wizard_subcategory";r.action="open";r.label=i.label;break;default:r=null}return r}}function Projector(n,t){var f=this;this._init=!1;this._drawCanvas=null;this.PROJECTOR_INITIALISED="projector_init";this.PROJECTOR_MODEL_LOADED="projector_model_loaded";this.PROJECTOR_THREES="projector_threes";this.PROJECTOR_JSC3D="projector_jsc3d";this.PROJECTOR_2D="projector_2d";this.ZOOM="zoom";this.ZOOM_IN="in";this.ZOOM_OUT="out";this.ROTATE="rotate";this.ROTATE_LEFT="left";this.ROTATE_RIGHT="right";this.VIEW_ZOOMED="zoomed_view";this.VIEW_NORMAL="normal_view";this.offset=0;this.overlayPath=this.editableRegion=this.sceneUrl="";this.userProgressCallback=this.overlayPosition=null;var r=document.getElementById(n),s=t.width,e=0,o,i={},u;this.init=function(n){this.offset=n};this.setType=function(n){o=n};this.type=function(){return o};this.setState=function(n){u=n};this.getState=function(){return u};this.isZoomed=function(){return u===this.VIEW_ZOOMED};this.productSize=function(){return i};this.update2DModel=function(n){var t,u;if(r&&this.overlayPosition){n=n||0;t=document.createElement("canvas");t.width=.5*i.width;t.height=.5*i.height;u=t.getContext("2d");u.imageSmoothingEnabled=!0;u.translate(t.width/2,t.height/2);var o=r.width/s,f=.5,e=i.width*f,f=i.height*f;u.drawImage(r,(r.width-i.width*o)/2,(r.height-i.height*o)/2,i.width*o,i.height*o,-t.width/2+(t.width-e)/2,-t.height/2+(t.height-f)/2,e,f);this._drawCanvas?u=this._drawCanvas.getContext("2d"):(this._drawCanvas=document.createElement("canvas"),this._drawCanvas.width=this.overlayPosition.width,this._drawCanvas.height=this.overlayPosition.height,u=this._drawCanvas.getContext("2d"),u.imageSmoothingEnabled=!0,u.translate(this._drawCanvas.width/2,this._drawCanvas.height/2),0!=n&&u.rotate(n*Math.PI/180));u.clearRect(0,0,this._drawCanvas.width,this._drawCanvas.height);f=0!=n?this._drawCanvas.height/t.width:this._drawCanvas.height/t.height;e=t.width*f;f*=t.height;u.drawImage(t,0,0,t.width,t.height,-t.width/2+(t.width-e)/2,-t.height/2+(t.height-f)/2,e,f)}};this.adjustProjection=function(){};this.loadSceneFromUrl=function(n,t,r,f,e,o,s){this.sceneUrl=n;this.editableRegion=t;this.userProgressCallback=o||null;this.overlayPath=f||null;this.overlayPosition=s||null;u=!0==!!e?this.VIEW_ZOOMED:this.VIEW_NORMAL;i.width=r.width;i.height=r.height;this._drawCanvas=null};this.onProgress=function(n){n=Math.round(n.loaded/n.total*100,2);e>=n||(e=n,100<=n&&(e=0,dispatchEvent(new CustomEvent(f.PROJECTOR_MODEL_LOADED,{detail:""}))),f.userProgressCallback&&f.userProgressCallback(n))};this.onError=function(){dispatchEvent(new CustomEvent(Gillette.Enum.Event.PROJECTOR_MODEL_LOAD_ERROR,{detail:"Could not load model object"}))}}function Profanity(n,t){var i=n||null,r=t||!1,u=null;this.check=function(n){if(!i||!i.length||0<!i.length)return!1;if(!0===r)return!!(" "+n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+" ").match(u);for(var f=!1,t=0,e=i.length;t<e&&!(f=-1<n.indexOf(i[t]));t++);return f};this.sanitise=function(n,t){if(t=t||"#",!i||!i.length||0<!i.length)return n;for(var f=r?" "+n+" ":n,f=f.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");u.test(f);)f=f.replace(u,function(n){return n.replace(/[a-z]/gi,t)});return r?f:f.substr(1,f.length-2)};!i||!i.length||0>=i.length||(u=!0===r?new RegExp("\\W+("+i.join("|")+")\\W+","gi"):new RegExp("("+_profanityList.join("|")+")","gi"))}function WizardConfig(n,t,i,r){var a=n,u=t,w=r||$,e=this,o,v,s=!1,y,f={userDesignId:0,design:null,product:""},h,b=["<br/>",'<b class="bold">$1<\/b>','<a href="$1" class="page-link">$2<\/a>'],k=["","$1","$2"],c=null,p,l;this.init=function(n){if(u&&u.products&&u.products.length&&!(0<!u.products.length))if(!u.assets||!u.assets.length||0<!u.assets.length||(n=n||7,o=new Menu(a),o.init(u.assets,n)),!u.profanity||!u.profanity.length||0<!u.profanity.length||(v=new Profanity(u.profanity,!0)),u.hasOwnProperty("ks")&&(s=u.ks),!0!==s&&(s=!1),y=u.hasOwnProperty("uploads")?u.uploads:{maxFileSizeMB:6},u.defaultLoad){if(u.defaultLoad.hasOwnProperty("userDesignId")&&(f.userDesignId=u.defaultLoad.userDesignId),u.defaultLoad.hasOwnProperty("design")&&""!=u.defaultLoad.design)try{(0===f.userDesignId||"0"===f.userDesignId)&&0<u.defaultLoad.design.split("/").length?f.design=e.setTemplateFullPath(u.defaultLoad.design):0!==f.userDesign&&"0"!==f.userDesign&&(f.design=JSON.parse(u.defaultLoad.design))}catch(t){console.error(t);f.design=null}u.defaultLoad.hasOwnProperty("product")&&(n=e.getProduct(u.defaultLoad.product),f.product=null===n?e.getProducts()[0].name:u.defaultLoad.product)}else f.product=e.getProducts()[0].name};this.getMenu=function(){return o};this.getProducts=function(){return u.products};this.getProduct=function(n){for(var i=null,t=0,r=u.products.length;t<r;t++)if(u.products[t].name==n){i=u.products[t];break}return i};this.getDefaultProduct=function(){for(var n=null,t=0,i=u.products.length;t<i;t++)if(!0===u.products[t]["default"]){n=u.products[t];break}return null===n&&0<u.products.length&&(n=u.products[0]),n};this.getActiveProduct=function(){return e.getProduct(f.product)};this.setActiveProduct=function(n){for(var i=!1,t=0,r=u.products.length;t<r;t++)if(u.products[t].name==n){f.product=n;i=!0;break}return i};this.getImageUploads=function(){return y};this.getKstatus=function(){return s};this.getDefaults=function(){return f};this.getLanguage=function(){return u.language};this.translateAll=function(n){!1!=!!u.language&&n.each(p)};this.translate=function(n,t){var f,i,r,e;if(!n||""==n)return n;t=!0===t?!0:!1;f=n.split(".");i=u.language;try{for(r=0,e=f.length;r<e;r++)i=i[f[r]]}catch(o){i=n}return!0===t&&void 0!==i&&i!==n&&(i=l(i,b)),void 0==i?n:i};this.getProfanityFilter=function(){return v};this.setTemplateFullPath=function(n){return n=n.split("/"),n.push(n[n.length-1]),n.join("/")};this.setCanvasOrientation=function(n){c=n};this.getCanvasOrientation=function(){return c};this.getCanvasOrientationString=function(){return i.Orientation.ToString(c)};this.formatBBCode=function(n,t){return t=t||k,l(n,t)};this.dispose=function(){o&&o.dispose();a=u=null};p=function(n){n=w(this);var t=n.attr("data-translate-attribute"),i=n.attr("data-translate-tag");void 0!==t&&n.attr(t,e.formatBBCode(e.translate(n.attr("data-translate"),!1)));void 0!==i?n.find(i).html(e.formatBBCode(e.translate(n.attr("data-translate"),!1))):"button"===n.prop("nodeName").toLowerCase()?$("i",n).html(e.translate(n.attr("data-translate"),!0)):n.html(e.translate(n.attr("data-translate"),!0))};l=function(n,t){!1==!!h&&(h=[/\n/g,/\[b\](.*?)\[\/b\]/g,/\[url=([^\s\]]+)\s*\](.*(?=\[\/url\]))\[\/url\]/g]);for(var i=0,r=h.length;i<r;i++)n=n.replace(h[i],t[i]);return n}}function Menu(n){var f,t,u,i,r,e;this.dom=n||document;f=this;this.MenuType={Menu:0,Groups:1};i=!0;r="root";this.init=function(f,o,s,l){f&&(e=o||7,i=!1===s?!1:!0,!1===i&&(r=l||"root"),u=n.createDocumentFragment(),t=n.createDocumentFragment(),f.forEach(function(n){n.hasOwnProperty("section")?h(n.section):n.hasOwnProperty("heading")&&c(n.heading)}))};this.appendTo=function(e,o){var h=n.getElementById(e),s;h&&n&&t&&e&&""!=e&&(i?h.appendChild(o===f.MenuType.Groups?u.cloneNode(!0):t.cloneNode(!0)):(s=n.createElement("ul"),s.setAttribute("id",r),s.appendChild(t.cloneNode(!0)),h.appendChild(s)))};this.prependTo=function(e,o){var h=n.getElementById(e),s;h&&n&&t&&e&&""!=e&&(i?h.prependChild(o===f.MenuType.Groups?u.cloneNode(!0):t.cloneNode(!0)):(s=n.createElement("ul"),s.setAttribute("id",r),s.appendChild(t.cloneNode(!0)),h.prependChild(s)))};this.dispose=function(){n=t=i=r=null};var h=function(i){var u=n.createElement("li"),f=i.subsection,e=f.split("-")[0],r=n.createElement("a"),h=n.createTextNode(f),s=n.createElement("span");r.setAttribute("href","#");r.setAttribute("data-id",f);r.setAttribute("class","icon icon-"+e+" subsection");!0===i.hasOwnProperty("translatekey")&&(r.setAttribute("data-translate",i.translatekey),r.setAttribute("data-translate-attribute","title"),r.setAttribute("data-translate-tag","span"));s.appendChild(h);r.appendChild(s);o(i,e);i.section.forEach(function(n){o(n,e)});u.appendChild(r);u.setAttribute("class","menu-tool-button");!0===i.hasOwnProperty("showlabel")&&!0===i.showlabel&&u.setAttribute("class","menu-tool-button with-label");t.appendChild(u)},c=function(i){var r=n.createElement("li"),u;i.hasOwnProperty("span")?i.span.forEach(function(n){r.appendChild(l(n))}):(!0===i.hasOwnProperty("translatekey")&&r.setAttribute("data-translate",i.translatekey),u=n.createTextNode(i.title),r.appendChild(u));!0===i.hasOwnProperty("class")&&r.setAttribute("class",i["class"]);t.appendChild(r)},l=function(t){var i=n.createElement("span"),r=n.createTextNode(t.title);return i.setAttribute("class",t["class"]),!0===t.hasOwnProperty("translatekey")&&i.setAttribute("data-translate",t.translatekey),i.appendChild(r),i},o=function(t,i){var r=n.createElement("div"),o=n.createElement("ul"),f,h;r.setAttribute("id",t.subsection+"-group");r.setAttribute("data-id",t.subsection+"-group");r.setAttribute("class","level-container "+t.level+" hidden");t.selection&&t.selection.length&&0<t.selection.length?t.selection.forEach(function(n){o.appendChild(v(n,i))}):t.section&&t.section.length&&0<t.section.length&&t.section.forEach(function(n){o.appendChild(a(n,i))});f=n.createElement("div");h=t.subsection+"-scroll";f.setAttribute("id",h);o.childElementCount>e?(f.setAttribute("class","menu-scroll-container"),r.appendChild(s("prev",h))):f.setAttribute("class","menu-scroll-container-mobile");f.appendChild(o);r.appendChild(f);o.childElementCount>e&&r.appendChild(s("next",h));u.appendChild(r)},a=function(t,i){var h=n.createElement("li"),f=t.subsection,u;i=f.split("-")[0];var s=t.label,r=n.createElement("a"),s=n.createTextNode(s),c=t.enabled?" "+t.enabled:"",e=n.createElement("span");return e.setAttribute("class","category-label-container subsection"),e.setAttribute("data-id",f),u=n.createElement("span"),u.setAttribute("class","category-label subsection"),u.appendChild(s),u.setAttribute("data-id",f),e.appendChild(u),r.setAttribute("href","#"),r.setAttribute("data-id",f),r.setAttribute("class","icon icon-"+i+" subsection"+c),r.appendChild(e),t.section&&t.section.length&&0<t.section.length&&t.section.forEach(function(n){o(n,i)}),h.appendChild(r),h},v=function(t,i){var u=n.createElement("li"),r=n.createElement("a"),f=n.createTextNode(t.id),e=t.enabled?" "+t.enabled:"";return r.setAttribute("href","#"),r.setAttribute("data-id",t.id),r.setAttribute("class","icon icon-"+i+" subselection"+e),r.appendChild(f),u.appendChild(r),u},s=function(t,i){var r=n.createElement("a"),u=n.createTextNode(t);return r.setAttribute("href","#"),r.setAttribute("data-id","menu-nav-"+t),r.setAttribute("data-target",i),r.setAttribute("class","icon icon-scroll-arrow-"+t+" menu-nav nav-"+t),r.appendChild(u),r};Element.prototype.prependChild=function(n){this.insertBefore(n,this.firstChild)}}function Tour(n,t){var i=t||$,g=this,u=null,l=0,w,nt,a=!1,r=null,f=null,o=null,s=!1,b=0,h,tt=0,it=!1,v=1,y,p=null,k=null,e=null,c=null;this.init=function(n,t,o,s){!1!=!!n&&!1!=!!i&&!1!=!!o&&(r=i("#"+n),!1!=!!r&&(s=s||!1,(u=t||null)&&(c=$("#toolsScroller",u)),k=o,f="template",d(),i("div[data-id='tour-"+f+"']",r).removeClass("hidden"),e=i("#topDesignsContainer"),!0===s&&g.toggle()))};this.toggle=function(n){if(!1!=!!r){if(d(),a=!r.hasClass("hidden"))h&&clearTimeout(h),r.addClass("hidden"),"template"!==f&&(s?o.css("top",l+"px"):(o.css("left",l+"px"),u&&(u[0].scrollLeft=0)),i("div[data-id='tour-"+f+"']",r).addClass("hidden"),f="template",i("div[data-id='tour-"+f+"']",r).removeClass("hidden"));else if(r.removeClass("hidden"),b=i("div.tour-sub-content",r).filter(":first").width(),i("div.tour-sub-content",r).filter(":first").outerHeight(),"template"===f)if(null===p?(p=new FTScroller(i("#templateScroller")[0],{scrollbars:!1,scrollingX:!0,scrollingY:!1,updateOnWindowResize:!0}),i("a.template-scroll-arrow",e).on("click",ft),i("li>a.topdesign",e).on("click",ut)):p.updateDimensions(i("#templateScroller").find("ul").width(),i("#templateScroller").find("ul").height(),!1),e.css("display",""),n){c.scrollLeft(0);var t=i("> .topdesignscontent",e).outerHeight()+i("> .tour-copy-header.top-designs-header",e).outerHeight();e.css({top:i("#toolTour > div[data-id='tour-template']").position().top-t-10,height:t+10})}else e.css({top:"",height:""});a=!a}};this.update=function(n,t,v){if(!1!=!!a&&!1!=!!r&&(h&&!1===(v||!1)&&clearTimeout(h),v=i(n),n=v.attr("data-id")||v.nearest("a").attr("data-id"),f!==n)){d();var p=v.closest("li"),y=s?p.position().top:p.position().left;s?p.height():p.width();u&&t&&(y+v.outerWidth()>u.width()?(v=y+v.outerWidth()-u.width(),c.scrollLeft(c.scrollLeft()+v),v=(u.width()-b)/2,y=b+v-o.width()-4):0<c.scrollLeft()&&c.scrollLeft(0));switch(n.toLowerCase()){case"template":e.css("display","");t=t?y-l:l;break;default:e.css("display","none");t=t?y-4:y}s?o.velocity({top:t}):o.velocity({left:t});i("div[data-id='tour-"+f+"']",r).addClass("hidden");i("div[data-id='tour-"+n+"']",r).removeClass("hidden");f=n}};this.autoPlay=function(n,t,i){tt=t||1e3;it=i||!1;h=setTimeout(rt,n||0)};this.isActive=function(){return a};var rt=function(){!1==!!y&&(y=i("li.menu-tool-button>a",u));g.update(y[v],it,!0);v+=1;v>=y.length&&(v=0);h=setTimeout(rt,tt)},d=function(){o=i("div.help-arrow:not(.hidden)",r);s="arrow-right"===o.attr("data-id").toLowerCase();!1==!!w&&(w=parseInt(o.css("top"),10));!1==!!nt&&(nt=Math.max(0,(u.outerWidth()-$("#tools",u).outerWidth())/2));l=s?w:0},ut=function(n){n.preventDefault();k&&k.call(this)},ft=function(n){n.preventDefault();p.scrollBy("template-nav-prev"===i(this).attr("data-id")?-50:50,0,1)}}function ModalAlert(n){var v;this.iconType={None:0,Alert:1,Error:2};var e=this,r=n||$,t,h,c,u,l=!1,f=null,i=null,a=!1;this.init=function(n){!1!=!!n&&(t=r("#"+n).modal({keyboard:!1,show:!1}),t.on("shown.bs.modal",y),t.on("hidden.bs.modal",p))};this.show=function(n,t,i){h=n||null;c=t||null;u=i||null;l?e.hide(v):v()};v=function(){if(f=u&&u.callback||null,i=u&&u.buttons||null,a=u&&u.preformatted||!1,!a){var n=u&&u.icon||e.iconType.None;!0===(u&&u.hasOwnProperty("formattedTitle")?u.formattedTitle:!1)?t.find(".heading-title").html(h):t.find(".heading-title").text(h);c&&t.find(".copy-text").text(c);n===e.iconType.None?t.find(".alert-message-content").addClass("no-alert-icon"):(t.find(".alert-message-content").removeClass("no-alert-icon"),t.find(".alert-img").attr("src","images/alert-"+(n===e.iconType.Alert?"exclaim":"x")+".png"))}i?(t.find(".wizard-alert-footer").removeClass("hidden"),i.button1&&(r("#btnAlert1",t).on("click",o),r("#btnAlert1",t).hasClass("hidden")&&r("#btnAlert1",t).removeClass("hidden"),r("#btnAlert1",t).find(".button-content").text(i.button1.label)),i.button2?(t.find(".wizard-alert-footer").addClass("dual-button"),r("#btnAlert2",t).on("click",s),r("#btnAlert2",t).hasClass("hidden")&&r("#btnAlert2",t).removeClass("hidden"),r("#btnAlert2",t).find(".button-content").text(i.button2.label)):(t.find(".wizard-alert-footer").removeClass("dual-button"),r("#btnAlert2",t).hasClass("hidden")||r("#btnAlert2",t).addClass("hidden"))):a||t.find(".wizard-alert-footer").hasClass("hidden")||t.find(".wizard-alert-footer").addClass("hidden");t.modal("show")};this.hide=function(n){f=n||null;t.modal("hide")};var o=function(){var u=currentCulture,n;typeof ga!="undefined"&&ga("send","event",u.toUpperCase()+"_wizard_layer","click","order_razor");r("#btnAlert1",t).off("click",o);i.button2&&r("#btnAlert2",t).off("click",s);n=i.button1.hasOwnProperty("data")?i.button1.data:null;i.button1.onclick&&i.button1.onclick.call(this,n)},s=function(){r("#btnAlert2",t).off("click",s);i.button1&&r("#btnAlert1",t).off("click",o);var n=i.button2.hasOwnProperty("data")?i.button2.data:null;i.button2.onclick&&i.button2.onclick.call(this,n)},y=function(n){l=!0;f&&f.call(this,n)},p=function(n){i.button1&&r("#btnAlert1",t).off("click",o);i.button2&&r("#btnAlert2",t).off("click",s);l=!1;f&&f.call(this,n)}}function onWizardEvent(n){n.type===Gillette.Enum.Event.WIZARD_READY?(window.removeEventListener(Gillette.Enum.Event.WIZARD_READY,onWizardEvent),$("#loaderID").addClass("hidden"),$("#containerNewPromo").fadeIn(function(){$("body").removeClass("disableClick")})):window.removeEventListener(Gillette.Enum.Event.WIZARD_TEMPLATE_LOADED,onWizardEvent);eventCount+=1}function AutoClosePopup(){setTimeout(function(){$("#myModal").fadeOut("fast");$("body").removeClass("disableClick");$("#myModal").modal("hide")},1e3)}var isgift,fabric,eventjs,Event,FTScroller,CubicBezier,eventCount;(function(){for(var i=0,t=["ms","moz","webkit","o"],n=0;n<t.length&&!window.requestAnimationFrame;++n)window.requestAnimationFrame=window[t[n]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[t[n]+"CancelAnimationFrame"]||window[t[n]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(n){var t=(new Date).getTime(),r=Math.max(0,16-(t-i)),u=window.setTimeout(function(){n(t+r)},r);return i=t+r,u});window.cancelAnimationFrame||(window.cancelAnimationFrame=function(n){clearTimeout(n)})})();!function(n){function o(n){var i=n.length,r=t.type(n);return"function"===r||t.isWindow(n)?!1:1===n.nodeType&&i?!0:"array"===r||0===i||"number"==typeof i&&i>0&&i-1 in n}var t,i;if(!n.jQuery){t=function(n,i){return new t.fn.init(n,i)};t.isWindow=function(n){return null!=n&&n==n.window};t.type=function(n){return null==n?n+"":"object"==typeof n||"function"==typeof n?r[s.call(n)]||"object":typeof n};t.isArray=Array.isArray||function(n){return"array"===t.type(n)};t.isPlainObject=function(n){var i;if(!n||"object"!==t.type(n)||n.nodeType||t.isWindow(n))return!1;try{if(n.constructor&&!f.call(n,"constructor")&&!f.call(n.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}for(i in n);return void 0===i||f.call(n,i)};t.each=function(n,t,i){var u,r=0,f=n.length,e=o(n);if(i){if(e)for(;f>r&&(u=t.apply(n[r],i),u!==!1);r++);else for(r in n)if(u=t.apply(n[r],i),u===!1)break}else if(e)for(;f>r&&(u=t.call(n[r],r,n[r]),u!==!1);r++);else for(r in n)if(u=t.call(n[r],r,n[r]),u===!1)break;return n};t.data=function(n,r,u){var e,f;if(void 0===u){if(f=n[t.expando],e=f&&i[f],void 0===r)return e;if(e&&r in e)return e[r]}else if(void 0!==r)return f=n[t.expando]||(n[t.expando]=++t.uuid),i[f]=i[f]||{},i[f][r]=u,u};t.removeData=function(n,r){var u=n[t.expando],f=u&&i[u];f&&t.each(r,function(n,t){delete f[t]})};t.extend=function(){var r,e,i,f,o,s,n=arguments[0]||{},u=1,c=arguments.length,h=!1;for("boolean"==typeof n&&(h=n,n=arguments[u]||{},u++),"object"!=typeof n&&"function"!==t.type(n)&&(n={}),u===c&&(n=this,u--);c>u;u++)if(null!=(o=arguments[u]))for(f in o)r=n[f],i=o[f],n!==i&&(h&&i&&(t.isPlainObject(i)||(e=t.isArray(i)))?(e?(e=!1,s=r&&t.isArray(r)?r:[]):s=r&&t.isPlainObject(r)?r:{},n[f]=t.extend(h,s,i)):void 0!==i&&(n[f]=i));return n};t.queue=function(n,i,r){function f(n,t){var i=t||[];return null!=n&&(o(Object(n))?!function(n,t){for(var r=+t.length,i=0,u=n.length;r>i;)n[u++]=t[i++];if(r!==r)for(;void 0!==t[i];)n[u++]=t[i++];return n.length=u,n}(i,"string"==typeof n?[n]:n):[].push.call(i,n)),i}if(n){i=(i||"fx")+"queue";var u=t.data(n,i);return r?(!u||t.isArray(r)?u=t.data(n,i,f(r)):u.push(r),u):u||[]}};t.dequeue=function(n,i){t.each(n.nodeType?[n]:n,function(n,r){i=i||"fx";var f=t.queue(r,i),u=f.shift();"inprogress"===u&&(u=f.shift());u&&("fx"===i&&f.unshift("inprogress"),u.call(r,function(){t.dequeue(r,i)}))})};t.fn=t.prototype={init:function(n){if(n.nodeType)return this[0]=n,this;throw new Error("Not a DOM node.");},offset:function(){var t=this[0].getBoundingClientRect?this[0].getBoundingClientRect():{top:0,left:0};return{top:t.top+(n.pageYOffset||document.scrollTop||0)-(document.clientTop||0),left:t.left+(n.pageXOffset||document.scrollLeft||0)-(document.clientLeft||0)}},position:function(){function e(){for(var n=this.offsetParent||document;n&&!1&&"static"===n.style.position;)n=n.offsetParent;return n||document}var r=this[0],e=e.apply(r),n=this.offset(),i=/^(?:body|html)$/i.test(e.nodeName)?{top:0,left:0}:t(e).offset();return n.top-=parseFloat(r.style.marginTop)||0,n.left-=parseFloat(r.style.marginLeft)||0,e.style&&(i.top+=parseFloat(e.style.borderTopWidth)||0,i.left+=parseFloat(e.style.borderLeftWidth)||0),{top:n.top-i.top,left:n.left-i.left}}};i={};t.expando="velocity"+(new Date).getTime();t.uuid=0;for(var r={},f=r.hasOwnProperty,s=r.toString,e="Boolean Number String Function Array Date RegExp Object Error".split(" "),u=0;u<e.length;u++)r["[object "+e[u]+"]"]=e[u].toLowerCase();t.fn.init.prototype=t.fn;n.Velocity={Utilities:t}}}(window),function(n){"object"==typeof module&&"object"==typeof module.exports?module.exports=n():"function"==typeof define&&define.amd?define(n):n()}(function(){return function(n,t,i,r){function tt(n){for(var t,i=-1,u=n?n.length:0,r=[];++i<u;)t=n[i],t&&r.push(t);return r}function y(n){return s.isWrapped(n)?n=[].slice.call(n):s.isNode(n)&&(n=[n]),n}function e(n){var t=o.data(n,"velocity");return null===t?r:t}function it(n){return function(t){return Math.round(t*n)*(1/n)}}function p(n,i,r,u){function l(n,t){return 1-3*t+3*n}function a(n,t){return 3*t-6*n}function v(n){return 3*n}function s(n,t,i){return((l(t,i)*n+a(t,i))*n+v(t))*n}function y(n,t,i){return 3*l(t,i)*n*n+2*a(t,i)*n+v(t)}function b(t,i){for(var f,e,u=0;tt>u;++u){if(f=y(i,n,r),0===f)return i;e=s(i,n,r)-t;i-=e/f}return i}function k(){for(var t=0;e>t;++t)o[t]=s(t*h,n,r)}function d(t,i,u){var e,f,o=0;do f=i+(u-i)/2,e=s(f,n,r)-t,e>0?u=f:i=f;while(Math.abs(e)>rt&&++o<ut);return f}function g(t){for(var u=0,i=1,c=e-1;i!=c&&o[i]<=t;++i)u+=h;--i;var l=(t-o[i])/(o[i+1]-o[i]),f=u+l*h,s=y(f,n,r);return s>=it?b(t,f):0==s?f:d(t,u,u+h)}function nt(){p=!0;(n!=i||r!=u)&&k()}var tt=4,it=.001,rt=1e-7,ut=10,e=11,h=1/(e-1),ft="Float32Array"in t,f,w;if(4!==arguments.length)return!1;for(f=0;4>f;++f)if("number"!=typeof arguments[f]||isNaN(arguments[f])||!isFinite(arguments[f]))return!1;n=Math.min(n,1);r=Math.min(r,1);n=Math.max(n,0);r=Math.max(r,0);var o=ft?new Float32Array(e):new Array(e),p=!1,c=function(t){return p||nt(),n===i&&r===u?t:0===t?0:1===t?1:s(g(t),i,u)};return c.getControlPoints=function(){return[{x:n,y:i},{x:r,y:u}]},w="generateBezier("+[n,i,r,u]+")",c.toString=function(){return w},c}function w(n,t){var i=n;return s.isString(n)?f.Easings[n]||(i=!1):i=s.isArray(n)&&1===n.length?it.apply(null,n):s.isArray(n)&&2===n.length?nt.apply(null,n.concat([t])):s.isArray(n)&&4===n.length?p.apply(null,n):!1,i===!1&&(i=f.Easings[f.defaults.easing]?f.defaults.easing:g),i}function a(n){var d,ut,c,nt,h,it,ct,v,i,p,lt,et,k,ot,rt;if(n)for(d=(new Date).getTime(),ut=f.State.calls.length,ut>1e4&&(f.State.calls=tt(f.State.calls)),c=0;ut>c;c++)if(f.State.calls[c]){var w=f.State.calls[c],st=w[0],t=w[2],y=w[3],at=!!y,ht=null;y||(y=f.State.calls[c][3]=d-16);for(var g=Math.min((d-y)/t.duration,1),ft=0,vt=st.length;vt>ft;ft++)if(nt=st[ft],h=nt.element,e(h)){it=!1;t.display!==r&&null!==t.display&&"none"!==t.display&&("flex"===t.display&&(ct=["-webkit-box","-moz-box","-ms-flexbox","-webkit-flex"],o.each(ct,function(n,t){u.setPropertyValue(h,"display",t)})),u.setPropertyValue(h,"display",t.display));t.visibility!==r&&"hidden"!==t.visibility&&u.setPropertyValue(h,"visibility",t.visibility);for(v in nt)if("element"!==v){if(i=nt[v],lt=s.isString(i.easing)?f.Easings[i.easing]:i.easing,1===g)p=i.endValue;else if(et=i.endValue-i.startValue,p=i.startValue+et*lt(g,t,et),!at&&p===i.currentValue)continue;(i.currentValue=p,"tween"===v)?ht=p:(u.Hooks.registered[v]&&(k=u.Hooks.getRoot(v),ot=e(h).rootPropertyValueCache[k],ot&&(i.rootPropertyValue=ot)),rt=u.setPropertyValue(h,v,i.currentValue+(0===parseFloat(p)?"":i.unitType),i.rootPropertyValue,i.scrollData),u.Hooks.registered[v]&&(e(h).rootPropertyValueCache[k]=u.Normalizations.registered[k]?u.Normalizations.registered[k]("extract",null,rt[1]):rt[1]),"transform"===rt[0]&&(it=!0))}t.mobileHA&&e(h).transformCache.translate3d===r&&(e(h).transformCache.translate3d="(0px, 0px, 0px)",it=!0);it&&u.flushTransformCache(h)}t.display!==r&&"none"!==t.display&&(f.State.calls[c][2].display=!1);t.visibility!==r&&"hidden"!==t.visibility&&(f.State.calls[c][2].visibility=!1);t.progress&&t.progress.call(w[1],w[1],g,Math.max(0,y+t.duration-d),y,ht);1===g&&b(c)}f.State.isTicking&&l(a)}function b(n,t){var i,c,l,b;if(!f.State.calls[n])return!1;for(var v=f.State.calls[n][0],a=f.State.calls[n][1],s=f.State.calls[n][2],y=f.State.calls[n][4],p=!1,h=0,w=v.length;w>h;h++){if(i=v[h].element,(t||s.loop||("none"===s.display&&u.setPropertyValue(i,"display",s.display),"hidden"===s.visibility&&u.setPropertyValue(i,"visibility",s.visibility)),s.loop!==!0&&(o.queue(i)[1]===r||!/\.velocityQueueEntryFlag/i.test(o.queue(i)[1]))&&e(i))&&(e(i).isAnimating=!1,e(i).rootPropertyValueCache={},c=!1,o.each(u.Lists.transforms3D,function(n,t){var u=/^scale/.test(t)?1:0,f=e(i).transformCache[t];e(i).transformCache[t]!==r&&new RegExp("^\\("+u+"[^.]").test(f)&&(c=!0,delete e(i).transformCache[t])}),s.mobileHA&&(c=!0,delete e(i).transformCache.translate3d),c&&u.flushTransformCache(i),u.Values.removeClass(i,"velocity-animating")),!t&&s.complete&&!s.loop&&h===w-1)try{s.complete.call(a,a)}catch(k){setTimeout(function(){throw k;},1)}y&&s.loop!==!0&&y(a);e(i)&&s.loop===!0&&!t&&(o.each(e(i).tweensContainer,function(n,t){/^rotate/.test(n)&&360===parseFloat(t.endValue)&&(t.endValue=0,t.startValue=360);/^backgroundPosition/.test(n)&&100===parseFloat(t.endValue)&&"%"===t.unitType&&(t.endValue=0,t.startValue=100)}),f(i,"reverse",{loop:!0,delay:s.delay}));s.queue!==!1&&o.dequeue(i,s.queue)}for(f.State.calls[n]=!1,l=0,b=f.State.calls.length;b>l;l++)if(f.State.calls[l]!==!1){p=!0;break}p===!1&&(f.State.isTicking=!1,delete f.State.calls,f.State.calls=[])}var h=function(){var n,t;if(i.documentMode)return i.documentMode;for(n=7;n>4;n--)if(t=i.createElement("div"),t.innerHTML="<!--[if IE "+n+"]><span><\/span><![endif]-->",t.getElementsByTagName("span").length)return t=null,n;return r}(),k=function(){var n=0;return t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||function(t){var r=(new Date).getTime(),i;return i=Math.max(0,16-(r-n)),n=r+i,setTimeout(function(){t(r+i)},i)}}(),s={isString:function(n){return"string"==typeof n},isArray:Array.isArray||function(n){return"[object Array]"===Object.prototype.toString.call(n)},isFunction:function(n){return"[object Function]"===Object.prototype.toString.call(n)},isNode:function(n){return n&&n.nodeType},isNodeList:function(n){return"object"==typeof n&&/^\[object (HTMLCollection|NodeList|Object)\]$/.test(Object.prototype.toString.call(n))&&n.length!==r&&(0===n.length||"object"==typeof n[0]&&n[0].nodeType>0)},isWrapped:function(n){return n&&(n.jquery||t.Zepto&&t.Zepto.zepto.isZ(n))},isSVG:function(n){return t.SVGElement&&n instanceof t.SVGElement},isEmptyObject:function(n){for(var t in n)return!1;return!0}},o,d=!1,nt,u,c,l;if(n.fn&&n.fn.jquery?(o=n,d=!0):o=t.Velocity.Utilities,8>=h&&!d)throw new Error("Velocity: IE8 and below require jQuery to be loaded before Velocity.");if(7>=h)return void(jQuery.fn.velocity=jQuery.fn.animate);var v=400,g="swing",f={State:{isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),isAndroid:/Android/i.test(navigator.userAgent),isGingerbread:/Android 2\.3\.[3-7]/i.test(navigator.userAgent),isChrome:t.chrome,isFirefox:/Firefox/i.test(navigator.userAgent),prefixElement:i.createElement("div"),prefixMatches:{},scrollAnchor:null,scrollPropertyLeft:null,scrollPropertyTop:null,isTicking:!1,calls:[]},CSS:{},Utilities:o,Redirects:{},Easings:{},Promise:t.Promise,defaults:{queue:"",duration:v,easing:g,begin:r,complete:r,progress:r,display:r,visibility:r,loop:!1,delay:!1,mobileHA:!0,_cacheValues:!0},init:function(n){o.data(n,"velocity",{isSVG:s.isSVG(n),isAnimating:!1,computedStyle:null,tweensContainer:null,rootPropertyValueCache:{},transformCache:{}})},hook:null,mock:!1,version:{major:1,minor:2,patch:2},debug:!1};return t.pageYOffset!==r?(f.State.scrollAnchor=t,f.State.scrollPropertyLeft="pageXOffset",f.State.scrollPropertyTop="pageYOffset"):(f.State.scrollAnchor=i.documentElement||i.body.parentNode||i.body,f.State.scrollPropertyLeft="scrollLeft",f.State.scrollPropertyTop="scrollTop"),nt=function(){function t(n){return-n.tension*n.x-n.friction*n.v}function n(n,i,r){var u={x:n.x+r.dx*i,v:n.v+r.dv*i,tension:n.tension,friction:n.friction};return{dx:u.v,dv:t(u)}}function i(i,r){var u={dx:i.v,dv:t(i)},f=n(i,.5*r,u),e=n(i,.5*r,f),o=n(i,r,e),s=1/6*(u.dx+2*(f.dx+e.dx)+o.dx),h=1/6*(u.dv+2*(f.dv+e.dv)+o.dv);return i.x=i.x+s*r,i.v=i.v+h*r,i}return function r(n,t,u){var o={x:-1,v:0,tension:null,friction:null},s=[0],e=0,l=.0001,a=.016,h,c,f;for(n=parseFloat(n)||500,t=parseFloat(t)||20,u=u||null,o.tension=n,o.friction=t,h=null!==u,h?(e=r(n,t),c=e/u*a):c=a;;)if(f=i(f||o,c),s.push(1+f.x),e+=16,!(Math.abs(f.x)>l&&Math.abs(f.v)>l))break;return h?function(n){return s[n*(s.length-1)|0]}:e}}(),f.Easings={linear:function(n){return n},swing:function(n){return.5-Math.cos(n*Math.PI)/2},spring:function(n){return 1-Math.cos(4.5*n*Math.PI)*Math.exp(6*-n)}},o.each([["ease",[.25,.1,.25,1]],["ease-in",[.42,0,1,1]],["ease-out",[0,0,.58,1]],["ease-in-out",[.42,0,.58,1]],["easeInSine",[.47,0,.745,.715]],["easeOutSine",[.39,.575,.565,1]],["easeInOutSine",[.445,.05,.55,.95]],["easeInQuad",[.55,.085,.68,.53]],["easeOutQuad",[.25,.46,.45,.94]],["easeInOutQuad",[.455,.03,.515,.955]],["easeInCubic",[.55,.055,.675,.19]],["easeOutCubic",[.215,.61,.355,1]],["easeInOutCubic",[.645,.045,.355,1]],["easeInQuart",[.895,.03,.685,.22]],["easeOutQuart",[.165,.84,.44,1]],["easeInOutQuart",[.77,0,.175,1]],["easeInQuint",[.755,.05,.855,.06]],["easeOutQuint",[.23,1,.32,1]],["easeInOutQuint",[.86,0,.07,1]],["easeInExpo",[.95,.05,.795,.035]],["easeOutExpo",[.19,1,.22,1]],["easeInOutExpo",[1,0,0,1]],["easeInCirc",[.6,.04,.98,.335]],["easeOutCirc",[.075,.82,.165,1]],["easeInOutCirc",[.785,.135,.15,.86]]],function(n,t){f.Easings[t[0]]=p.apply(null,t[1])}),u=f.CSS={RegEx:{isHex:/^#([A-f\d]{3}){1,2}$/i,valueUnwrap:/^[A-z]+\((.*)\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,valueSplit:/([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/gi},Lists:{colors:["fill","stroke","stopColor","color","backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outlineColor"],transformsBase:["translateX","translateY","scale","scaleX","scaleY","skewX","skewY","rotateZ"],transforms3D:["transformPerspective","translateZ","scaleZ","rotateX","rotateY"]},Hooks:{templates:{textShadow:["Color X Y Blur","black 0px 0px 0px"],boxShadow:["Color X Y Blur Spread","black 0px 0px 0px 0px"],clip:["Top Right Bottom Left","0px 0px 0px 0px"],backgroundPosition:["X Y","0% 0%"],transformOrigin:["X Y Z","50% 50% 0px"],perspectiveOrigin:["X Y","50% 50%"]},registered:{},register:function(){for(var e,i,r,t,f,o,s,n=0;n<u.Lists.colors.length;n++)e="color"===u.Lists.colors[n]?"0 0 0 1":"255 255 255 1",u.Hooks.templates[u.Lists.colors[n]]=["Red Green Blue Alpha",e];if(h)for(i in u.Hooks.templates)r=u.Hooks.templates[i],t=r[0].split(" "),f=r[1].match(u.RegEx.valueSplit),"Color"===t[0]&&(t.push(t.shift()),f.push(f.shift()),u.Hooks.templates[i]=[t.join(" "),f.join(" ")]);for(i in u.Hooks.templates){r=u.Hooks.templates[i];t=r[0].split(" ");for(n in t)o=i+t[n],s=n,u.Hooks.registered[o]=[i,s]}},getRoot:function(n){var t=u.Hooks.registered[n];return t?t[0]:n},cleanRootPropertyValue:function(n,t){return u.RegEx.valueUnwrap.test(t)&&(t=t.match(u.RegEx.valueUnwrap)[1]),u.Values.isCSSNullValue(t)&&(t=u.Hooks.templates[n][1]),t},extractValue:function(n,t){var i=u.Hooks.registered[n],r,f;return i?(r=i[0],f=i[1],t=u.Hooks.cleanRootPropertyValue(r,t),t.toString().match(u.RegEx.valueSplit)[f]):t},injectValue:function(n,t,i){var r=u.Hooks.registered[n],e,o,f,s;return r?(e=r[0],o=r[1],i=u.Hooks.cleanRootPropertyValue(e,i),f=i.toString().match(u.RegEx.valueSplit),f[o]=t,s=f.join(" ")):i}},Normalizations:{registered:{clip:function(n,t,i){switch(n){case"name":return"clip";case"extract":var r;return u.RegEx.wrappedValueAlreadyExtracted.test(i)?r=i:(r=i.toString().match(u.RegEx.valueUnwrap),r=r?r[1].replace(/,(\s+)?/g," "):i),r;case"inject":return"rect("+i+")"}},blur:function(n,t,i){var r,u;switch(n){case"name":return f.State.isFirefox?"filter":"-webkit-filter";case"extract":return r=parseFloat(i),r||0===r||(u=i.toString().match(/blur\(([0-9]+[A-z]+)\)/i),r=u?u[1]:0),r;case"inject":return parseFloat(i)?"blur("+i+")":"none"}},opacity:function(n,t,i){if(8>=h)switch(n){case"name":return"filter";case"extract":var r=i.toString().match(/alpha\(opacity=(.*)\)/i);return r?r[1]/100:1;case"inject":return t.style.zoom=1,parseFloat(i)>=1?"":"alpha(opacity="+parseInt(100*parseFloat(i),10)+")"}else switch(n){case"name":return"opacity";case"extract":return i;case"inject":return i}}},register:function(){var n;for(9>=h||f.State.isGingerbread||(u.Lists.transformsBase=u.Lists.transformsBase.concat(u.Lists.transforms3D)),n=0;n<u.Lists.transformsBase.length;n++)!function(){var t=u.Lists.transformsBase[n];u.Normalizations.registered[t]=function(n,i,u){switch(n){case"name":return"transform";case"extract":return e(i)===r||e(i).transformCache[t]===r?/^scale/i.test(t)?1:0:e(i).transformCache[t].replace(/[()]/g,"");case"inject":var o=!1;switch(t.substr(0,t.length-1)){case"translate":o=!/(%|px|em|rem|vw|vh|\d)$/i.test(u);break;case"scal":case"scale":f.State.isAndroid&&e(i).transformCache[t]===r&&1>u&&(u=1);o=!/(\d)$/i.test(u);break;case"skew":o=!/(deg|\d)$/i.test(u);break;case"rotate":o=!/(deg|\d)$/i.test(u)}return o||(e(i).transformCache[t]="("+u+")"),e(i).transformCache[t]}}}();for(n=0;n<u.Lists.colors.length;n++)!function(){var t=u.Lists.colors[n];u.Normalizations.registered[t]=function(n,i,f){var e,s,o;switch(n){case"name":return t;case"extract":return u.RegEx.wrappedValueAlreadyExtracted.test(f)?e=f:(o={black:"rgb(0, 0, 0)",blue:"rgb(0, 0, 255)",gray:"rgb(128, 128, 128)",green:"rgb(0, 128, 0)",red:"rgb(255, 0, 0)",white:"rgb(255, 255, 255)"},/^[A-z]+$/i.test(f)?s=o[f]!==r?o[f]:o.black:u.RegEx.isHex.test(f)?s="rgb("+u.Values.hexToRgb(f).join(" ")+")":/^rgba?\(/i.test(f)||(s=o.black),e=(s||f).toString().match(u.RegEx.valueUnwrap)[1].replace(/,(\s+)?/g," ")),8>=h||3!==e.split(" ").length||(e+=" 1"),e;case"inject":return 8>=h?4===f.split(" ").length&&(f=f.split(/\s+/).slice(0,3).join(" ")):3===f.split(" ").length&&(f+=" 1"),(8>=h?"rgb":"rgba")+"("+f.replace(/\s+/g,",").replace(/\.(\d)+(?=,)/g,"")+")"}}}()}},Names:{camelCase:function(n){return n.replace(/-(\w)/g,function(n,t){return t.toUpperCase()})},SVGAttribute:function(n){var t="width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2";return(h||f.State.isAndroid&&!f.State.isChrome)&&(t+="|transform"),new RegExp("^("+t+")$","i").test(n)},prefixCheck:function(n){var i;if(f.State.prefixMatches[n])return[f.State.prefixMatches[n],!0];for(var r=["","Webkit","Moz","ms","O"],t=0,u=r.length;u>t;t++)if(i=0===t?n:r[t]+n.replace(/^\w/,function(n){return n.toUpperCase()}),s.isString(f.State.prefixElement.style[i]))return f.State.prefixMatches[n]=i,[i,!0];return[n,!1]}},Values:{hexToRgb:function(n){var t;return n=n.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(n,t,i,r){return t+t+i+i+r+r}),t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(n),t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]:[0,0,0]},isCSSNullValue:function(n){return 0==n||/^(none|auto|transparent|(rgba\(0, ?0, ?0, ?0\)))$/i.test(n)},getUnitType:function(n){return/^(rotate|skew)/i.test(n)?"deg":/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(n)?"":"px"},getDisplayType:function(n){var t=n&&n.tagName.toString().toLowerCase();return/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(t)?"inline":/^(li)$/i.test(t)?"list-item":/^(tr)$/i.test(t)?"table-row":/^(table)$/i.test(t)?"table":/^(tbody)$/i.test(t)?"table-row-group":"block"},addClass:function(n,t){n.classList?n.classList.add(t):n.className+=(n.className.length?" ":"")+t},removeClass:function(n,t){n.classList?n.classList.remove(t):n.className=n.className.toString().replace(new RegExp("(^|\\s)"+t.split(" ").join("|")+"(\\s|$)","gi")," ")}},getPropertyValue:function(n,i,s,c){function y(n,i){function s(){l&&u.setPropertyValue(n,"display","none")}var f=0,l,p,w,a,v;if(8>=h)f=o.css(n,i);else{if(l=!1,/^(width|height)$/.test(i)&&0===u.getPropertyValue(n,"display")&&(l=!0,u.setPropertyValue(n,"display",u.Values.getDisplayType(n))),!c){if("height"===i&&"border-box"!==u.getPropertyValue(n,"boxSizing").toString().toLowerCase())return p=n.offsetHeight-(parseFloat(u.getPropertyValue(n,"borderTopWidth"))||0)-(parseFloat(u.getPropertyValue(n,"borderBottomWidth"))||0)-(parseFloat(u.getPropertyValue(n,"paddingTop"))||0)-(parseFloat(u.getPropertyValue(n,"paddingBottom"))||0),s(),p;if("width"===i&&"border-box"!==u.getPropertyValue(n,"boxSizing").toString().toLowerCase())return w=n.offsetWidth-(parseFloat(u.getPropertyValue(n,"borderLeftWidth"))||0)-(parseFloat(u.getPropertyValue(n,"borderRightWidth"))||0)-(parseFloat(u.getPropertyValue(n,"paddingLeft"))||0)-(parseFloat(u.getPropertyValue(n,"paddingRight"))||0),s(),w}a=e(n)===r?t.getComputedStyle(n,null):e(n).computedStyle?e(n).computedStyle:e(n).computedStyle=t.getComputedStyle(n,null);"borderColor"===i&&(i="borderTopColor");f=9===h&&"filter"===i?a.getPropertyValue(i):a[i];(""===f||null===f)&&(f=n.style[i]);s()}return"auto"===f&&/^(top|right|bottom|left)$/i.test(i)&&(v=y(n,"position"),("fixed"===v||"absolute"===v&&/top|left/i.test(i))&&(f=o(n).position()[i]+"px")),f}var l,p,a,w,v;if(u.Hooks.registered[i]?(p=i,a=u.Hooks.getRoot(p),s===r&&(s=u.getPropertyValue(n,u.Names.prefixCheck(a)[0])),u.Normalizations.registered[a]&&(s=u.Normalizations.registered[a]("extract",n,s)),l=u.Hooks.extractValue(p,s)):u.Normalizations.registered[i]&&(w=u.Normalizations.registered[i]("name",n),"transform"!==w&&(v=y(n,u.Names.prefixCheck(w)[0]),u.Values.isCSSNullValue(v)&&u.Hooks.templates[i]&&(v=u.Hooks.templates[i][1])),l=u.Normalizations.registered[i]("extract",n,v)),!/^[\d-]/.test(l))if(e(n)&&e(n).isSVG&&u.Names.SVGAttribute(i))if(/^(height|width)$/i.test(i))try{l=n.getBBox()[i]}catch(b){l=0}else l=n.getAttribute(i);else l=y(n,u.Names.prefixCheck(i)[0]);return u.Values.isCSSNullValue(l)&&(l=0),f.debug>=2&&console.log("Get "+i+": "+l),l},setPropertyValue:function(n,i,r,o,s){var c=i,a,l;if("scroll"===i)s.container?s.container["scroll"+s.direction]=r:"Left"===s.direction?t.scrollTo(r,s.alternateValue):t.scrollTo(s.alternateValue,r);else if(u.Normalizations.registered[i]&&"transform"===u.Normalizations.registered[i]("name",n))u.Normalizations.registered[i]("inject",n,r),c="transform",r=e(n).transformCache[i];else{if(u.Hooks.registered[i]&&(a=i,l=u.Hooks.getRoot(i),o=o||u.getPropertyValue(n,l),r=u.Hooks.injectValue(a,r,o),i=l),u.Normalizations.registered[i]&&(r=u.Normalizations.registered[i]("inject",n,r),i=u.Normalizations.registered[i]("name",n)),c=u.Names.prefixCheck(i)[0],8>=h)try{n.style[c]=r}catch(v){f.debug&&console.log("Browser does not support ["+r+"] for ["+c+"]")}else e(n)&&e(n).isSVG&&u.Names.SVGAttribute(i)?n.setAttribute(i,r):n.style[c]=r;f.debug>=2&&console.log("Set "+i+" ("+c+"): "+r)}return[c,r]},flushTransformCache:function(n){function t(t){return parseFloat(u.getPropertyValue(n,t))}var i="",r,s,c;(h||f.State.isAndroid&&!f.State.isChrome)&&e(n).isSVG?(r={translate:[t("translateX"),t("translateY")],skewX:[t("skewX")],skewY:[t("skewY")],scale:1!==t("scale")?[t("scale"),t("scale")]:[t("scaleX"),t("scaleY")],rotate:[t("rotateZ"),0,0]},o.each(e(n).transformCache,function(n){/^translate/i.test(n)?n="translate":/^scale/i.test(n)?n="scale":/^rotate/i.test(n)&&(n="rotate");r[n]&&(i+=n+"("+r[n].join(" ")+") ",delete r[n])})):(o.each(e(n).transformCache,function(t){return s=e(n).transformCache[t],"transformPerspective"===t?(c=s,!0):(9===h&&"rotateZ"===t&&(t="rotate"),void(i+=t+s+" "))}),c&&(i="perspective"+c+" "+i));u.setPropertyValue(n,"transform",i)}},u.Hooks.register(),u.Normalizations.register(),f.hook=function(n,t,i){var u=r;return n=y(n),o.each(n,function(n,o){if(e(o)===r&&f.init(o),i===r)u===r&&(u=f.CSS.getPropertyValue(o,t));else{var s=f.CSS.setPropertyValue(o,t,i);"transform"===s[0]&&f.CSS.flushTransformCache(o);u=s}}),u},c=function(){function ft(){return et?d.promise||null:vt}function wt(){function g(){function dt(t,i){var f=r,o=r,e=r;return s.isArray(t)?(f=t[0],!s.isArray(t[1])&&/^[\d-]/.test(t[1])||s.isFunction(t[1])||u.RegEx.isHex.test(t[1])?e=t[1]:(s.isString(t[1])&&!u.RegEx.isHex.test(t[1])||s.isArray(t[1]))&&(o=i?t[1]:w(t[1],n.duration),t[2]!==r&&(e=t[2]))):f=t,i||(o=o||n.easing),s.isFunction(f)&&(f=f.call(c,tt,nt)),s.isFunction(e)&&(e=e.call(c,tt,nt)),[f||0,o,e]}function gt(n,t){var i,r;return r=(t||"0").toString().toLowerCase().replace(/[%A-z]+$/,function(n){return i=n,""}),i||(i=u.Values.getUnitType(n)),[r,i]}function ii(){var s={myParent:c.parentNode||i.body,position:u.getPropertyValue(c,"position"),fontSize:u.getPropertyValue(c,"fontSize")},a=s.position===l.lastPosition&&s.myParent===l.lastParent,v=s.fontSize===l.lastFontSize,h,r,n;return l.lastParent=s.myParent,l.lastPosition=s.position,l.lastFontSize=s.fontSize,h=100,r={},v&&a?(r.emToPx=l.lastEmToPx,r.percentToPxWidth=l.lastPercentToPxWidth,r.percentToPxHeight=l.lastPercentToPxHeight):(n=e(c).isSVG?i.createElementNS("http://www.w3.org/2000/svg","rect"):i.createElement("div"),f.init(n),s.myParent.appendChild(n),o.each(["overflow","overflowX","overflowY"],function(t,i){f.CSS.setPropertyValue(n,i,"hidden")}),f.CSS.setPropertyValue(n,"position",s.position),f.CSS.setPropertyValue(n,"fontSize",s.fontSize),f.CSS.setPropertyValue(n,"boxSizing","content-box"),o.each(["minWidth","maxWidth","width","minHeight","maxHeight","height"],function(t,i){f.CSS.setPropertyValue(n,i,h+"%")}),f.CSS.setPropertyValue(n,"paddingLeft",h+"em"),r.percentToPxWidth=l.lastPercentToPxWidth=(parseFloat(u.getPropertyValue(n,"width",null,!0))||1)/h,r.percentToPxHeight=l.lastPercentToPxHeight=(parseFloat(u.getPropertyValue(n,"height",null,!0))||1)/h,r.emToPx=l.lastEmToPx=(parseFloat(u.getPropertyValue(n,"paddingLeft"))||1)/h,s.myParent.removeChild(n)),null===l.remToPx&&(l.remToPx=parseFloat(u.getPropertyValue(i.body,"fontSize"))||16),null===l.vwToPx&&(l.vwToPx=parseFloat(t.innerWidth)/100,l.vhToPx=parseFloat(t.innerHeight)/100),r.remToPx=l.remToPx,r.vwToPx=l.vwToPx,r.vhToPx=l.vhToPx,f.debug>=1&&console.log("Unit ratios: "+JSON.stringify(r),c),r}var st,pt,vt,ni,wt,et,ti,ut,v,ot,ht,lt,ft,at,yt,kt;if(n.begin&&0===tt)try{n.begin.call(k,k)}catch(ri){setTimeout(function(){throw ri;},1)}if("scroll"===it)st=/^x$/i.test(n.axis)?"Left":"Top",pt=parseFloat(n.offset)||0,n.container?s.isWrapped(n.container)||s.isNode(n.container)?(n.container=n.container[0]||n.container,vt=n.container["scroll"+st],wt=vt+o(c).position()[st.toLowerCase()]+pt):n.container=null:(vt=f.State.scrollAnchor[f.State["scrollProperty"+st]],ni=f.State.scrollAnchor[f.State["scrollProperty"+("Left"===st?"Top":"Left")]],wt=o(c).offset()[st.toLowerCase()]+pt),y={scroll:{rootPropertyValue:!1,startValue:vt,currentValue:vt,endValue:wt,unitType:"",easing:n.easing,scrollData:{container:n.container,direction:st,alternateValue:ni}},element:c},f.debug&&console.log("tweensContainer (scroll): ",y.scroll,c);else if("reverse"===it){if(!e(c).tweensContainer)return void o.dequeue(c,n.queue);"none"===e(c).opts.display&&(e(c).opts.display="auto");"hidden"===e(c).opts.visibility&&(e(c).opts.visibility="visible");e(c).opts.loop=!1;e(c).opts.begin=null;e(c).opts.complete=null;h.easing||delete n.easing;h.duration||delete n.duration;n=o.extend({},e(c).opts,n);ut=o.extend(!0,{},e(c).tweensContainer);for(et in ut)"element"!==et&&(ti=ut[et].startValue,ut[et].startValue=ut[et].currentValue=ut[et].endValue,ut[et].endValue=ti,s.isEmptyObject(h)||(ut[et].easing=n.easing),f.debug&&console.log("reverse tweensContainer ("+et+"): "+JSON.stringify(ut[et]),c));y=ut}else if("start"===it){e(c).tweensContainer&&e(c).isAnimating===!0&&(ut=e(c).tweensContainer);o.each(p,function(n,t){var f;if(RegExp("^"+u.Lists.colors.join("$|^")+"$").test(n)){var e=dt(t,!0),o=e[0],s=e[1],h=e[2];if(u.RegEx.isHex.test(o)){for(var c=["Red","Green","Blue"],a=u.Values.hexToRgb(o),l=h?u.Values.hexToRgb(h):r,i=0;i<c.length;i++)f=[a[i]],s&&f.push(s),l!==r&&f.push(l[i]),p[n+c[i]]=f;delete p[n]}}});for(v in p){var bt=dt(p[v]),rt=bt[0],ui=bt[1],g=bt[2];if(v=u.Names.camelCase(v),ot=u.Hooks.getRoot(v),ht=!1,e(c).isSVG||"tween"===ot||u.Names.prefixCheck(ot)[1]!==!1||u.Normalizations.registered[ot]!==r){if((n.display!==r&&null!==n.display&&"none"!==n.display||n.visibility!==r&&"hidden"!==n.visibility)&&/opacity|filter/.test(v)&&!g&&0!==rt&&(g=0),n._cacheValues&&ut&&ut[v]?(g===r&&(g=ut[v].endValue+ut[v].unitType),ht=e(c).rootPropertyValueCache[ot]):u.Hooks.registered[v]?g===r?(ht=u.getPropertyValue(c,ot),g=u.getPropertyValue(c,v,ht)):ht=u.Hooks.templates[ot][1]:g===r&&(g=u.getPropertyValue(c,v)),yt=!1,lt=gt(v,g),g=lt[0],at=lt[1],lt=gt(v,rt),rt=lt[0].replace(/^([+-\/*])=/,function(n,t){return yt=t,""}),ft=lt[1],g=parseFloat(g)||0,rt=parseFloat(rt)||0,"%"===ft&&(/^(fontSize|lineHeight)$/.test(v)?(rt/=100,ft="em"):/^scale/.test(v)?(rt/=100,ft=""):/(Red|Green|Blue)$/i.test(v)&&(rt=rt/100*255,ft="")),/[\/*]/.test(yt))ft=at;else if(at!==ft&&0!==g)if(0===rt)ft=at;else{b=b||ii();kt=/margin|padding|left|right|width|text|word|letter/i.test(v)||/X$/.test(v)||"x"===v?"x":"y";switch(at){case"%":g*="x"===kt?b.percentToPxWidth:b.percentToPxHeight;break;case"px":break;default:g*=b[at+"ToPx"]}switch(ft){case"%":g*=1/("x"===kt?b.percentToPxWidth:b.percentToPxHeight);break;case"px":break;default:g*=1/b[ft+"ToPx"]}}switch(yt){case"+":rt=g+rt;break;case"-":rt=g-rt;break;case"*":rt=g*rt;break;case"/":rt=g/rt}y[v]={rootPropertyValue:ht,startValue:g,currentValue:g,endValue:rt,unitType:ft,easing:ui};f.debug&&console.log("tweensContainer ("+v+"): "+JSON.stringify(y[v]),c)}else f.debug&&console.log("Skipping ["+ot+"] due to a lack of browser support.")}y.element=c}y.element&&(u.Values.addClass(c,"velocity-animating"),ct.push(y),""===n.queue&&(e(c).tweensContainer=y,e(c).opts=n),e(c).isAnimating=!0,tt===nt-1?(f.State.calls.push([ct,k,n,null,d.resolver]),f.State.isTicking===!1&&(f.State.isTicking=!0,a())):tt++)}var c=this,n=o.extend({},f.defaults,h),y={},b;switch(e(c)===r&&f.init(c),parseFloat(n.delay)&&n.queue!==!1&&o.queue(c,n.queue,function(t){f.velocityQueueEntryFlag=!0;e(c).delayTimer={setTimeout:setTimeout(t,parseFloat(n.delay)),next:t}}),n.duration.toString().toLowerCase()){case"fast":n.duration=200;break;case"normal":n.duration=v;break;case"slow":n.duration=600;break;default:n.duration=parseFloat(n.duration)||1}f.mock!==!1&&(f.mock===!0?n.duration=n.delay=1:(n.duration*=parseFloat(f.mock)||1,n.delay*=parseFloat(f.mock)||1));n.easing=w(n.easing,n.duration);n.begin&&!s.isFunction(n.begin)&&(n.begin=null);n.progress&&!s.isFunction(n.progress)&&(n.progress=null);n.complete&&!s.isFunction(n.complete)&&(n.complete=null);n.display!==r&&null!==n.display&&(n.display=n.display.toString().toLowerCase(),"auto"===n.display&&(n.display=f.CSS.Values.getDisplayType(c)));n.visibility!==r&&null!==n.visibility&&(n.visibility=n.visibility.toString().toLowerCase());n.mobileHA=n.mobileHA&&f.State.isMobile&&!f.State.isGingerbread;n.queue===!1?n.delay?setTimeout(g,n.delay):g():o.queue(c,n.queue,function(n,t){return t===!0?(d.promise&&d.resolver(k),!0):(f.velocityQueueEntryFlag=!0,void g(n))});""!==n.queue&&"fx"!==n.queue||"inprogress"===o.queue(c)[0]||o.dequeue(c)}var at=arguments[0]&&(arguments[0].p||o.isPlainObject(arguments[0].properties)&&!arguments[0].properties.names||s.isString(arguments[0].properties)),et,vt,rt,k,p,h,nt,tt,yt,g,d,it,st,ht,l,ct,n,lt,ot,ut;if(s.isWrapped(this)?(et=!1,rt=0,k=this,vt=this):(et=!0,rt=1,k=at?arguments[0].elements||arguments[0].e:arguments[0]),k=y(k)){if(at?(p=arguments[0].properties||arguments[0].p,h=arguments[0].options||arguments[0].o):(p=arguments[rt],h=arguments[rt+1]),nt=k.length,tt=0,!/^(stop|finish)$/i.test(p)&&!o.isPlainObject(h))for(yt=rt+1,h={},g=yt;g<arguments.length;g++)s.isArray(arguments[g])||!/^(fast|normal|slow)$/i.test(arguments[g])&&!/^\d/.test(arguments[g])?s.isString(arguments[g])||s.isArray(arguments[g])?h.easing=arguments[g]:s.isFunction(arguments[g])&&(h.complete=arguments[g]):h.duration=arguments[g];d={promise:null,resolver:null,rejecter:null};et&&f.Promise&&(d.promise=new f.Promise(function(n,t){d.resolver=n;d.rejecter=t}));switch(p){case"scroll":it="scroll";break;case"reverse":it="reverse";break;case"finish":case"stop":return o.each(k,function(n,t){e(t)&&e(t).delayTimer&&(clearTimeout(e(t).delayTimer.setTimeout),e(t).delayTimer.next&&e(t).delayTimer.next(),delete e(t).delayTimer)}),st=[],o.each(f.State.calls,function(n,t){t&&o.each(t[1],function(i,u){var f=h===r?"":h;return f===!0||t[2].queue===f||h===r&&t[2].queue===!1?void o.each(k,function(i,r){r===u&&((h===!0||s.isString(h))&&(o.each(o.queue(r,s.isString(h)?h:""),function(n,t){s.isFunction(t)&&t(null,!0)}),o.queue(r,s.isString(h)?h:"",[])),"stop"===p?(e(r)&&e(r).tweensContainer&&f!==!1&&o.each(e(r).tweensContainer,function(n,t){t.endValue=t.currentValue}),st.push(n)):"finish"===p&&(t[2].duration=1))}):!0})}),"stop"===p&&(o.each(st,function(n,t){b(t,!0)}),d.promise&&d.resolver(k)),ft();default:if(!o.isPlainObject(p)||s.isEmptyObject(p)){if(s.isString(p)&&f.Redirects[p]){var n=o.extend({},h),bt=n.duration,pt=n.delay||0;return n.backwards===!0&&(k=o.extend(!0,[],k).reverse()),o.each(k,function(t,i){parseFloat(n.stagger)?n.delay=pt+parseFloat(n.stagger)*t:s.isFunction(n.stagger)&&(n.delay=pt+n.stagger.call(i,t,nt));n.drag&&(n.duration=parseFloat(bt)||(/^(callout|transition)/.test(p)?1e3:v),n.duration=Math.max(n.duration*(n.backwards?1-t/nt:(t+1)/nt),.75*n.duration,200));f.Redirects[p].call(i,i,n||{},t,nt,k,d.promise?d:r)}),ft()}return ht="Velocity: First argument ("+p+") was not a property map, a known action, or a registered redirect. Aborting.",d.promise?d.rejecter(new Error(ht)):console.log(ht),ft()}it="start"}if(l={lastParent:null,lastPosition:null,lastFontSize:null,lastPercentToPxWidth:null,lastPercentToPxHeight:null,lastEmToPx:null,remToPx:null,vwToPx:null,vhToPx:null},ct=[],o.each(k,function(n,t){s.isNode(t)&&wt.call(t)}),n=o.extend({},f.defaults,h),n.loop=parseInt(n.loop),lt=2*n.loop-1,n.loop)for(ot=0;lt>ot;ot++)ut={delay:n.delay,progress:n.progress},ot===lt-1&&(ut.display=n.display,ut.visibility=n.visibility,ut.complete=n.complete),c(k,"reverse",ut);return ft()}},f=o.extend(c,f),f.animate=c,l=t.requestAnimationFrame||k,f.State.isMobile||i.hidden===r||i.addEventListener("visibilitychange",function(){i.hidden?(l=function(n){return setTimeout(function(){n(!0)},16)},a()):l=t.requestAnimationFrame||k}),n.Velocity=f,n!==t&&(n.fn.velocity=c,n.fn.velocity.defaults=f.defaults),o.each(["Down","Up"],function(n,t){f.Redirects["slide"+t]=function(n,i,u,e,s,h){var c=o.extend({},i),v=c.begin,y=c.complete,a={height:"",marginTop:"",marginBottom:"",paddingTop:"",paddingBottom:""},l={};c.display===r&&(c.display="Down"===t?"inline"===f.CSS.Values.getDisplayType(n)?"inline-block":"block":"none");c.begin=function(){var i,r;v&&v.call(s,s);for(i in a)l[i]=n.style[i],r=f.CSS.getPropertyValue(n,i),a[i]="Down"===t?[r,0]:[0,r];l.overflow=n.style.overflow;n.style.overflow="hidden"};c.complete=function(){for(var t in l)n.style[t]=l[t];y&&y.call(s,s);h&&h.resolver(s)};f(n,a,c)}}),o.each(["In","Out"],function(n,t){f.Redirects["fade"+t]=function(n,i,u,e,s,h){var c=o.extend({},i),a={opacity:"In"===t?1:0},l=c.complete;c.complete=u!==e-1?c.begin=null:function(){l&&l.call(s,s);h&&h.resolver(s)};c.display===r&&(c.display="In"===t?"auto":"none");f(this,a,c)}}),f}(window.jQuery||window.Zepto||window,window,document)});isgift="0";$("#isGiftId").click(function(){isgift="1";$("#meId").removeClass("selected");$("#isGiftId").addClass("selected")});$("#meId").click(function(){isgift="0";$("#isGiftId").removeClass("selected");$("#meId").addClass("selected")}),function(){window.Gillette={};window.Gillette.Client={};window.Gillette.Wizard={};window.Gillette.Events={}}(),function(n){n.Enum&&n.Enum.length&&0<n.Enum.length||(n.Enum={},n.Enum.Event={},n.Enum.Exception={},n.Enum.Colour={},n.Enum.ToolTypes={},n.Enum.Progressor={},n.Enum.Event={WIZARD_OBJECT_ADDED:"object_added",WIZARD_OBJECT_REMOVED:"object_removed",WIZARD_OBJECT_MODIFIED:"object_modified",WIZARD_OBJECT_SELECTED:"object_selected",WIZARD_NO_OBJECT_SELECTED:"object_none_selected",WIZARD_CANVAS_MOUSE_UP:"canvas_mouse_up",WIZARD_READY:"wizard_ready",WIZARD_TEMPLATE_LOADED:"template_loaded",CLIENT_CONFIGURATION_PROCESS_ERROR:"ClientConfigProcessError",CLIENT_CONFIGURATION_LOAD_ERROR:"ClientConfigLoadError",CLIENT_SAVE_DESIGN_ERROR:"ClientSaveDesignError",CLIENT_TEMPLATE_LOAD_ERROR:"ClientTemplateLoadError",CLIENT_IMAGE_UPLOAD_ERROR:"ClientImageUploadError",CLIENT_IMAGE_UPLOAD_TOO_BIG_ERROR:"ClientImageUploadTooBigError",CLIENT_IMAGE_UPLOAD_INVALID_FORMAT:"ClientImageUploadInvalidFormat",PROJECTOR_MODEL_LOAD_ERROR:"ProjectorModelLoadError"},n.Enum.Exception={CONFIGURATION_MENU:"ConfigurationMenuError"},n.Enum.MenuTypes={Tool:"tool",Utility:"utility",Colour:"colour",Pointer:"pointer"},n.Enum.Colour={"colour-black":"#000000","colour-white":"#FFFFFF","colour-bright-grey":"#DADADA","colour-dark-grey":"#878787","colour-yellow":"#FFEE00","colour-orange":"#E95B1B","colour-red":"#CD1719","colour-dark-red":"#930F0F","colour-brown":"#5A1C03","colour-burgundy":"#970052","colour-pink":"#C30064","colour-magenta":"#E6007E","colour-lilic":"#831F82","colour-lavender":"#7C6EB0","colour-cyan":"#009FE3","colour-navy-blue":"#003D7C","colour-petrol":"#006891","colour-green":"#009640","colour-apple-green":"#95C11F","colour-forest-green":"#005F27","colour-olive":"#505411",none:0},n.Enum.ToolTypes={Clipart:"clipart",Image:"image",Text:"text",Pencil:"pencil",Object:"object",Template:"template",Background:"background",Product:"product"},n.Enum.Progressor={SHOW:"show",HIDE:"hide"},n.Enum.FileUploadsObject={MaxUploadSize:"maxFileSizeMB"},n.Enum.MqBreakpoint={Other:0,Phone:1,Tablet:2,DesktopSmall:4,DesktopLarge:8},n.Enum.Orientation={Portrait:0,Landscape:1,ToString:function(n){return 0===n?"portrait":"landscape"}},n.Enum.SaveMode={draft:"draft",order:"order"},n.Enum.Cookies={returningUser:"myGillette_Not_First_Visit"})}(Gillette),function(n){n.Config&&n.Config.length&&0<n.Config.length||(n.Config={},n.Config.AjaxTimeout=1e7,n.Config.DesktopTooSmallBreakpoint=620,n.Config.Locations={tandcs:resources.tandcs},n.Config.Scroll={"max-icons-desktop":6},n.Config.Paths={Assets:resources.assets,Mask:resources.mask,Models:resources.models,Images:resources.images},n.Config.Api={Save:resources.save,Upload:resources.upload,GetConfig:resources.getConfig},n.Config.Ext={Template:".json",Clipart:".svg",Background:".jpg"},n.Config.ValidUploadFormats="JPG, PNG",n.Config.RegEx={LevelFromClass:/\w+-\d/i,LevelNumFromString:/\d/},n.Config.WebFontConfig={classes:!1,google:{families:"Domine:700:latin Lora::latin Poiret+One::latin Shadows+Into+Light::latin Raleway::latin Oswald::latin Dancing+Script:700:latin Pinyon+Script::latin Indie+Flower::latin Orbitron::latin".split(" ")}},n.Config.Validation={textMaxLength:20},n.Config.TourPanel={autoCycleInitialTimeout:5e3,autoCycleTimeout:4e3})}(Gillette),function(){function n(n,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var i=document.createEvent("CustomEvent");return i.initCustomEvent(n,t.bubbles,t.cancelable,t.detail),i}n.prototype=window.Event.prototype;window.CustomEvent=n}(),function(n){"function"==typeof define&&define.amd?define(["jquery"],n):n(jQuery)}(function(n){function r(n){return n=t.json?JSON.stringify(n):String(n),t.raw?n:encodeURIComponent(n)}function i(i,r){var e,f;if(t.raw)e=i;else n:{f=i;0===f.indexOf('"')&&(f=f.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{f=decodeURIComponent(f.replace(u," "))}catch(o){e=void 0;break n}try{e=t.json?JSON.parse(f):f;break n}catch(o){}e=void 0}return n.isFunction(r)?r(e):e}var u=/\+/g,t=n.cookie=function(u,f,e){var c,s,o,h;if(void 0!==f&&!n.isFunction(f))return e=n.extend({},t.defaults,e),"number"==typeof e.expires&&(c=e.expires,s=e.expires=new Date,s.setDate(s.getDate()+c)),document.cookie=[t.raw?u:encodeURIComponent(u),"=",r(f),e.expires?"; expires="+e.expires.toUTCString():"",e.path?"; path="+e.path:"",e.domain?"; domain="+e.domain:"",e.secure?"; secure":""].join("");e=u?void 0:{};for(var c=document.cookie?document.cookie.split("; "):[],s=0,l=c.length;s<l;s++){if(o=c[s].split("="),h=o.shift(),h=t.raw?h:decodeURIComponent(h),o=o.join("="),u&&u===h){e=i(o,f);break}u||void 0===(o=i(o))||(e[h]=o)}return e};t.defaults={};n.removeCookie=function(t,i){return void 0!==n.cookie(t)?(n.cookie(t,"",n.extend({},i,{expires:-1})),!0):!1}}),function(){function kt(n){return n.call.apply(n.bind,arguments)}function dt(n,t){if(!n)throw Error();if(2<arguments.length){var i=Array.prototype.slice.call(arguments,2);return function(){var r=Array.prototype.slice.call(arguments);return Array.prototype.unshift.apply(r,i),n.apply(t,r)}}return function(){return n.apply(t,arguments)}}function r(){return r=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?kt:dt,r.apply(null,arguments)}function d(n,t){this.D=n;this.m=t||n;this.F=this.m.document}function g(n,t,i){(n=n.F.getElementsByTagName(t)[0])||(n=document.documentElement);n&&n.lastChild&&n.insertBefore(i,n.lastChild)}function u(n,t,i){var f,r,e,u;for(t=t||[],i=i||[],f=n.className.split(/\s+/),r=0;r<t.length;r+=1){for(e=!1,u=0;u<f.length;u+=1)if(t[r]===f[u]){e=!0;break}e||f.push(t[r])}for(t=[],r=0;r<f.length;r+=1){for(e=!1,u=0;u<i.length;u+=1)if(f[r]===i[u]){e=!0;break}e||t.push(f[r])}n.className=t.join(" ").replace(/\s+/g," ").replace(/^\s+|\s+$/,"")}function nt(n,t){for(var r=n.className.split(/\s+/),i=0,u=r.length;i<u;i++)if(r[i]==t)return!0;return!1}function a(n){if("string"==typeof n.da)return n.da;var t=n.m.location.protocol;return"about:"==t&&(t=n.D.location.protocol),"https:"==t?"https:":"http:"}function tt(n,t){var r=n.createElement("link",{rel:"stylesheet",href:t,media:"all"}),i=!1;r.onload=function(){i||(i=!0)};r.onerror=function(){i||(i=!0)};g(n,"head",r)}function v(n,t,i,r){var e=n.F.getElementsByTagName("head")[0],u,f;return e?(u=n.createElement("script",{src:t}),f=!1,u.onload=u.onreadystatechange=function(){f||this.readyState&&"loaded"!=this.readyState&&"complete"!=this.readyState||(f=!0,i&&i(null),u.onload=u.onreadystatechange=null,"HEAD"==u.parentNode.tagName&&e.removeChild(u))},e.appendChild(u),setTimeout(function(){f||(f=!0,i&&i(Error("Script load timeout")))},r||5e3),u):null}function it(n){this.ca=n||"-"}function t(n,t){this.V=n;this.N=4;this.H="n";var i=(t||"n4").match(/^([nio])([1-9])$/i);i&&(this.H=i[1],this.N=parseInt(i[2],10))}function n(n){return n.H+n.N}function gt(n){var i=4,r="n",t=null;return n&&((t=n.match(/(normal|oblique|italic)/i))&&t[1]&&(r=t[1].substr(0,1).toLowerCase()),(t=n.match(/([1-9]00|normal|bold)/i))&&t[1]&&(/bold/i.test(t[1])?i=7:/[1-9]00/.test(t[1])&&(i=parseInt(t[1].substr(0,1),10)))),r+i}function ni(n,t){this.a=n;this.h=n.m.document.documentElement;this.J=t;this.f="wf";this.e=new it("-");this.Z=!1!==t.events;this.u=!1!==t.classes}function ti(n){n.u&&u(n.h,[n.e.d(n.f,"loading")]);f(n,"loading")}function rt(n){if(n.u){var i=nt(n.h,n.e.d(n.f,"active")),t=[],r=[n.e.d(n.f,"loading")];i||t.push(n.e.d(n.f,"inactive"));u(n.h,t,r)}f(n,"inactive")}function f(t,i,r){t.Z&&t.J[i]&&(r?t.J[i](r.getName(),n(r)):t.J[i]())}function ii(){this.t={}}function ri(n,t,i){var f=[],r,u;for(r in t)t.hasOwnProperty(r)&&(u=n.t[r],u&&f.push(u(t[r],i)));return f}function e(n,t){this.a=n;this.q=t;this.j=this.a.createElement("span",{"aria-hidden":"true"},this.q)}function s(n,t){var e=n.j,r,i,u,f;for(r=[],i=t.V.split(/,\s*/),u=0;u<i.length;u++)f=i[u].replace(/['"]/g,""),-1==f.indexOf(" ")?r.push(f):r.push("'"+f+"'");r=r.join(",");i="normal";"o"===t.H?i="oblique":"i"===t.H&&(i="italic");e.style.cssText="display:block;position:absolute;top:-9999px;left:-9999px;font-size:300px;width:auto;height:auto;line-height:normal;margin:0;padding:0;font-variant:normal;white-space:nowrap;font-family:"+r+";"+("font-style:"+i+";font-weight:"+(t.N+"00")+";")}function h(n){g(n.a,"body",n.j)}function ut(i,r,u,f,o,c,l){this.O=i;this.ba=r;this.a=u;this.g=f;this.q=l||"BESbswy";this.s={};this.M=o||3e3;this.T=c||null;this.C=this.B=this.w=this.v=null;this.v=new e(this.a,this.q);this.w=new e(this.a,this.q);this.B=new e(this.a,this.q);this.C=new e(this.a,this.q);s(this.v,new t(this.g.getName()+",serif",n(this.g)));s(this.w,new t(this.g.getName()+",sans-serif",n(this.g)));s(this.B,new t("serif",n(this.g)));s(this.C,new t("sans-serif",n(this.g)));h(this.v);h(this.w);h(this.B);h(this.C)}function ft(){if(null===c){var n=/AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent);c=!!n&&(536>parseInt(n[1],10)||536===parseInt(n[1],10)&&11>=parseInt(n[2],10))}return c}function et(n,t,i){for(var r in o)if(o.hasOwnProperty(r)&&t===n.s[o[r]]&&i===n.s[o[r]])return!0;return!1}function ot(n){var t=n.v.j.offsetWidth,i=n.w.j.offsetWidth,r;(r=t===n.s.serif&&i===n.s["sans-serif"])||(r=ft()&&et(n,t,i));r?yt()-n.ea>=n.M?ft()&&et(n,t,i)&&(null===n.T||n.T.hasOwnProperty(n.g.getName()))?y(n,n.O):y(n,n.ba):ui(n):y(n,n.O)}function ui(n){setTimeout(r(function(){ot(this)},n),50)}function y(n,t){n.v.remove();n.w.remove();n.B.remove();n.C.remove();t(n.g)}function p(n,t,i){this.a=n;this.o=t;this.K=0;this.X=this.S=!1;this.M=i}function st(n){0==--n.K&&n.S&&(n.X?(n=n.o,n.u&&u(n.h,[n.e.d(n.f,"active")],[n.e.d(n.f,"loading"),n.e.d(n.f,"inactive")]),f(n,"active")):rt(n.o))}function ht(n){this.D=n;this.p=new ii;this.U=0;this.P=this.Q=!0}function fi(t,i,e,o,s){var h=0==--t.U;(t.P||t.Q)&&setTimeout(function(){var y=s||null,p=o||null||{},t,l;if(0===e.length&&h)rt(i.o);else{for(i.K+=e.length,h&&(i.S=h),l=[],t=0;t<e.length;t++){var a=e[t],w=p[a.getName()],c=i.o,v=a;c.u&&u(c.h,[c.e.d(c.f,v.getName(),n(v).toString(),"loading")]);f(c,"fontloading",v);c=new ut(r(i.$,i),r(i.aa,i),i.a,a,i.M,y,w);l.push(c)}for(t=0;t<l.length;t++)l[t].start()}},0)}function ei(n,t,i){var r=[],f=i.timeout,u;for(ti(t),r=ri(n.p,i,n.a),u=new p(n.a,t,f),n.U=r.length,t=0,i=r.length;t<i;t++)r[t].load(function(t,i,r){fi(n,u,t,i,r)})}function ct(n,t,i){this.I=n?n:t+pt;this.k=[];this.L=[];this.Y=i||""}function lt(n){this.k=n;this.W=[];this.G={}}function at(n,t){this.a=n;this.c=t}function w(n,t){this.a=n;this.c=t;this.R=[]}function b(n,t){this.a=n;this.c=t}function k(n,t){this.a=n;this.c=t}function vt(n,t){this.a=n;this.c=t}var yt=Date.now||function(){return+new Date},o,c,pt,bt,i,l;d.prototype.createElement=function(n,t,i){if(n=this.F.createElement(n),t)for(var r in t)t.hasOwnProperty(r)&&("style"==r?n.style.cssText=t[r]:n.setAttribute(r,t[r]));return i&&n.appendChild(this.F.createTextNode(i)),n};it.prototype.d=function(){for(var t=[],n=0;n<arguments.length;n++)t.push(arguments[n].replace(/[\W_]+/g,"").toLowerCase());return t.join(this.ca)};t.prototype.getName=function(){return this.V};e.prototype.remove=function(){var n=this.j;n.parentNode&&n.parentNode.removeChild(n)};o={ga:"serif",fa:"sans-serif"};c=null;ut.prototype.start=function(){this.s.serif=this.B.j.offsetWidth;this.s["sans-serif"]=this.C.j.offsetWidth;this.ea=yt();ot(this)};p.prototype.$=function(t){var i=this.o;i.u&&u(i.h,[i.e.d(i.f,t.getName(),n(t).toString(),"active")],[i.e.d(i.f,t.getName(),n(t).toString(),"loading"),i.e.d(i.f,t.getName(),n(t).toString(),"inactive")]);f(i,"fontactive",t);this.X=!0;st(this)};p.prototype.aa=function(t){var i=this.o;if(i.u){var e=nt(i.h,i.e.d(i.f,t.getName(),n(t).toString(),"active")),r=[],o=[i.e.d(i.f,t.getName(),n(t).toString(),"loading")];e||r.push(i.e.d(i.f,t.getName(),n(t).toString(),"inactive"));u(i.h,r,o)}f(i,"fontinactive",t);st(this)};ht.prototype.load=function(n){this.a=new d(this.D,n.context||this.D);this.Q=!1!==n.events;this.P=!1!==n.classes;ei(this,new ni(this.a,n),n)};pt="//fonts.googleapis.com/css";ct.prototype.d=function(){if(0==this.k.length)throw Error("No fonts to load!");if(-1!=this.I.indexOf("kit="))return this.I;for(var n=this.k.length,i=[],t=0;t<n;t++)i.push(this.k[t].replace(/ /g,"+"));return n=this.I+"?family="+i.join("%7C"),0<this.L.length&&(n+="&subset="+this.L.join(",")),0<this.Y.length&&(n+="&text="+encodeURIComponent(this.Y)),n};var wt={latin:"BESbswy",cyrillic:"&#1081;&#1103;&#1046;",greek:"&#945;&#946;&#931;",khmer:"&#x1780;&#x1781;&#x1782;",Hanuman:"&#x1780;&#x1781;&#x1782;"},oi={thin:"1",extralight:"2","extra-light":"2",ultralight:"2","ultra-light":"2",light:"3",regular:"4",book:"4",medium:"5","semi-bold":"6",semibold:"6","demi-bold":"6",demibold:"6",bold:"7","extra-bold":"8",extrabold:"8","ultra-bold":"8",ultrabold:"8",black:"9",heavy:"9",l:"3",r:"4",b:"7"},si={i:"i",italic:"i",n:"n",normal:"n"},hi=/^(thin|(?:(?:extra|ultra)-?)?light|regular|book|medium|(?:(?:semi|demi|extra|ultra)-?)?bold|black|heavy|l|r|b|[1-9]00)?(n|i|normal|italic)?$/;lt.prototype.parse=function(){for(var u,f,i,r,c,l=this.k.length,o=0;o<l;o++){var n=this.k[o].split(":"),e=n[0].replace(/\+/g," "),s=["n4"];if(2<=n.length){if(f=n[1],u=[],f)for(var f=f.split(","),a=f.length,h=0;h<a;h++)i=f[h],i.match(/^[\w-]+$/)?(i=hi.exec(i.toLowerCase()),null==i)?i="":(r=i[1],null==r||""==r?r="4":(c=oi[r],r=c?c:isNaN(r)?"4":r.substr(0,1)),i=i[2],i=[null==i||""==i?"n":si[i],r].join("")):i="",i&&u.push(i);0<u.length&&(s=u);3==n.length&&(n=n[2],u=[],n=n?n.split(","):u,0<n.length&&(n=wt[n[0]])&&(this.G[e]=n))}for(this.G[e]||(n=wt[e])&&(this.G[e]=n),n=0;n<s.length;n+=1)this.W.push(new t(e,s[n]))}};bt={Arimo:!0,Cousine:!0,Tinos:!0};at.prototype.load=function(n){for(var i,f,e=this.a,r=new ct(this.c.api,a(e),this.c.text),t=this.c.families,o=t.length,u=0;u<o;u++)i=t[u].split(":"),3==i.length&&r.L.push(i.pop()),f="",2==i.length&&""!=i[1]&&(f=":"),r.k.push(i.join(f));t=new lt(t);t.parse();tt(e,r.d());n(t.W,t.G,bt)};w.prototype.A=function(n){var t=this.a;return a(this.a)+(this.c.api||"//f.fontdeck.com/s/css/js/")+(t.m.location.hostname||t.D.location.hostname)+"/"+n+".js"};w.prototype.load=function(n){var i=this.c.id,r=this.a.m,u=this;i?(r.__webfontfontdeckmodule__||(r.__webfontfontdeckmodule__={}),r.__webfontfontdeckmodule__[i]=function(i,r){for(var e,f=0,o=r.fonts.length;f<o;++f)e=r.fonts[f],u.R.push(new t(e.name,gt("font-weight:"+e.weight+";font-style:"+e.style)));n(u.R)},v(this.a,this.A(i),function(t){t&&n([])})):n([])};b.prototype.A=function(n){return(this.c.api||"https://use.typekit.net")+"/"+n+".js"};b.prototype.load=function(n){var r=this.c.id,i=this.a.m;r?v(this.a,this.A(r),function(r){var f,u;if(r)n([]);else if(i.Typekit&&i.Typekit.config&&i.Typekit.config.fn){for(r=i.Typekit.config.fn,f=[],u=0;u<r.length;u+=2)for(var s=r[u],o=r[u+1],e=0;e<o.length;e++)f.push(new t(s,o[e]));try{i.Typekit.load({events:!1,classes:!1})}catch(h){}n(f)}},2e3):n([])};k.prototype.A=function(n,t){var i=a(this.a),r=(this.c.api||"fast.fonts.net/jsapi").replace(/^.*http(s?):(\/\/)?/,"");return i+"//"+r+"/"+n+".js"+(t?"?v="+t:"")};k.prototype.load=function(n){var i=this.c.projectId,u=this.c.version,r;i?(r=this.a.m,v(this.a,this.A(i,u),function(u){var e,f;if(u)n([]);else if(r["__mti_fntLst"+i]){if(u=r["__mti_fntLst"+i](),e=[],u)for(f=0;f<u.length;f++)e.push(new t(u[f].fontfamily));n(e)}else n([])}).id="__MonotypeAPIScript__"+i):n([])};vt.prototype.load=function(n){for(var r=this.c.urls||[],s=this.c.families||[],h=this.c.testStrings||{},u,o,e,i=0,f=r.length;i<f;i++)tt(this.a,r[i]);for(r=[],i=0,f=s.length;i<f;i++)if(u=s[i].split(":"),u[1])for(o=u[1].split(","),e=0;e<o.length;e+=1)r.push(new t(u[0],o[e]));else r.push(new t(u[0]));n(r,h)};i=new ht(window);i.p.t.custom=function(n,t){return new vt(t,n)};i.p.t.fontdeck=function(n,t){return new w(t,n)};i.p.t.monotype=function(n,t){return new k(t,n)};i.p.t.typekit=function(n,t){return new b(t,n)};i.p.t.google=function(n,t){return new at(t,n)};l={load:r(i.load,i)};"function"==typeof define&&define.amd?define(function(){return l}):"undefined"!=typeof module&&module.exports?module.exports=l:(window.WebFont=l,window.WebFontConfig&&i.load(window.WebFontConfig))}();fabric=fabric||{version:"1.6.0-rc.1"};"undefined"!=typeof exports&&(exports.fabric=fabric);"undefined"!=typeof document&&"undefined"!=typeof window?(fabric.document=document,fabric.window=window,window.fabric=fabric):(fabric.document=require("jsdom").jsdom("<!DOCTYPE html><html><head><\/head><body><\/body><\/html>"),fabric.window=fabric.document.createWindow?fabric.document.createWindow():fabric.document.parentWindow);fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement;fabric.isLikelyNode="undefined"!=typeof Buffer&&"undefined"==typeof window;fabric.SHARED_ATTRIBUTES="display transform fill fill-opacity fill-rule opacity stroke stroke-dasharray stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width id".split(" ");fabric.DPI=96;fabric.reNum="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:e[-+]?\\d+)?)";fabric.devicePixelRatio=fabric.window.devicePixelRatio||fabric.window.webkitDevicePixelRatio||fabric.window.mozDevicePixelRatio||1;"object"!=typeof JSON&&(JSON={}),function(){function i(n){return 10>n?"0"+n:n}function o(n){return f.lastIndex=0,f.test(n)?'"'+n.replace(f,function(n){var t=s[n];return"string"==typeof t?t:"\\u"+("0000"+n.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+n+'"'}function r(i,u){var s,l,c,a,v=n,h,f=u[i];f&&"object"==typeof f&&"function"==typeof f.toJSON&&(f=f.toJSON(i));"function"==typeof t&&(f=t.call(u,i,f));switch(typeof f){case"string":return o(f);case"number":return isFinite(f)?String(f):"null";case"boolean":case"null":return String(f);case"object":if(!f)return"null";if(n+=e,h=[],"[object Array]"===Object.prototype.toString.apply(f)){for(a=f.length,s=0;s<a;s+=1)h[s]=r(s,f)||"null";return c=0===h.length?"[]":n?"[\n"+n+h.join(",\n"+n)+"\n"+v+"]":"["+h.join(",")+"]",n=v,c}if(t&&"object"==typeof t)for(a=t.length,s=0;s<a;s+=1)"string"==typeof t[s]&&(l=t[s],(c=r(l,f))&&h.push(o(l)+(n?": ":":")+c));else for(l in f)Object.prototype.hasOwnProperty.call(f,l)&&(c=r(l,f))&&h.push(o(l)+(n?": ":":")+c);return c=0===h.length?"{}":n?"{\n"+n+h.join(",\n"+n)+"\n"+v+"}":"{"+h.join(",")+"}",n=v,c}}"function"!=typeof Date.prototype.toJSON&&(Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+i(this.getUTCMonth()+1)+"-"+i(this.getUTCDate())+"T"+i(this.getUTCHours())+":"+i(this.getUTCMinutes())+":"+i(this.getUTCSeconds())+"Z":null},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()});var u,f,n,e,s,t;"function"!=typeof JSON.stringify&&(f=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,s={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},JSON.stringify=function(i,u,f){var o;if(e=n="","number"==typeof f)for(o=0;o<f;o+=1)e+=" ";else"string"==typeof f&&(e=f);if((t=u)&&"function"!=typeof u&&("object"!=typeof u||"number"!=typeof u.length))throw Error("JSON.stringify");return r("",{"":i})});"function"!=typeof JSON.parse&&(u=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,JSON.parse=function(b,a){function f(n,t){var r,u,i=n[t];if(i&&"object"==typeof i)for(r in i)Object.prototype.hasOwnProperty.call(i,r)&&(u=f(i,r),void 0!==u?i[r]=u:delete i[r]);return a.call(n,t,i)}var c;if(b=String(b),u.lastIndex=0,u.test(b)&&(b=b.replace(u,function(n){return"\\u"+("0000"+n.charCodeAt(0).toString(16)).slice(-4)})),/^[\],:{}\s]*$/.test(b.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return c=eval("("+b+")"),"function"==typeof a?f({"":c},""):c;throw new SyntaxError("JSON.parse");})}();"undefined"==typeof eventjs&&(eventjs={}),function(n){n.modifyEventListener=!1;n.modifySelectors=!1;n.configure=function(t){isFinite(t.modifyEventListener)&&(n.modifyEventListener=t.modifyEventListener);isFinite(t.modifySelectors)&&(n.modifySelectors=t.modifySelectors);!1===v&&n.modifyEventListener&&y();!1===p&&n.modifySelectors&&w()};n.add=function(n,t,r,u){return i(n,t,r,u,"add")};n.remove=function(n,t,r,u){return i(n,t,r,u,"remove")};n.returnFalse=function(){return!1};n.stop=function(n){n&&(n.stopPropagation&&n.stopPropagation(),n.cancelBubble=!0,n.cancelBubbleCount=0)};n.prevent=function(n){n&&(n.preventDefault?n.preventDefault():n.preventManipulation?n.preventManipulation():n.returnValue=!1)};n.cancel=function(t){n.stop(t);n.prevent(t)};n.blur=function(){var n=document.activeElement,t;n&&(t=document.activeElement.nodeName,("INPUT"===t||"TEXTAREA"===t||"true"===n.contentEditable)&&n.blur&&n.blur())};n.getEventSupport=function(n,t){if("string"==typeof n&&(t=n,n=window),t="on"+t,t in n)return!0;if(n.setAttribute||(n=document.createElement("div")),n.setAttribute&&n.removeAttribute){n.setAttribute(t,"");var i="function"==typeof n[t];return"undefined"!=typeof n[t]&&(n[t]=null),n.removeAttribute(t),i}};var r=function(n){if(!n||"object"!=typeof n)return n;var i=new n.constructor,t;for(t in n)i[t]=n[t]&&"object"==typeof n[t]?r(n[t]):n[t];return i},i=function(s,h,c,v,y,p){var w,b,d,nt,it,g,ut,tt,k;if(v=v||{},"[object Object]"===String(s))if(w=s,s=w.target,delete w.target,w.type&&w.listener){h=w.type;delete w.type;c=w.listener;delete w.listener;for(b in w)v[b]=w[b]}else{for(d in w)k=w[d],"function"!=typeof k&&(v[d]=k);nt={};for(b in w){d=b.split(",");k=w[b];it={};for(g in v)it[g]=v[g];if("function"==typeof k)c=k;else if("function"==typeof k.listener)for(g in c=k.listener,k)"function"!=typeof k[g]&&(it[g]=k[g]);else continue;for(k=0;k<d.length;k++)nt[b]=eventjs.add(s,d[k],c,it,y)}return nt}if(s&&h&&c){if("string"==typeof s&&"ready"===h)if(window.eventjs_stallOnReady)h="load",s=window;else{var ft=(new Date).getTime(),et=v.timeout,rt=window.setInterval(function(){(new Date).getTime()-ft>et&&window.clearInterval(rt);document.querySelector(s)&&(window.clearInterval(rt),setTimeout(c,1))},v.interval||1e3/60);return}if("string"==typeof s){if(s=document.querySelectorAll(s),0===s.length)return u("Missing target on listener!",arguments);1===s.length&&(s=s[0])}if(w={},0<s.length&&s!==window){for(b=0,g=s.length;b<g;b++)(d=i(s[b],h,c,r(v),y))&&(w[b]=d);return f(w)}if("string"==typeof h&&(h=h.toLowerCase(),-1!==h.indexOf(" ")?h=h.split(" "):-1!==h.indexOf(",")&&(h=h.split(","))),"string"!=typeof h){if("number"==typeof h.length)for(b=0,g=h.length;b<g;b++)(d=i(s,h[b],c,r(v),y))&&(w[h[b]]=d);else for(b in h)(d="function"==typeof h[b]?i(s,b,h[b],r(v),y):i(s,b,h[b].listener,r(h[b]),y))&&(w[b]=d);return f(w)}if(0===h.indexOf("on")&&(h=h.substr(2)),"object"!=typeof s)return u("Target is not defined!",arguments);if("function"!=typeof c)return u("Listener is not a function!",arguments);if(b=v.useCapture||!1,w=o(s)+"."+o(c)+"."+(b?1:0),n.Gesture&&n.Gesture._gestureHandlers[h]){if(w=h+w,"remove"===y){if(!t[w])return;t[w].remove();delete t[w]}else if("add"===y){if(t[w])return t[w].add(),t[w];v.useCall&&!n.modifyEventListener&&(ut=c,c=function(n,t){for(var i in t)n[i]=t[i];return ut.call(s,n)});v.gesture=h;v.target=s;v.listener=c;v.fromOverwrite=p;t[w]=n.proxy[h](v)}return t[w]}for(tt=e(h),k=0;k<tt.length;k++)if(h=tt[k],nt=h+"."+w,"remove"===y)t[nt]&&(s[a](h,c,b),delete t[nt]);else if("add"===y){if(t[nt])break;s[l](h,c,b);t[nt]={id:nt,type:h,target:s,listener:c,remove:function(){for(var t=0;t<tt.length;t++)n.remove(s,tt[t],c,v)}}}return t[nt]}},f=function(n){return{remove:function(){for(var t in n)n[t].remove()},add:function(){for(var t in n)n[t].add()}}},u=function(n,t){"undefined"!=typeof console&&"undefined"!=typeof console.error&&console.error(n,t)},s={msPointer:["MSPointerDown","MSPointerMove","MSPointerUp"],touch:["touchstart","touchmove","touchend"],mouse:["mousedown","mousemove","mouseup"]},h={MSPointerDown:0,MSPointerMove:1,MSPointerUp:2,touchstart:0,touchmove:1,touchend:2,mousedown:0,mousemove:1,mouseup:2};n.supports={};window.navigator.msPointerEnabled&&(n.supports.msPointer=!0);n.getEventSupport("touchstart")&&(n.supports.touch=!0);n.getEventSupport("mousedown")&&(n.supports.mouse=!0);var e=function(){return function(t){var i=document.addEventListener?"":"on",r=h[t],u;if(isFinite(r)){t=[];for(u in n.supports)t.push(i+s[u][r]);return t}return[i+t]}}(),t={},c=0,o=function(n){return n===window?"#window":n===document?"#document":(n.uniqueID||(n.uniqueID="e"+c++),n.uniqueID)},l=document.addEventListener?"addEventListener":"attachEvent",a=document.removeEventListener?"removeEventListener":"detachEvent";n.createPointerEvent=function(t,i,r){var o=i.gesture,s=i.target,f=t.changedTouches||n.proxy.getCoords(t),e,u;f.length&&(e=f[0],i.pointers=r?[]:f,i.pageX=e.pageX,i.pageY=e.pageY,i.x=i.pageX,i.y=i.pageY);r=document.createEvent("Event");r.initEvent(o,!0,!0);r.originalEvent=t;for(u in i)"target"!==u&&(r[u]=i[u]);t=r.type;n.Gesture&&n.Gesture._gestureHandlers[t]&&i.oldListener.call(s,r,i,!1)};var v=!1,y=function(){if(window.HTMLElement){var t=function(t){var r=function(r){var u=r+"EventListener",f=t[u];t[u]=function(t,u,o){if(n.Gesture&&n.Gesture._gestureHandlers[t]){var s=o;"object"==typeof o?s.useCall=!0:s={useCall:!0,useCapture:o};i(this,t,u,s,r,!0)}else for(t=e(t),s=0;s<t.length;s++)f.call(this,t[s],u,o)}};r("add");r("remove")};navigator.userAgent.match(/Firefox/)?(t(HTMLDivElement.prototype),t(HTMLCanvasElement.prototype)):t(HTMLElement.prototype);t(document);t(window)}},p=!1,w=function(){var n=NodeList.prototype;n.removeEventListener=function(n,t,i){for(var r=0,u=this.length;r<u;r++)this[r].removeEventListener(n,t,i)};n.addEventListener=function(n,t,i){for(var r=0,u=this.length;r<u;r++)this[r].addEventListener(n,t,i)}};return n}(eventjs);"undefined"==typeof eventjs&&(eventjs={});"undefined"==typeof eventjs.proxy&&(eventjs.proxy={});eventjs.proxy=function(n){var i,t;return n.pointerSetup=function(n,t){n.target=n.target||window;n.doc=n.target.ownerDocument||n.target;n.minFingers=n.minFingers||n.fingers||1;n.maxFingers=n.maxFingers||n.fingers||Infinity;n.position=n.position||"relative";delete n.fingers;t=t||{};t.enabled=!0;t.gesture=n.gesture;t.target=n.target;t.env=n.env;eventjs.modifyEventListener&&n.fromOverwrite&&(n.oldListener=n.listener,n.listener=eventjs.createPointerEvent);var r=0,i=0===t.gesture.indexOf("pointer")&&eventjs.modifyEventListener?"pointer":"mouse";return n.oldListener&&(t.oldListener=n.oldListener),t.listener=n.listener,t.proxy=function(i){t.defaultListener=n.listener;n.listener=i;i(n.event,t)},t.add=function(){!0!==t.enabled&&(n.onPointerDown&&eventjs.add(n.target,i+"down",n.onPointerDown),n.onPointerMove&&eventjs.add(n.doc,i+"move",n.onPointerMove),n.onPointerUp&&eventjs.add(n.doc,i+"up",n.onPointerUp),t.enabled=!0)},t.remove=function(){!1!==t.enabled&&(n.onPointerDown&&eventjs.remove(n.target,i+"down",n.onPointerDown),n.onPointerMove&&eventjs.remove(n.doc,i+"move",n.onPointerMove),n.onPointerUp&&eventjs.remove(n.doc,i+"up",n.onPointerUp),t.reset(),t.enabled=!1)},t.pause=function(t){n.onPointerMove&&(!t||t.move)&&eventjs.remove(n.doc,i+"move",n.onPointerMove);n.onPointerUp&&(!t||t.up)&&eventjs.remove(n.doc,i+"up",n.onPointerUp);r=n.fingers;n.fingers=0},t.resume=function(t){n.onPointerMove&&(!t||t.move)&&eventjs.add(n.doc,i+"move",n.onPointerMove);n.onPointerUp&&(!t||t.up)&&eventjs.add(n.doc,i+"up",n.onPointerUp);n.fingers=r},t.reset=function(){n.tracker={};n.fingers=0},t},i=eventjs.supports,eventjs.isMouse=!!i.mouse,eventjs.isMSPointer=!!i.touch,eventjs.isTouch=!!i.msPointer,n.pointerStart=function(t,i,r){var e=(t.type||"mousedown").toUpperCase(),c,o,l,s,h,f,u,a;for(0===e.indexOf("MOUSE")?(eventjs.isMouse=!0,eventjs.isTouch=!1,eventjs.isMSPointer=!1):0===e.indexOf("TOUCH")?(eventjs.isMouse=!1,eventjs.isTouch=!0,eventjs.isMSPointer=!1):0===e.indexOf("MSPOINTER")&&(eventjs.isMouse=!1,eventjs.isTouch=!1,eventjs.isMSPointer=!0),c=function(n,t){var u=r.bbox,i=o[t]={},f;switch(r.position){case"absolute":i.offsetX=0;i.offsetY=0;break;case"differenceFromLast":i.offsetX=n.pageX;i.offsetY=n.pageY;break;case"difference":i.offsetX=n.pageX;i.offsetY=n.pageY;break;case"move":i.offsetX=n.pageX-u.x1;i.offsetY=n.pageY-u.y1;break;default:i.offsetX=u.x1-u.scrollLeft;i.offsetY=u.y1-u.scrollTop}u=n.pageX-i.offsetX;f=n.pageY-i.offsetY;i.rotation=0;i.scale=1;i.startTime=i.moveTime=(new Date).getTime();i.move={x:u,y:f};i.start={x:u,y:f};r.fingers++},r.event=t,i.defaultListener&&(r.listener=i.defaultListener,delete i.defaultListener),e=!r.fingers,o=r.tracker,t=t.changedTouches||n.getCoords(t),l=t.length,s=0;s<l;s++){if(h=t[s],f=h.identifier||Infinity,r.fingers){if(r.fingers>=r.maxFingers){u=[];for(f in r.tracker)u.push(f);return i.identifier=u.join(","),e}a=0;for(u in o){if(o[u].up){delete o[u];c(h,f);r.cancel=!0;break}a++}if(o[f])continue}else o=r.tracker={},i.bbox=r.bbox=n.getBoundingBox(r.target),r.fingers=0,r.cancel=!1;c(h,f)}u=[];for(f in r.tracker)u.push(f);return i.identifier=u.join(","),e},n.pointerEnd=function(n,t,i,r){var u=n.touches||[],o=u.length,e,f;for(n={},e=0;e<o;e++)f=u[e].identifier,n[f||Infinity]=!0;for(f in i.tracker)u=i.tracker[f],n[f]||u.up||(r&&r({pageX:u.pageX,pageY:u.pageY,changedTouches:[{pageX:u.pageX,pageY:u.pageY,identifier:"Infinity"===f?Infinity:f}]},"up"),u.up=!0,i.fingers--);if(0!==i.fingers)return!1;r=[];i.gestureFingers=0;for(f in i.tracker)i.gestureFingers++,r.push(f);return t.identifier=r.join(","),!0},n.getCoords=function(t){return n.getCoords="undefined"!=typeof t.pageX?function(n){return Array({type:"mouse",x:n.pageX,y:n.pageY,pageX:n.pageX,pageY:n.pageY,identifier:n.pointerId||Infinity})}:function(n){var t=document.documentElement;return n=n||window.event,Array({type:"mouse",x:n.clientX+t.scrollLeft,y:n.clientY+t.scrollTop,pageX:n.clientX+t.scrollLeft,pageY:n.clientY+t.scrollTop,identifier:Infinity})},n.getCoords(t)},n.getCoord=function(t){if("ontouchstart"in window){var i=0,r=0;n.getCoord=function(n){return(n=n.changedTouches)&&n.length?{x:i=n[0].pageX,y:r=n[0].pageY}:{x:i,y:r}}}else n.getCoord="undefined"!=typeof t.pageX&&"undefined"!=typeof t.pageY?function(n){return{x:n.pageX,y:n.pageY}}:function(n){var t=document.documentElement;return n=n||window.event,{x:n.clientX+t.scrollLeft,y:n.clientY+t.scrollTop}};return n.getCoord(t)},t=function(n,t){var i=parseFloat(n.getPropertyValue(t),10);return isFinite(i)?i:0},n.getBoundingBox=function(n){var i,r;if((n===window||n===document)&&(n=document.body),i={},r=n.getBoundingClientRect(),i.width=r.width,i.height=r.height,i.x1=r.left,i.y1=r.top,i.scaleX=r.width/n.offsetWidth||1,i.scaleY=r.height/n.offsetHeight||1,i.scrollLeft=0,i.scrollTop=0,r=window.getComputedStyle(n),"border-box"===r.getPropertyValue("box-sizing")==!1){var u=t(r,"border-left-width"),e=t(r,"border-right-width"),o=t(r,"border-bottom-width"),f=t(r,"border-top-width");i.border=[u,e,f,o];i.x1+=u;i.y1+=f;i.width-=e+u;i.height-=o+f}for(i.x2=i.x1+i.width,i.y2=i.y1+i.height,r=r.getPropertyValue("position"),n="fixed"===r?n:n.parentNode;null!==n&&n!==document.body&&void 0!==n.scrollTop;){if(r=window.getComputedStyle(n),r=r.getPropertyValue("position"),"absolute"!==r)if("fixed"===r){i.scrollTop-=n.parentNode.scrollTop;i.scrollLeft-=n.parentNode.scrollLeft;break}else i.scrollLeft+=n.scrollLeft,i.scrollTop+=n.scrollTop;n=n.parentNode}return i.scrollBodyLeft=void 0!==window.pageXOffset?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft,i.scrollBodyTop=void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop,i.scrollLeft-=i.scrollBodyLeft,i.scrollTop-=i.scrollBodyTop,i},function(){var t=navigator.userAgent.toLowerCase(),i=-1!==t.indexOf("macintosh"),r;r=i&&-1!==t.indexOf("khtml")?{91:!0,93:!0}:i&&-1!==t.indexOf("firefox")?{224:!0}:{17:!0};(n.metaTrackerReset=function(){eventjs.fnKey=n.fnKey=!1;eventjs.metaKey=n.metaKey=!1;eventjs.escKey=n.escKey=!1;eventjs.ctrlKey=n.ctrlKey=!1;eventjs.shiftKey=n.shiftKey=!1;eventjs.altKey=n.altKey=!1})();n.metaTracker=function(t){var i="keydown"===t.type;27===t.keyCode&&(eventjs.escKey=n.escKey=i);r[t.keyCode]&&(eventjs.metaKey=n.metaKey=i);eventjs.ctrlKey=n.ctrlKey=t.ctrlKey;eventjs.shiftKey=n.shiftKey=t.shiftKey;eventjs.altKey=n.altKey=t.altKey}}(),n}(eventjs.proxy);"undefined"==typeof eventjs&&(eventjs={});eventjs.MutationObserver=function(){var n=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver,t=!n&&function(){var n=document.createElement("p"),t=!1,i=function(){t=!0};if(n.addEventListener)n.addEventListener("DOMAttrModified",i,!1);else if(n.attachEvent)n.attachEvent("onDOMAttrModified",i);else return!1;return n.setAttribute("id","target"),t}();return function(i,r){n?new n(function(n){n.forEach(function(n){r.call(n.target,n.attributeName)})}).observe(i,{subtree:!1,attributes:!0}):t?eventjs.add(i,"DOMAttrModified",function(n){r.call(i,n.attrName)}):"onpropertychange"in document.body&&eventjs.add(i,"propertychange",function(){r.call(i,window.event.propertyName)})}}();"undefined"==typeof eventjs&&(eventjs={});"undefined"==typeof eventjs.proxy&&(eventjs.proxy={});eventjs.proxy=function(n){return n.click=function(t){t.gesture=t.gesture||"click";t.maxFingers=t.maxFingers||t.fingers||1;t.onPointerDown=function(r){n.pointerStart(r,i,t)&&eventjs.add(t.target,"mouseup",t.onPointerUp)};t.onPointerUp=function(r){var s;if(n.pointerEnd(r,i,t)){eventjs.remove(t.target,"mouseup",t.onPointerUp);var f=(r.changedTouches||n.getCoords(r))[0],u=t.bbox,e=n.getBoundingBox(t.target),o=f.pageY-e.scrollBodyTop,f=f.pageX-e.scrollBodyLeft;if(f>u.x1&&o>u.y1&&f<u.x2&&o<u.y2&&u.scrollTop===e.scrollTop){for(s in t.tracker)break;u=t.tracker[s];i.x=u.start.x;i.y=u.start.y;t.listener(r,i)}}};var i=n.pointerSetup(t);return i.state="click",eventjs.add(t.target,"mousedown",t.onPointerDown),i},eventjs.Gesture=eventjs.Gesture||{},eventjs.Gesture._gestureHandlers=eventjs.Gesture._gestureHandlers||{},eventjs.Gesture._gestureHandlers.click=n.click,n}(eventjs.proxy);"undefined"==typeof eventjs&&(eventjs={});"undefined"==typeof eventjs.proxy&&(eventjs.proxy={});eventjs.proxy=function(n){return n.dbltap=n.dblclick=function(t){var r,u,e,o,f,i;return t.gesture=t.gesture||"dbltap",t.maxFingers=t.maxFingers||t.fingers||1,t.onPointerDown=function(s){var h=s.changedTouches||n.getCoords(s);r&&!u?(f=h[0],u=(new Date).getTime()-r):(o=h[0],r=(new Date).getTime(),u=0,clearTimeout(e),e=setTimeout(function(){r=0},700));n.pointerStart(s,i,t)&&(eventjs.add(t.target,"mousemove",t.onPointerMove).listener(s),eventjs.add(t.target,"mouseup",t.onPointerUp))},t.onPointerMove=function(i){r&&!u&&(f=(i.changedTouches||n.getCoords(i))[0]);i=t.bbox;var s=f.pageX-i.x1,h=f.pageY-i.y1;0<s&&s<i.width&&0<h&&h<i.height&&25>=Math.abs(f.pageX-o.pageX)&&25>=Math.abs(f.pageY-o.pageY)||(eventjs.remove(t.target,"mousemove",t.onPointerMove),clearTimeout(e),r=u=0)},t.onPointerUp=function(f){if(n.pointerEnd(f,i,t)&&(eventjs.remove(t.target,"mousemove",t.onPointerMove),eventjs.remove(t.target,"mouseup",t.onPointerUp)),r&&u){if(700>=u){i.state=t.gesture;for(var o in t.tracker)break;o=t.tracker[o];i.x=o.start.x;i.y=o.start.y;t.listener(f,i)}clearTimeout(e);r=u=0}},i=n.pointerSetup(t),i.state="dblclick",eventjs.add(t.target,"mousedown",t.onPointerDown),i},eventjs.Gesture=eventjs.Gesture||{},eventjs.Gesture._gestureHandlers=eventjs.Gesture._gestureHandlers||{},eventjs.Gesture._gestureHandlers.dbltap=n.dbltap,eventjs.Gesture._gestureHandlers.dblclick=n.dblclick,n}(eventjs.proxy);"undefined"==typeof eventjs&&(eventjs={});"undefined"==typeof eventjs.proxy&&(eventjs.proxy={});eventjs.proxy=function(n){return n.dragElement=function(t,i){n.drag({event:i,target:t,position:"move",listener:function(n,i){t.style.left=i.x+"px";t.style.top=i.y+"px";eventjs.prevent(n)}})},n.drag=function(t){t.gesture="drag";t.onPointerDown=function(r){n.pointerStart(r,i,t)&&!t.monitor&&(eventjs.add(t.doc,"mousemove",t.onPointerMove),eventjs.add(t.doc,"mouseup",t.onPointerUp));t.onPointerMove(r,"down")};t.onPointerMove=function(r,u){if(!t.tracker)return t.onPointerDown(r);for(var s=r.changedTouches||n.getCoords(r),c=s.length,e=0;e<c;e++){var o=s[e],h=o.identifier||Infinity,f=t.tracker[h];f&&(f.pageX=o.pageX,f.pageY=o.pageY,i.state=u||"move",i.identifier=h,i.start=f.start,i.fingers=t.fingers,"differenceFromLast"===t.position?(i.x=f.pageX-f.offsetX,i.y=f.pageY-f.offsetY,f.offsetX=f.pageX,f.offsetY=f.pageY):(i.x=f.pageX-f.offsetX,i.y=f.pageY-f.offsetY),t.listener(r,i))}};t.onPointerUp=function(r){n.pointerEnd(r,i,t,t.onPointerMove)&&!t.monitor&&(eventjs.remove(t.doc,"mousemove",t.onPointerMove),eventjs.remove(t.doc,"mouseup",t.onPointerUp))};var i=n.pointerSetup(t);if(t.event)t.onPointerDown(t.event);else eventjs.add(t.target,"mousedown",t.onPointerDown),t.monitor&&(eventjs.add(t.doc,"mousemove",t.onPointerMove),eventjs.add(t.doc,"mouseup",t.onPointerUp));return i},eventjs.Gesture=eventjs.Gesture||{},eventjs.Gesture._gestureHandlers=eventjs.Gesture._gestureHandlers||{},eventjs.Gesture._gestureHandlers.drag=n.drag,n}(eventjs.proxy);"undefined"==typeof eventjs&&(eventjs={});"undefined"==typeof eventjs.proxy&&(eventjs.proxy={});eventjs.proxy=function(n){var t=Math.PI/180,i=function(n,t){var u=0,f=0,r=0,e,i;for(e in t)i=t[e],i.up||(u+=i.move.x,f+=i.move.y,r++);return n.x=u/r,n.y=f/r,n};return n.gesture=function(r){r.gesture=r.gesture||"gesture";r.minFingers=r.minFingers||r.fingers||2;r.onPointerDown=function(t){var f=r.fingers,e;if(n.pointerStart(t,u,r)&&(eventjs.add(r.doc,"mousemove",r.onPointerMove),eventjs.add(r.doc,"mouseup",r.onPointerUp)),r.fingers===r.minFingers&&f!==r.fingers){u.fingers=r.minFingers;u.scale=1;u.rotation=0;u.state="start";f="";for(e in r.tracker)f+=e;u.identifier=parseInt(f);i(u,r.tracker);r.listener(t,u)}};r.onPointerMove=function(f){for(var s,h,c=r.bbox,a=r.tracker,l=f.changedTouches||n.getCoords(f),v=l.length,o=0;o<v;o++){var e=l[o],y=e.identifier||Infinity,s=a[y];s&&(s.move.x=e.pageX-c.x1,s.move.y=e.pageY-c.y1)}if(!(r.fingers<r.minFingers)){l=[];v=c=0;i(u,a);for(y in a)(e=a[y],e.up)||(o=e.start,o.distance||(s=o.x-u.x,h=o.y-u.y,o.distance=Math.sqrt(s*s+h*h),o.angle=Math.atan2(s,h)/t),s=e.move.x-u.x,h=e.move.y-u.y,c+=Math.sqrt(s*s+h*h)/o.distance,o=(o.angle-Math.atan2(s,h)/t+360)%360-180,e.DEG2=e.DEG1,e.DEG1=0<o?o:-o,"undefined"!=typeof e.DEG2&&(e.rotation=0<o?e.rotation+(e.DEG1-e.DEG2):e.rotation-(e.DEG1-e.DEG2),v+=e.rotation),l.push(e.move));u.touches=l;u.fingers=r.fingers;u.scale=c/r.fingers;u.rotation=v/r.fingers;u.state="change";r.listener(f,u)}};r.onPointerUp=function(t){var i=r.fingers;n.pointerEnd(t,u,r)&&(eventjs.remove(r.doc,"mousemove",r.onPointerMove),eventjs.remove(r.doc,"mouseup",r.onPointerUp));i===r.minFingers&&r.fingers<r.minFingers&&(u.fingers=r.fingers,u.state="end",r.listener(t,u))};var u=n.pointerSetup(r);return eventjs.add(r.target,"mousedown",r.onPointerDown),u},eventjs.Gesture=eventjs.Gesture||{},eventjs.Gesture._gestureHandlers=eventjs.Gesture._gestureHandlers||{},eventjs.Gesture._gestureHandlers.gesture=n.gesture,n}(eventjs.proxy);"undefined"==typeof eventjs&&(eventjs={});"undefined"==typeof eventjs.proxy&&(eventjs.proxy={});eventjs.proxy=function(n){return n.pointerdown=n.pointermove=n.pointerup=function(t){var r,i;return t.gesture=t.gesture||"pointer",t.target.isPointerEmitter?void 0:(r=!0,t.onPointerDown=function(n){r=!1;i.gesture="pointerdown";t.listener(n,i)},t.onPointerMove=function(n){i.gesture="pointermove";t.listener(n,i,r)},t.onPointerUp=function(n){r=!0;i.gesture="pointerup";t.listener(n,i,!0)},i=n.pointerSetup(t),eventjs.add(t.target,"mousedown",t.onPointerDown),eventjs.add(t.target,"mousemove",t.onPointerMove),eventjs.add(t.doc,"mouseup",t.onPointerUp),t.target.isPointerEmitter=!0,i)},eventjs.Gesture=eventjs.Gesture||{},eventjs.Gesture._gestureHandlers=eventjs.Gesture._gestureHandlers||{},eventjs.Gesture._gestureHandlers.pointerdown=n.pointerdown,eventjs.Gesture._gestureHandlers.pointermove=n.pointermove,eventjs.Gesture._gestureHandlers.pointerup=n.pointerup,n}(eventjs.proxy);"undefined"==typeof eventjs&&(eventjs={});"undefined"==typeof eventjs.proxy&&(eventjs.proxy={});eventjs.proxy=function(n){return n.shake=function(n){var i={gesture:"devicemotion",acceleration:{},accelerationIncludingGravity:{},target:n.target,listener:n.listener,remove:function(){window.removeEventListener("devicemotion",u,!1)}},r=(new Date).getTime(),t={x:0,y:0,z:0},f={x:{count:0,value:0},y:{count:0,value:0},z:{count:0,value:0}},u=function(u){var o=u.accelerationIncludingGravity,h;if(t.x=.8*t.x+(1-.8)*o.x,t.y=.8*t.y+(1-.8)*o.y,t.z=.8*t.z+(1-.8)*o.z,i.accelerationIncludingGravity=t,i.acceleration.x=o.x-t.x,i.acceleration.y=o.y-t.y,i.acceleration.z=o.z-t.z,"devicemotion"===n.gesture)n.listener(u,i);else for(o=(new Date).getTime(),h=0;3>h;h++){var e="xyz"[h],s=i.acceleration[e],e=f[e],c=Math.abs(s);!(1e3>o-r)&&4<c&&(s=o*s/c,c=Math.abs(s+e.value),e.value&&200>c?(e.value=s,e.count++,3===e.count&&(n.listener(u,i),r=o,e.value=0,e.count=0)):(e.value=s,e.count=1))}};if(window.addEventListener)return window.addEventListener("devicemotion",u,!1),i},eventjs.Gesture=eventjs.Gesture||{},eventjs.Gesture._gestureHandlers=eventjs.Gesture._gestureHandlers||{},eventjs.Gesture._gestureHandlers.shake=n.shake,n}(eventjs.proxy);"undefined"==typeof eventjs&&(eventjs={});"undefined"==typeof eventjs.proxy&&(eventjs.proxy={});eventjs.proxy=function(n){var t=Math.PI/180;return n.swipe=function(i){i.snap=i.snap||90;i.threshold=i.threshold||1;i.gesture=i.gesture||"swipe";i.onPointerDown=function(t){n.pointerStart(t,r,i)&&(eventjs.add(i.doc,"mousemove",i.onPointerMove).listener(t),eventjs.add(i.doc,"mouseup",i.onPointerUp))};i.onPointerMove=function(t){var e,u,f,r;for(t=t.changedTouches||n.getCoords(t),e=t.length,u=0;u<e;u++)f=t[u],r=i.tracker[f.identifier||Infinity],r&&(r.move.x=f.pageX,r.move.y=f.pageY,r.moveTime=(new Date).getTime())};i.onPointerUp=function(u){var f;if(n.pointerEnd(u,r,i)){eventjs.remove(i.doc,"mousemove",i.onPointerMove);eventjs.remove(i.doc,"mouseup",i.onPointerUp);var h,c,o,e,l={x:0,y:0},v=0,y=0,a=0,s;for(s in i.tracker){f=i.tracker[s];e=f.move.x-f.start.x;var p=f.move.y-f.start.y,v=v+f.move.x,y=y+f.move.y;if(l.x+=f.start.x,l.y+=f.start.y,a++,c=Math.sqrt(e*e+p*p),f=f.moveTime-f.startTime,e=Math.atan2(e,p)/t+180,c=f?c/f:0,"undefined"==typeof o)o=e,h=c;else if(20>=Math.abs(e-o))o=(o+e)/2,h=(h+c)/2;else return}s=i.gestureFingers;i.minFingers<=s&&i.maxFingers>=s&&h>i.threshold&&(l.x/=a,l.y/=a,r.start=l,r.x=v/a,r.y=y/a,r.angle=-(((o/i.snap+.5>>0)*i.snap||360)-360),r.velocity=h,r.fingers=s,r.state="swipe",i.listener(u,r))}};var r=n.pointerSetup(i);return eventjs.add(i.target,"mousedown",i.onPointerDown),r},eventjs.Gesture=eventjs.Gesture||{},eventjs.Gesture._gestureHandlers=eventjs.Gesture._gestureHandlers||{},eventjs.Gesture._gestureHandlers.swipe=n.swipe,n}(eventjs.proxy);"undefined"==typeof eventjs&&(eventjs={});"undefined"==typeof eventjs.proxy&&(eventjs.proxy={});eventjs.proxy=function(n){return n.longpress=function(t){return t.gesture="longpress",n.tap(t)},n.tap=function(t){var r,u,i;return t.delay=t.delay||500,t.timeout=t.timeout||250,t.driftDeviance=t.driftDeviance||10,t.gesture=t.gesture||"tap",t.onPointerDown=function(f){n.pointerStart(f,i,t)&&(r=(new Date).getTime(),eventjs.add(t.doc,"mousemove",t.onPointerMove).listener(f),eventjs.add(t.doc,"mouseup",t.onPointerUp),"longpress"===t.gesture&&(u=setTimeout(function(){var n,u,r;if(!(f.cancelBubble&&1<++f.cancelBubbleCount)){n=0;for(u in t.tracker){if(r=t.tracker[u],!0===r.end||t.cancel)return;n++}t.minFingers<=n&&t.maxFingers>=n&&(i.state="start",i.fingers=n,i.x=r.start.x,i.y=r.start.y,t.listener(f,i))}},t.delay)))},t.onPointerMove=function(i){var f=t.bbox,s,e,u,r;for(i=i.changedTouches||n.getCoords(i),s=i.length,e=0;e<s;e++)if(u=i[e],r=t.tracker[u.identifier||Infinity],r){var o=u.pageX-f.x1,u=u.pageY-f.y1,h=o-r.start.x,r=u-r.start.y,r=Math.sqrt(h*h+r*r);if(!(0<o&&o<f.width&&0<u&&u<f.height&&r<=t.driftDeviance)){eventjs.remove(t.doc,"mousemove",t.onPointerMove);t.cancel=!0;break}}},t.onPointerUp=function(f){if(n.pointerEnd(f,i,t)&&(clearTimeout(u),eventjs.remove(t.doc,"mousemove",t.onPointerMove),eventjs.remove(t.doc,"mouseup",t.onPointerUp),!(f.cancelBubble&&1<++f.cancelBubbleCount)))if("longpress"===t.gesture)"start"===i.state&&(i.state="end",t.listener(f,i));else if(!(t.cancel||(new Date).getTime()-r>t.timeout)){var e=t.gestureFingers;t.minFingers<=e&&t.maxFingers>=e&&(i.state="tap",i.fingers=t.gestureFingers,t.listener(f,i))}},i=n.pointerSetup(t),eventjs.add(t.target,"mousedown",t.onPointerDown),i},eventjs.Gesture=eventjs.Gesture||{},eventjs.Gesture._gestureHandlers=eventjs.Gesture._gestureHandlers||{},eventjs.Gesture._gestureHandlers.tap=n.tap,eventjs.Gesture._gestureHandlers.longpress=n.longpress,n}(eventjs.proxy);"undefined"==typeof eventjs&&(eventjs={});"undefined"==typeof eventjs.proxy&&(eventjs.proxy={});eventjs.proxy=function(n){return n.wheelPreventElasticBounce=function(n){n&&("string"==typeof n&&(n=document.querySelector(n)),eventjs.add(n,"wheel",function(n,t){t.preventElasticBounce();eventjs.stop(n)}))},n.wheel=function(n){var u,o=n.timeout||150,f=0,t={gesture:"wheel",state:"start",wheelDelta:0,target:n.target,listener:n.listener,preventElasticBounce:function(n){var t=this.target,i=t.scrollTop;i+t.offsetHeight===t.scrollHeight&&0>=this.wheelDelta?eventjs.cancel(n):0===i&&0<=this.wheelDelta&&eventjs.cancel(n);eventjs.stop(n)},add:function(){n.target[e](r,i,!1)},remove:function(){n.target[s](r,i,!1)}},i=function(i){i=i||window.event;t.state=f++?"change":"start";t.wheelDelta=i.detail?-20*i.detail:i.wheelDelta;n.listener(i,t);clearTimeout(u);u=setTimeout(function(){f=0;t.state="end";t.wheelDelta=0;n.listener(i,t)},o)},e=document.addEventListener?"addEventListener":"attachEvent",s=document.removeEventListener?"removeEventListener":"detachEvent",r=eventjs.getEventSupport("mousewheel")?"mousewheel":"DOMMouseScroll";return n.target[e](r,i,!1),t},eventjs.Gesture=eventjs.Gesture||{},eventjs.Gesture._gestureHandlers=eventjs.Gesture._gestureHandlers||{},eventjs.Gesture._gestureHandlers.wheel=n.wheel,n}(eventjs.proxy);"undefined"==typeof Event&&(Event={});"undefined"==typeof Event.proxy&&(Event.proxy={});Event.proxy=function(n){return n.orientation=function(n){var t={gesture:"orientationchange",previous:null,current:window.orientation,target:n.target,listener:n.listener,remove:function(){window.removeEventListener("orientationchange",i,!1)}},i=function(i){t.previous=t.current;t.current=window.orientation;null!==t.previous&&t.previous!=t.current&&n.listener(i,t)};return window.DeviceOrientationEvent&&window.addEventListener("orientationchange",i,!1),t},Event.Gesture=Event.Gesture||{},Event.Gesture._gestureHandlers=Event.Gesture._gestureHandlers||{},Event.Gesture._gestureHandlers.orientation=n.orientation,n}(Event.proxy),function(){function n(n,t){this.__eventListeners[n]&&(t?fabric.util.removeFromArray(this.__eventListeners[n],t):this.__eventListeners[n].length=0)}function t(n,t){if(this.__eventListeners||(this.__eventListeners={}),1===arguments.length)for(var i in n)this.on(i,n[i]);else this.__eventListeners[n]||(this.__eventListeners[n]=[]),this.__eventListeners[n].push(t);return this}function i(t,i){if(this.__eventListeners){if(0===arguments.length)this.__eventListeners={};else if(1===arguments.length&&"object"==typeof arguments[0])for(var r in t)n.call(this,r,t[r]);else n.call(this,t,i);return this}}function r(n,t){var i,r,u;if(this.__eventListeners&&(i=this.__eventListeners[n],i)){for(r=0,u=i.length;r<u;r++)i[r].call(this,t||{});return this}}fabric.Observable={observe:t,stopObserving:i,fire:r,on:t,off:i,trigger:r}}();fabric.Collection={add:function(){this._objects.push.apply(this._objects,arguments);for(var n=0,t=arguments.length;n<t;n++)this._onObjectAdded(arguments[n]);return this.renderOnAddRemove&&this.renderAll(),this},insertAt:function(n,t,i){var r=this.getObjects();return i?r[t]=n:r.splice(t,0,n),this._onObjectAdded(n),this.renderOnAddRemove&&this.renderAll(),this},remove:function(){for(var i=this.getObjects(),t,n=0,r=arguments.length;n<r;n++)t=i.indexOf(arguments[n]),-1!==t&&(i.splice(t,1),this._onObjectRemoved(arguments[n]));return this.renderOnAddRemove&&this.renderAll(),this},forEachObject:function(n,t){for(var i=this.getObjects(),r=i.length;r--;)n.call(t,i[r],r,i);return this},getObjects:function(n){return"undefined"==typeof n?this._objects:this._objects.filter(function(t){return t.type===n})},item:function(n){return this.getObjects()[n]},isEmpty:function(){return 0===this.getObjects().length},size:function(){return this.getObjects().length},contains:function(n){return-1<this.getObjects().indexOf(n)},complexity:function(){return this.getObjects().reduce(function(n,t){return n+(t.complexity?t.complexity():0)},0)}},function(n){var i=Math.sqrt,r=Math.atan2,t=Math.PI/180;fabric.util={removeFromArray:function(n,t){var i=n.indexOf(t);return-1!==i&&n.splice(i,1),n},getRandomInt:function(n,t){return Math.floor(Math.random()*(t-n+1))+n},degreesToRadians:function(n){return n*t},radiansToDegrees:function(n){return n/t},rotatePoint:function(n,t,i){n.subtractEquals(t);var r=Math.sin(i);return i=Math.cos(i),new fabric.Point(n.x*i-n.y*r,n.x*r+n.y*i).addEquals(t)},transformPoint:function(n,t,i){return i?new fabric.Point(t[0]*n.x+t[2]*n.y,t[1]*n.x+t[3]*n.y):new fabric.Point(t[0]*n.x+t[2]*n.y+t[4],t[1]*n.x+t[3]*n.y+t[5])},invertTransform:function(n){var t=1/(n[0]*n[3]-n[1]*n[2]),t=[t*n[3],-t*n[1],-t*n[2],t*n[0]];return n=fabric.util.transformPoint({x:n[4],y:n[5]},t,!0),t[4]=-n.x,t[5]=-n.y,t},toFixed:function(n,t){return parseFloat(Number(n).toFixed(t))},parseUnit:function(n,t){var r=/\D{0,2}$/.exec(n),i=parseFloat(n);t||(t=fabric.Text.DEFAULT_SVG_FONT_SIZE);switch(r[0]){case"mm":return i*fabric.DPI/25.4;case"cm":return i*fabric.DPI/2.54;case"in":return i*fabric.DPI;case"pt":return i*fabric.DPI/72;case"pc":return i*fabric.DPI/6;case"em":return i*t;default:return i}},falseFunction:function(){return!1},getKlass:function(n,t){return n=fabric.util.string.camelize(n.charAt(0).toUpperCase()+n.slice(1)),fabric.util.resolveNamespace(t)[n]},resolveNamespace:function(t){if(!t)return fabric;t=t.split(".");for(var u=t.length,i=n||fabric.window,r=0;r<u;++r)i=i[t[r]];return i},loadImage:function(n,t,i,r){if(n){var u=fabric.util.createImage();u.onload=function(){t&&t.call(i,u);u=u.onload=u.onerror=null};u.onerror=function(){fabric.log("Error loading "+u.src);t&&t.call(i,null,!0);u=u.onload=u.onerror=null};0!==n.indexOf("data")&&"undefined"!=typeof r&&(u.crossOrigin=r);u.src=n}else t&&t.call(i,n)},enlivenObjects:function(n,t,i,r){function f(){++o===e&&t&&t(u)}n=n||[];var u=[],o=0,e=n.length;e?n.forEach(function(n,t){if(n&&n.type){var e=fabric.util.getKlass(n.type,i);e.async?e.fromObject(n,function(i,e){e||(u[t]=i,r&&r(n,u[t]));f()}):(u[t]=e.fromObject(n),r&&r(n,u[t]),f())}else f()}):t&&t(u)},groupSVGElements:function(n,t,i){return n=new fabric.PathGroup(n,t),"undefined"!=typeof i&&n.setSourcePath(i),n},populateWithProperties:function(n,t,i){if(i&&"[object Array]"===Object.prototype.toString.call(i))for(var r=0,u=i.length;r<u;r++)i[r]in n&&(t[i[r]]=n[i[r]])},drawDashedLine:function(n,t,u,f,e,o){var s;f-=t;s=e-u;e=i(f*f+s*s);f=r(s,f);var s=o.length,c=0,h=!0;for(n.save(),n.translate(t,u),n.moveTo(0,0),n.rotate(f),t=0;e>t;)t+=o[c++%s],t>e&&(t=e),n[h?"lineTo":"moveTo"](t,0),h=!h;n.restore()},createCanvasElement:function(n){return n||(n=fabric.document.createElement("canvas")),n.getContext||"undefined"==typeof G_vmlCanvasManager||G_vmlCanvasManager.initElement(n),n},createImage:function(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")},createAccessors:function(n){var r;for(n=n.prototype,r=n.stateProperties.length;r--;){var i=n.stateProperties[r],t=i.charAt(0).toUpperCase()+i.slice(1),u="set"+t,t="get"+t;n[t]||(n[t]=new Function('return this.get("'+i+'")'));n[u]||(n[u]=new Function("value",'return this.set("'+i+'", value)'))}},clipContext:function(n,t){t.save();t.beginPath();n.clipTo(t);t.clip()},multiplyTransformMatrices:function(n,t){return[n[0]*t[0]+n[2]*t[1],n[1]*t[0]+n[3]*t[1],n[0]*t[2]+n[2]*t[3],n[1]*t[2]+n[3]*t[3],n[0]*t[4]+n[2]*t[5]+n[4],n[1]*t[4]+n[3]*t[5]+n[5]]},getFunctionBody:function(n){return(String(n).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]},isTransparent:function(n,t,i,r){0<r&&(t=t>r?t-r:0,i=i>r?i-r:0);var u=!0;for(n=n.getImageData(t,i,2*r||1,2*r||1),t=3,i=n.data.length;t<i&&(u=0>=n.data[t],!1!==u);t+=4);return u},parsePreserveAspectRatioAttribute:function(n){var i="meet",t;return(n=n.split(" "))&&n.length&&(i=n.pop(),"meet"!==i&&"slice"!==i?(t=i,i="meet"):n.length&&(t=n.pop())),n="none"!==t?t.slice(1,4):"none",t="none"!==t?t.slice(5,8):"none",{meetOrSlice:i,alignX:n,alignY:t}}}}("undefined"!=typeof exports?exports:this),function(){function u(n,i,u,e,s,h,c){var tt=r.call(arguments);if(t[tt])return t[tt];var d=Math.PI,b=c*d/180,g=Math.sin(b),b=Math.cos(b),it=0,rt=0;u=Math.abs(u);e=Math.abs(e);var v=-b*n*.5-g*i*.5,l=-b*i*.5+g*n*.5,p=u*u,k=e*e,y=l*l,a=v*v,w=p*k-p*y-k*a,nt=0;for(0>w?(p=Math.sqrt(1-w/(p*k)),u*=p,e*=p):nt=(s===h?-1:1)*Math.sqrt(w/(p*y+k*a)),y=nt*u*l/e,a=-nt*e*v/u,nt=b*y-g*a+.5*n,p=g*y+b*a+.5*i,k=f(1,0,(v-y)/u,(l-a)/e),l=f((v-y)/u,(l-a)/e,(-v-y)/u,(-l-a)/e),0===h&&0<l?l-=2*d:1===h&&0>l&&(l+=2*d),d=Math.ceil(Math.abs(l/d*2)),v=[],l/=d,y=8/3*Math.sin(l/4)*Math.sin(l/4)/Math.sin(l/2),a=k+l,w=0;w<d;w++)v[w]=o(k,a,b,g,u,e,nt,p,y,it,rt),it=v[w][4],rt=v[w][5],k=a,a+=l;return t[tt]=v}function o(t,i,u,f,e,o,s,h,c,l,a){var v=r.call(arguments);if(n[v])return n[v];var w=Math.cos(t),b=Math.sin(t),y=Math.cos(i),p=Math.sin(i),k=u*e*y-f*o*p+s,d=f*e*y+u*o*p+h;return n[v]=[l+c*(-u*e*b-f*o*w),a+c*(-f*e*b+u*o*w),k+c*(u*e*p+f*o*y),d+c*(f*e*p-u*o*y),k,d],n[v]}function f(n,t,i,r){return n=Math.atan2(t,n),i=Math.atan2(r,i),i>=n?i-n:2*Math.PI-(n-i)}function e(n,t,u,f,e,o,s,h){var g=r.call(arguments),d;if(i[g])return i[g];var p=Math.sqrt,b=Math.min,tt=Math.max,y=Math.abs,w=[],a=[[],[]],v,l,k,c,nt;for(l=6*n-12*u+6*e,v=-3*n+9*u-9*e+3*s,k=3*u-3*n,d=0;2>d;++d)0<d&&(l=6*t-12*f+6*o,v=-3*t+9*f-9*o+3*h,k=3*f-3*t),1e-12>y(v)?1e-12>y(l)||(c=-k/l,0<c&&1>c&&w.push(c)):(c=l*l-4*k*v,0>c||(nt=p(c),c=(-l+nt)/(2*v),0<c&&1>c&&w.push(c),c=(-l-nt)/(2*v),0<c&&1>c&&w.push(c)));for(y=p=w.length;p--;)c=w[p],l=1-c,v=l*l*l*n+3*l*l*c*u+3*l*c*c*e+c*c*c*s,a[0][p]=v,v=l*l*l*t+3*l*l*c*f+3*l*c*c*o+c*c*c*h,a[1][p]=v;return a[0][y]=n,a[1][y]=t,a[0][y+1]=s,a[1][y+1]=h,b=[{x:b.apply(null,a[0]),y:b.apply(null,a[1])},{x:tt.apply(null,a[0]),y:tt.apply(null,a[1])}],i[g]=b}var t={},n={},i={},r=Array.prototype.join;fabric.util.drawArc=function(n,t,i,r){var e=[[],[],[],[]],f,o;for(r=u(r[5]-t,r[6]-i,r[0],r[1],r[3],r[4],r[2]),f=0,o=r.length;f<o;f++)e[f][0]=r[f][0]+t,e[f][1]=r[f][1]+i,e[f][2]=r[f][2]+t,e[f][3]=r[f][3]+i,e[f][4]=r[f][4]+t,e[f][5]=r[f][5]+i,n.bezierCurveTo.apply(n,e[f])};fabric.util.getBoundsOfArc=function(n,t,i,r,f,o,s,h,c){var l=0,v=0,a=[];for(i=u(h-n,c-t,i,r,o,s,f),r=[[],[]],f=0,o=i.length;f<o;f++)l=e(l,v,i[f][0],i[f][1],i[f][2],i[f][3],i[f][4],i[f][5]),r[0].x=l[0].x+n,r[0].y=l[0].y+t,r[1].x=l[1].x+n,r[1].y=l[1].y+t,a.push(r[0]),a.push(r[1]),l=i[f][4],v=i[f][5];return a};fabric.util.getBoundsOfCurve=e}(),function(){function n(n,t,i){if(n&&0!==n.length){var r=n.length-1,u=t?n[r][t]:n[r];if(t)for(;r--;)i(n[r][t],u)&&(u=n[r][t]);else for(;r--;)i(n[r],u)&&(u=n[r]);return u}}var t=Array.prototype.slice;Array.prototype.indexOf||(Array.prototype.indexOf=function(n){var r,i,t;if(void 0===this||null===this)throw new TypeError;if((r=Object(this),i=r.length>>>0,0===i)||(t=0,0<arguments.length&&(t=Number(arguments[1]),t!==t?t=0:0!==t&&t!==Number.POSITIVE_INFINITY&&t!==Number.NEGATIVE_INFINITY&&(t=(0<t||-1)*Math.floor(Math.abs(t)))),t>=i))return-1;for(t=0<=t?t:Math.max(i-Math.abs(t),0);t<i;t++)if(t in r&&r[t]===n)return t;return-1});Array.prototype.forEach||(Array.prototype.forEach=function(n,t){for(var i=0,r=this.length>>>0;i<r;i++)i in this&&n.call(t,this[i],i,this)});Array.prototype.map||(Array.prototype.map=function(n,t){for(var r=[],i=0,u=this.length>>>0;i<u;i++)i in this&&(r[i]=n.call(t,this[i],i,this));return r});Array.prototype.every||(Array.prototype.every=function(n,t){for(var i=0,r=this.length>>>0;i<r;i++)if(i in this&&!n.call(t,this[i],i,this))return!1;return!0});Array.prototype.some||(Array.prototype.some=function(n,t){for(var i=0,r=this.length>>>0;i<r;i++)if(i in this&&n.call(t,this[i],i,this))return!0;return!1});Array.prototype.filter||(Array.prototype.filter=function(n,t){for(var u=[],r,i=0,f=this.length>>>0;i<f;i++)i in this&&(r=this[i],n.call(t,r,i,this)&&u.push(r));return u});Array.prototype.reduce||(Array.prototype.reduce=function(n){var r=this.length>>>0,t=0,i;if(1<arguments.length)i=arguments[1];else do{if(t in this){i=this[t++];break}if(++t>=r)throw new TypeError;}while(1);for(;t<r;t++)t in this&&(i=n.call(null,i,this[t],t,this));return i});fabric.util.array={invoke:function(n,i){for(var u=t.call(arguments,2),f=[],r=0,e=n.length;r<e;r++)f[r]=u.length?n[r][i].apply(n[r],u):n[r][i].call(n[r]);return f},min:function(t,i){return n(t,i,function(n,t){return n<t})},max:function(t,i){return n(t,i,function(n,t){return n>=t})}}}(),function(){function n(n,t){for(var i in t)n[i]=t[i];return n}fabric.util.object={extend:n,clone:function(t){return n({},t)}}}(),function(){String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")});fabric.util.string={camelize:function(n){return n.replace(/-+(.)?/g,function(n,t){return t?t.toUpperCase():""})},capitalize:function(n,t){return n.charAt(0).toUpperCase()+(t?n.slice(1):n.slice(1).toLowerCase())},escapeXml:function(n){return n.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&apos;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}}}(),function(){var t=Array.prototype.slice,i=Function.prototype.apply,n=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var f=this,e=t.call(arguments,1),u;return u=e.length?function(){return i.call(f,this instanceof n?this:r,e.concat(t.call(arguments)))}:function(){return i.call(f,this instanceof n?this:r,arguments)},n.prototype=this.prototype,u.prototype=new n,u})}(),function(){function n(){}function i(n){var i=this.constructor.superclass.prototype[n];return 1<arguments.length?i.apply(this,t.call(arguments,1)):i.call(this)}var t=Array.prototype.slice,r=function(){},u=function(){for(var n in{toString:1})if("toString"===n)return!1;return!0}(),f=function(n,t,i){for(var r in t)n.prototype[r]=r in n.prototype&&"function"==typeof n.prototype[r]&&-1<(t[r]+"").indexOf("callSuper")?function(n){return function(){var u=this.constructor.superclass,r;return this.constructor.superclass=i,r=t[n].apply(this,arguments),this.constructor.superclass=u,"initialize"!==n?r:void 0}}(r):t[r],u&&(t.toString!==Object.prototype.toString&&(n.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(n.prototype.valueOf=t.valueOf))};fabric.util.createClass=function(){function u(){this.initialize.apply(this,arguments)}var e=null,o=t.call(arguments,0),s,h;for("function"==typeof o[0]&&(e=o.shift()),u.superclass=e,u.subclasses=[],e&&(n.prototype=e.prototype,u.prototype=new n,e.subclasses.push(u)),s=0,h=o.length;s<h;s++)f(u,o[s],e);return u.prototype.initialize||(u.prototype.initialize=r),u.prototype.constructor=u,u.prototype.callSuper=i,u}}(),function(){function u(n){for(var i=Array.prototype.slice.call(arguments,1),r,u=i.length,t=0;t<u;t++)if(r=typeof n[i[t]],!/^(?:function|object|unknown)$/.test(r))return!1;return!0}function l(n,t){return function(i){t.call(h(n),i||fabric.window.event)}}function a(t,i){return function(r){if(n[t]&&n[t][i])for(var f=n[t][i],u=0,e=f.length;u<e;u++)f[u].call(this,r||fabric.window.event)}}function s(n,t,i){var r="touchend"===n.type?"changedTouches":"touches";return n[r]&&n[r][0]?n[r][0][t]-(n[r][0][t]-n[r][0][i])||n[i]:n[i]}var h,c,f=function(){var n=0;return function(t){return t.__uniqueID||(t.__uniqueID="uniqueID__"+n++)}}(),e,o;(function(){var n={};h=function(t){return n[t]};c=function(t,i){n[t]=i}})();var i=u(fabric.document.documentElement,"addEventListener","removeEventListener")&&u(fabric.window,"addEventListener","removeEventListener"),r=u(fabric.document.documentElement,"attachEvent","detachEvent")&&u(fabric.window,"attachEvent","detachEvent"),t={},n={};i?(i=function(n,t,i){n.addEventListener(t,i,!1)},r=function(n,t,i){n.removeEventListener(t,i,!1)}):r?(i=function(n,i,r){var u=f(n);c(u,n);t[u]||(t[u]={});t[u][i]||(t[u][i]=[]);r={handler:r,wrappedHandler:l(u,r)};t[u][i].push(r);n.attachEvent("on"+i,r.wrappedHandler)},r=function(n,i,r){var u=f(n),o,e,s;if(t[u]&&t[u][i])for(e=0,s=t[u][i].length;e<s;e++)(o=t[u][i][e])&&o.handler===r&&(n.detachEvent("on"+i,o.wrappedHandler),t[u][i][e]=null)}):(i=function(t,i,r){var u=f(t),e;n[u]||(n[u]={});n[u][i]||(n[u][i]=[],e=t["on"+i],e&&n[u][i].push(e),t["on"+i]=a(u,i));n[u][i].push(r)},r=function(t,i,r){if(t=f(t),n[t]&&n[t][i]){i=n[t][i];t=0;for(var u=i.length;t<u;t++)i[t]===r&&i.splice(t,1)}});fabric.util.addListener=i;fabric.util.removeListener=r;e=function(n){return"unknown"!=typeof n.clientX?n.clientX:0};o=function(n){return"unknown"!=typeof n.clientY?n.clientY:0};fabric.isTouchSupported&&(e=function(n){return s(n,"pageX","clientX")},o=function(n){return s(n,"pageY","clientY")});fabric.util.getPointer=function(n){n||(n=fabric.window.event);var t=fabric.util.getScrollLeftTop(n.target||("unknown"!=typeof n.srcElement?n.srcElement:null));return{x:e(n)+t.left,y:o(n)+t.top}};fabric.util.object.extend(fabric.util,fabric.Observable)}(),function(){var t=fabric.document.createElement("div"),r="string"==typeof t.style.filter,i=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,n=function(n){return n};"string"==typeof t.style.opacity?n=function(n,t){return n.style.opacity=t,n}:r&&(n=function(n,t){var r=n.style;return n.currentStyle&&!n.currentStyle.hasLayout&&(r.zoom=1),i.test(r.filter)?r.filter=r.filter.replace(i,.9999<=t?"":"alpha(opacity="+100*t+")"):r.filter+=" alpha(opacity="+100*t+")",n});fabric.util.setStyle=function(t,i){var u=t.style,r;if(!u)return t;if("string"==typeof i)return t.style.cssText+=";"+i,-1<i.indexOf("opacity")?n(t,i.match(/opacity:\s*(\d?\.?\d*)/)[1]):t;for(r in i)"opacity"===r?n(t,i[r]):u["float"===r||"cssFloat"===r?"undefined"==typeof u.styleFloat?"cssFloat":"styleFloat":r]=i[r];return t}}(),function(){function t(n,t){var r=fabric.document.createElement(n),i;for(i in t)"class"===i?r.className=t[i]:"for"===i?r.htmlFor=t[i]:r.setAttribute(i,t[i]);return r}function i(n){for(var t=0,i=0,r=fabric.document.documentElement,u=fabric.document.body||{scrollLeft:0,scrollTop:0};n&&n.parentNode&&(n=n.parentNode,n===fabric.document?(t=u.scrollLeft||r.scrollLeft||0,i=u.scrollTop||r.scrollTop||0):(t+=n.scrollLeft||0,i+=n.scrollTop||0),1!==n.nodeType||"fixed"!==fabric.util.getElementStyle(n,"position")););return{left:t,top:i}}var u=Array.prototype.slice,r,n;toArray=function(n){return u.call(n,0)};try{r=toArray(fabric.document.childNodes)instanceof Array}catch(f){}r||(toArray=function(n){for(var i=Array(n.length),t=n.length;t--;)i[t]=n[t];return i});n=fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle?function(n,t){var i=fabric.document.defaultView.getComputedStyle(n,null);if(i)return i[t]}:function(n,t){var i=n.style[t];return!i&&n.currentStyle&&(i=n.currentStyle[t]),i},function(){var n=fabric.document.documentElement.style,t="userSelect"in n?"userSelect":"MozUserSelect"in n?"MozUserSelect":"WebkitUserSelect"in n?"WebkitUserSelect":"KhtmlUserSelect"in n?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=function(n){return"undefined"!=typeof n.onselectstart&&(n.onselectstart=fabric.util.falseFunction),t?n.style[t]="none":"string"==typeof n.unselectable&&(n.unselectable="on"),n};fabric.util.makeElementSelectable=function(n){return"undefined"!=typeof n.onselectstart&&(n.onselectstart=null),t?n.style[t]="":"string"==typeof n.unselectable&&(n.unselectable=""),n}}(),function(){fabric.util.getScript=function(n,t){var u=fabric.document.getElementsByTagName("head")[0],i=fabric.document.createElement("script"),r=!0;i.onload=i.onreadystatechange=function(n){r&&("string"!=typeof this.readyState||"loaded"===this.readyState||"complete"===this.readyState)&&(r=!1,t(n||fabric.window.event),i=i.onload=i.onreadystatechange=null)};i.src=n;u.appendChild(i)}}();fabric.util.getById=function(n){return"string"==typeof n?fabric.document.getElementById(n):n};fabric.util.toArray=toArray;fabric.util.makeElement=t;fabric.util.addClass=function(n,t){n&&-1===(" "+n.className+" ").indexOf(" "+t+" ")&&(n.className+=(n.className?" ":"")+t)};fabric.util.wrapElement=function(n,i,r){return"string"==typeof i&&(i=t(i,r)),n.parentNode&&n.parentNode.replaceChild(i,n),i.appendChild(n),i};fabric.util.getScrollLeftTop=i;fabric.util.getElementOffset=function(t){var r,e;r=t&&t.ownerDocument;var f={left:0,top:0},u={left:0,top:0},o={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!r)return u;for(e in o)u[o[e]]+=parseInt(n(t,e),10)||0;return r=r.documentElement,"undefined"!=typeof t.getBoundingClientRect&&(f=t.getBoundingClientRect()),t=i(t),{left:f.left+t.left-(r.clientLeft||0)+u.left,top:f.top+t.top-(r.clientTop||0)+u.top}};fabric.util.getElementStyle=n}(),function(){function n(n,t){return n+(/\?/.test(n)?"&":"?")+t}function t(){}var i=function(){for(var n=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest}],t=n.length;t--;)try{if(n[t]())return n[t]}catch(i){}}();fabric.util.request=function(r,u){u||(u={});var e=u.method?u.method.toUpperCase():"GET",s=u.onComplete||function(){},f=i(),o;return f.onreadystatechange=function(){4===f.readyState&&(s(f),f.onreadystatechange=t)},"GET"===e&&(o=null,"string"==typeof u.parameters&&(r=n(r,u.parameters))),f.open(e,r,!0),"POST"!==e&&"PUT"!==e||f.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),f.send(o),f}}();fabric.log=function(){};fabric.warn=function(){};"undefined"!=typeof console&&["log","warn"].forEach(function(n){"undefined"!=typeof console[n]&&"function"==typeof console[n].apply&&(fabric[n]=function(){return console[n].apply(console,arguments)})}),function(){function n(){return t.apply(fabric.window,arguments)}var t=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(n){fabric.window.setTimeout(n,1e3/60)};fabric.util.animate=function(t){n(function(i){var s;t||(t={});var u=i||+new Date,f=t.duration||500,e=u+f,r,h=t.onChange||function(){},c=t.abort||function(){return!1},l=t.easing||function(n,t,i,r){return-i*Math.cos(n/r*(Math.PI/2))+i+t},o="startValue"in t?t.startValue:0;i="endValue"in t?t.endValue:100;s=t.byValue||i-o;t.onStart&&t.onStart(),function a(i){r=i||+new Date;i=r>e?f:r-u;c()?t.onComplete&&t.onComplete():(h(l(i,o,s,f)),r>e?t.onComplete&&t.onComplete():n(a))}(u)})};fabric.util.requestAnimFrame=n}(),function(){function n(n,t,i,r){return n<Math.abs(t)?(n=t,r=i/4):r=i/(2*Math.PI)*Math.asin(t/n),{a:n,c:t,p:i,s:r}}function i(n,t,i){return n.a*Math.pow(2,10*--t)*Math.sin(2*(t*i-n.s)*Math.PI/n.p)}function r(n,i,r,u){return r-t(u-n,0,r,u)+i}function t(n,t,i,r){return(n/=r)<1/2.75?7.5625*i*n*n+t:n<2/2.75?i*(7.5625*(n-=1.5/2.75)*n+.75)+t:n<2.5/2.75?i*(7.5625*(n-=2.25/2.75)*n+.9375)+t:i*(7.5625*(n-=2.625/2.75)*n+.984375)+t}fabric.util.ease={easeInQuad:function(n,t,i,r){return i*(n/=r)*n+t},easeOutQuad:function(n,t,i,r){return-i*(n/=r)*(n-2)+t},easeInOutQuad:function(n,t,i,r){return n/=r/2,1>n?i/2*n*n+t:-i/2*(--n*(n-2)-1)+t},easeInCubic:function(n,t,i,r){return i*(n/=r)*n*n+t},easeOutCubic:function(n,t,i,r){return i*((n=n/r-1)*n*n+1)+t},easeInOutCubic:function(n,t,i,r){return n/=r/2,1>n?i/2*n*n*n+t:i/2*((n-=2)*n*n+2)+t},easeInQuart:function(n,t,i,r){return i*(n/=r)*n*n*n+t},easeOutQuart:function(n,t,i,r){return-i*((n=n/r-1)*n*n*n-1)+t},easeInOutQuart:function(n,t,i,r){return n/=r/2,1>n?i/2*n*n*n*n+t:-i/2*((n-=2)*n*n*n-2)+t},easeInQuint:function(n,t,i,r){return i*(n/=r)*n*n*n*n+t},easeOutQuint:function(n,t,i,r){return i*((n=n/r-1)*n*n*n*n+1)+t},easeInOutQuint:function(n,t,i,r){return n/=r/2,1>n?i/2*n*n*n*n*n+t:i/2*((n-=2)*n*n*n*n+2)+t},easeInSine:function(n,t,i,r){return-i*Math.cos(n/r*(Math.PI/2))+i+t},easeOutSine:function(n,t,i,r){return i*Math.sin(n/r*(Math.PI/2))+t},easeInOutSine:function(n,t,i,r){return-i/2*(Math.cos(Math.PI*n/r)-1)+t},easeInExpo:function(n,t,i,r){return 0===n?t:i*Math.pow(2,10*(n/r-1))+t},easeOutExpo:function(n,t,i,r){return n===r?t+i:i*(-Math.pow(2,-10*n/r)+1)+t},easeInOutExpo:function(n,t,i,r){return 0===n?t:n===r?t+i:(n/=r/2,1>n?i/2*Math.pow(2,10*(n-1))+t:i/2*(-Math.pow(2,-10*--n)+2)+t)},easeInCirc:function(n,t,i,r){return-i*(Math.sqrt(1-(n/=r)*n)-1)+t},easeOutCirc:function(n,t,i,r){return i*Math.sqrt(1-(n=n/r-1)*n)+t},easeInOutCirc:function(n,t,i,r){return n/=r/2,1>n?-i/2*(Math.sqrt(1-n*n)-1)+t:i/2*(Math.sqrt(1-(n-=2)*n)+1)+t},easeInElastic:function(t,r,u,f){var e=0;return 0===t?r:(t/=f,1===t)?r+u:(e||(e=.3*f),u=n(u,u,e,1.70158),-i(u,t,f)+r)},easeOutElastic:function(t,i,r,u){var f=0;return 0===t?i:(t/=u,1===t)?i+r:(f||(f=.3*u),r=n(r,r,f,1.70158),r.a*Math.pow(2,-10*t)*Math.sin(2*(t*u-r.s)*Math.PI/r.p)+r.c+i)},easeInOutElastic:function(t,r,u,f){var e=0;return 0===t?r:(t/=f/2,2===t)?r+u:(e||(e=.3*f*1.5),u=n(u,u,e,1.70158),1>t?-.5*i(u,t,f)+r:u.a*Math.pow(2,-10*--t)*Math.sin(2*(t*f-u.s)*Math.PI/u.p)*.5+u.c+r)},easeInBack:function(n,t,i,r,u){return void 0===u&&(u=1.70158),i*(n/=r)*n*((u+1)*n-u)+t},easeOutBack:function(n,t,i,r,u){return void 0===u&&(u=1.70158),i*((n=n/r-1)*n*((u+1)*n+u)+1)+t},easeInOutBack:function(n,t,i,r,u){return void 0===u&&(u=1.70158),n/=r/2,1>n?i/2*n*n*(((u*=1.525)+1)*n-u)+t:i/2*((n-=2)*n*(((u*=1.525)+1)*n+u)+2)+t},easeInBounce:r,easeOutBounce:t,easeInOutBounce:function(n,i,u,f){return n<f/2?.5*r(2*n,0,u,f)+i:.5*t(2*n-f,0,u,f)+.5*u+i}}}(),function(n){function r(n){return n in l?l[n]:n}function u(n,r,u,f){var o="[object Array]"===Object.prototype.toString.call(r),e;return"fill"!==n&&"stroke"!==n||"none"!==r?"strokeDashArray"===n?r=r.replace(/,/g," ").split(/\s+/).map(function(n){return parseFloat(n)}):"transformMatrix"===n?r=u&&u.transformMatrix?tt(u.transformMatrix,t.parseTransformAttribute(r)):t.parseTransformAttribute(r):"visible"===n?(r="none"===r||"hidden"===r?!1:!0,u&&!1===u.visible&&(r=!1)):"originX"===n?r="start"===r?"left":"end"===r?"right":"center":e=o?r.map(i):i(r,f):r="",!o&&isNaN(e)?r:e}function y(n){var i,r;for(i in s)n[i]&&"undefined"!=typeof n[s[i]]&&0!==n[i].indexOf("url(")&&(r=new t.Color(n[i]),n[i]=r.setAlpha(nt(r.getAlpha()*n[s[i]],2)).toRgba());return n}function p(n,t){var i,f;n.replace(/;\s*$/,"").split(";").forEach(function(n){n=n.split(":");i=r(n[0].trim().toLowerCase());f=u(i,n[1].trim());t[i]=f})}function w(n,i){var c={},f,s;for(f in t.cssRules[i]){var l,r=n,e=f.split(" "),u=!0;if((l=h(r,e.pop()))&&e.length){for(var u=void 0,o=e,a=!0;r.parentNode&&1===r.parentNode.nodeType&&o.length;)a&&(u=o.pop()),r=r.parentNode,a=h(r,u);u=0===o.length}if(l&&u&&0===e.length)for(s in t.cssRules[i][f])c[s]=t.cssRules[i][f][s]}return c}function h(n,t){var i=n.nodeName,r=n.getAttribute("class"),u=n.getAttribute("id"),i=new RegExp("^"+i,"i");if(t=t.replace(i,""),u&&t.length&&(i=new RegExp("#"+u+"(?![a-zA-Z\\-]+)","i"),t=t.replace(i,"")),r&&t.length)for(r=r.split(" "),u=r.length;u--;)i=new RegExp("\\."+r[u]+"(?![a-zA-Z\\-]+)","i"),t=t.replace(i,"");return 0===t.length}function b(n){for(var i,l,r,u=n.getElementsByTagName("use"),h=0;u.length&&h<u.length;){var f=u[h],t=f.getAttribute("xlink:href").substr(1),s=f.getAttribute("x")||0,a=f.getAttribute("y")||0;n:{if(i=void 0,r=n,r.getElementById&&(i=r.getElementById(t)),i)t=i;else{for(r=r.getElementsByTagName("*"),t=0;t<r.length;t++)if(i=r[t],void 0===i.getAttribute("id")){t=i;break n}t=void 0}}var t=t.cloneNode(!0),s=(t.getAttribute("transform")||"")+" translate("+s+", "+a+")",a=u.length,e,c;if(o(t),/^svg$/i.test(t.nodeName)){for(l=t.ownerDocument.createElement("g"),r=0,e=t.attributes,c=e.length;r<c;r++)i=e.item(r),l.setAttribute(i.nodeName,i.nodeValue);for(;null!=t.firstChild;)l.appendChild(t.firstChild);t=l}for(r=0,e=f.attributes,c=e.length;r<c;r++)i=e.item(r),"x"!==i.nodeName&&"y"!==i.nodeName&&"xlink:href"!==i.nodeName&&("transform"===i.nodeName?s=i.nodeValue+" "+s:t.setAttribute(i.nodeName,i.nodeValue));t.setAttribute("transform",s);t.setAttribute("instantiated_by_use","1");t.removeAttribute("id");f.parentNode.replaceChild(t,f);u.length===a&&h++}}function o(n){var e=n.getAttribute("viewBox"),f=1,u=1,o,s,l,h=n.getAttribute("width"),c=n.getAttribute("height"),v=n.getAttribute("x")||0,y=n.getAttribute("y")||0,p=n.getAttribute("preserveAspectRatio")||"",w,r,b;if(o=!e||!rt.test(n.tagName)||!(e=e.match(a)),w=!h||!c||"100%"===h||"100%"===c,s=o&&w,r={},b="",r.width=0,r.height=0,r.toBeParsed=s)return r;if(o)return r.width=i(h),r.height=i(c),r;if(o=-parseFloat(e[1]),s=-parseFloat(e[2]),l=parseFloat(e[3]),e=parseFloat(e[4]),w?(r.width=l,r.height=e):(r.width=i(h),r.height=i(c),f=r.width/l,u=r.height/e),p=t.util.parsePreserveAspectRatioAttribute(p),"none"!==p.alignX&&(u=f=f>u?u:f),1===f&&1===u&&0===o&&0===s&&0===v&&0===y)return r;if((v||y)&&(b=" translate("+i(v)+" "+i(y)+") "),f=b+" matrix("+f+" 0 0 "+u+" "+o*f+" "+s*u+") ","svg"===n.tagName){for(u=n.ownerDocument.createElement("g");null!=n.firstChild;)u.appendChild(n.firstChild);n.appendChild(u)}else u=n,f=u.getAttribute("transform")+f;return u.setAttribute("transform",f),r}function k(n){var i=n.objects;return n=n.options,i=i.map(function(n){return t[d(n.type)].fromObject(n)}),{objects:i,options:n}}function c(n,t,i){t[i]&&t[i].toSVG&&n.push('\t<pattern x="0" y="0" id="',i,'Pattern" ','width="',t[i].source.width,'" height="',t[i].source.height,'" patternUnits="userSpaceOnUse">\n','\t\t<image x="0" y="0" ','width="',t[i].source.width,'" height="',t[i].source.height,'" xlink:href="',t[i].source.src,'"><\/image>\n\t<\/pattern>\n')}var t=n.fabric||(n.fabric={}),f=t.util.object.extend,d=t.util.string.capitalize,g=t.util.object.clone,nt=t.util.toFixed,i=t.util.parseUnit,tt=t.util.multiplyTransformMatrices,it=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/i,rt=/^(symbol|image|marker|pattern|view|svg)$/i,ut=/^(?:pattern|defs|symbol|metadata)$/i,ft=/^(symbol|g|a|svg)$/i,l={cx:"left",x:"left",r:"radius",cy:"top",y:"top",display:"visible",visibility:"visible",transform:"transformMatrix","fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","stroke-dasharray":"strokeDashArray","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration","text-anchor":"originX"},s={stroke:"strokeOpacity",fill:"fillOpacity"},a,e,v;t.cssRules={};t.gradientDefs={};t.parseTransformAttribute=function(){function u(n,t){var i=t[0];n[0]=Math.cos(i);n[1]=Math.sin(i);n[2]=-Math.sin(i);n[3]=Math.cos(i)}function f(n,t){var i=2===t.length?t[1]:t[0];n[0]=t[0];n[3]=i}function e(n,t){n[4]=t[0];2===t.length&&(n[5]=t[1])}var r=[1,0,0,1,0,0],n=t.reNum,i="(?:"+("(?:(matrix)\\s*\\(\\s*("+n+")(?:\\s+,?\\s*|,\\s*)("+n+")(?:\\s+,?\\s*|,\\s*)("+n+")(?:\\s+,?\\s*|,\\s*)("+n+")(?:\\s+,?\\s*|,\\s*)("+n+")(?:\\s+,?\\s*|,\\s*)("+n+")\\s*\\))")+"|"+("(?:(translate)\\s*\\(\\s*("+n+")(?:(?:\\s+,?\\s*|,\\s*)("+n+"))?\\s*\\))")+"|"+("(?:(scale)\\s*\\(\\s*("+n+")(?:(?:\\s+,?\\s*|,\\s*)("+n+"))?\\s*\\))")+"|"+("(?:(rotate)\\s*\\(\\s*("+n+")(?:(?:\\s+,?\\s*|,\\s*)("+n+")(?:\\s+,?\\s*|,\\s*)("+n+"))?\\s*\\))")+"|"+("(?:(skewX)\\s*\\(\\s*("+n+")\\s*\\))")+"|"+("(?:(skewY)\\s*\\(\\s*("+n+")\\s*\\))")+")",o=new RegExp("^\\s*(?:"+("(?:"+i+"(?:(?:\\s+,?\\s*|,\\s*)"+i+")*)")+"?)\\s*$"),s=new RegExp(i,"g");return function(n){var h=r.concat(),c=[];if(!n||n&&!o.test(n))return h;for(n.replace(s,function(n){var o=new RegExp(i).exec(n).filter(function(n){return""!==n&&null!=n});n=o[1];o=o.slice(2).map(parseFloat);switch(n){case"translate":e(h,o);break;case"rotate":o[0]=t.util.degreesToRadians(o[0]);u(h,o);break;case"scale":f(h,o);break;case"skewX":h[2]=Math.tan(t.util.degreesToRadians(o[0]));break;case"skewY":h[1]=Math.tan(t.util.degreesToRadians(o[0]));break;case"matrix":h=o}c.push(h.concat());h=r.concat()}),n=c[0];1<c.length;)c.shift(),n=t.util.multiplyTransformMatrices(n,c[0]);return n}}();a=new RegExp("^\\s*("+t.reNum+"+)\\s*,?\\s*("+t.reNum+"+)\\s*,?\\s*("+t.reNum+"+)\\s*,?\\s*("+t.reNum+"+)\\s*$");t.parseSVGDocument=function(){return function(n,i,r){if(n){b(n);var c=new Date,e=t.Object.__uid++,s=o(n),u=t.util.toArray(n.getElementsByTagName("*"));if(s.svgUid=e,0===u.length&&t.isLikelyNode){for(var u=n.selectNodes('//*[name(.)!="svg"]'),h=[],f=0,l=u.length;f<l;f++)h[f]=u[f];u=h}u=u.filter(function(n){o(n);var t;if(t=it.test(n.tagName)){n:{for(;n&&(n=n.parentNode);)if(ut.test(n.nodeName)&&!n.getAttribute("instantiated_by_use")){n=!0;break n}n=!1}t=!n}return t});!u||u&&!u.length?i&&i([],{}):(t.gradientDefs[e]=t.getGradientDefs(n),t.cssRules[e]=t.getCSSRules(n),t.parseElements(u,function(n){t.documentParsingTime=new Date-c;i&&i(n,s)},g(s),r))}}}();e={has:function(n,t){t(!1)},get:function(){},set:function(){}};v=new RegExp("(normal|italic)?\\s*(normal|small-caps)?\\s*(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\s*("+t.reNum+"(?:px|cm|mm|em|pt|pc|in)*)(?:\\/(normal|"+t.reNum+"))?\\s+(.*)");f(t,{parseFontDeclaration:function(n,t){var r=n.match(v);if(r){var e=r[1],u=r[3],o=r[4],f=r[5],r=r[6];e&&(t.fontStyle=e);u&&(t.fontWeight=isNaN(parseFloat(u))?u:parseFloat(u));o&&(t.fontSize=i(o));r&&(t.fontFamily=r);f&&(t.lineHeight="normal"===f?1:f)}},getGradientDefs:function(n){var t=n.getElementsByTagName("linearGradient"),r=n.getElementsByTagName("radialGradient"),u,i=0,f,e=[],o;for(n={},o={},e.length=t.length+r.length,u=t.length;u--;)e[i++]=t[u];for(u=r.length;u--;)e[i++]=r[u];for(;i--;)t=e[i],r=t.getAttribute("xlink:href"),f=t.getAttribute("id"),r&&(o[f]=r.substr(1)),n[f]=t;for(f in o)for(i=n[o[f]].cloneNode(!0),t=n[f];i.firstChild;)t.appendChild(i.firstChild);return n},parseAttributes:function(n,i,e){if(n){var s,o={},h;return"undefined"==typeof e&&(e=n.getAttribute("svgUid")),n.parentNode&&ft.test(n.parentNode.nodeName)&&(o=t.parseAttributes(n.parentNode,i,e)),h=o&&o.fontSize||n.getAttribute("font-size")||t.Text.DEFAULT_SVG_FONT_SIZE,i=i.reduce(function(t,i){return(s=n.getAttribute(i))&&(i=r(i),s=u(i,s,o,h),t[i]=s),t},{}),i=f(i,f(w(n,e),t.parseStyleAttribute(n))),i.font&&t.parseFontDeclaration(i.font,i),y(f(o,i))}},parseElements:function(n,i,r,u){new t.ElementsParser(n,i,r,u).parse()},parseStyleAttribute:function(n){var t={},f,e,i;if(n=n.getAttribute("style"),!n)return t;if("string"==typeof n)p(n,t);else for(i in n)"undefined"!=typeof n[i]&&(f=r(i.toLowerCase()),e=u(f,n[i]),t[f]=e);return t},parsePointsAttribute:function(n){if(!n)return null;n=n.replace(/,/g," ").trim();n=n.split(/\s+/);for(var i=[],t=0,r=n.length;t<r;t+=2)i.push({x:parseFloat(n[t]),y:parseFloat(n[t+1])});return i},getCSSRules:function(n){n=n.getElementsByTagName("style");for(var e={},i,f=0,o=n.length;f<o;f++)i=n[f].textContent,i=i.replace(/\/\*[\s\S]*?\*\//g,""),""!==i.trim()&&(i=i.match(/[^{]*\{[\s\S]*?\}/g),i=i.map(function(n){return n.trim()}),i.forEach(function(n){n=n.match(/([\s\S]*?)\s*\{([^}]*)\}/);for(var o={},s=n[2].trim().replace(/;$/,"").split(/\s*;\s*/),f=0,c=s.length;f<c;f++){var i=s[f].split(/\s*:\s*/),h=r(i[0]),i=u(h,i[1],i[0]);o[h]=i}n=n[1];n.split(",").forEach(function(n){n=n.replace(/^svg/i,"").trim();""!==n&&(e[n]=t.util.object.clone(o))})}));return e},loadSVGFromURL:function(n,i,r){function u(u){var f=u.responseXML;f&&!f.documentElement&&t.window.ActiveXObject&&u.responseText&&(f=new ActiveXObject("Microsoft.XMLDOM"),f.async="false",f.loadXML(u.responseText.replace(/<!DOCTYPE[\s\S]*?(\[[\s\S]*\])*?>/i,"")));f&&f.documentElement&&t.parseSVGDocument(f.documentElement,function(r,u){e.set(n,{objects:t.util.array.invoke(r,"toObject"),options:u});i(r,u)},r)}n=n.replace(/^\n\s*/,"").trim();e.has(n,function(r){r?e.get(n,function(n){n=k(n);i(n.objects,n.options)}):new t.util.request(n,{method:"get",onComplete:u})})},loadSVGFromString:function(n,i,r){var u,f;n=n.trim();"undefined"!=typeof DOMParser?(f=new DOMParser,f&&f.parseFromString&&(u=f.parseFromString(n,"text/xml"))):t.window.ActiveXObject&&(u=new ActiveXObject("Microsoft.XMLDOM"),u.async="false",u.loadXML(n.replace(/<!DOCTYPE[\s\S]*?(\[[\s\S]*\])*?>/i,"")));t.parseSVGDocument(u.documentElement,function(n,t){i(n,t)},r)},createSVGFontFacesMarkup:function(n){for(var i="",t=0,r=n.length;t<r;t++)"text"===n[t].type&&n[t].path&&(i+=["@font-face {font-family: ",n[t].fontFamily,"; src: url('",n[t].path,"')}\n"].join(""));return i&&(i=['\t<style type="text/css"><![CDATA[',i,"]\]><\/style>\n"].join("")),i},createSVGRefElementsMarkup:function(n){var t=[];return c(t,n,"backgroundColor"),c(t,n,"overlayColor"),t.join("")}})}("undefined"!=typeof exports?exports:this);fabric.ElementsParser=function(n,t,i,r){this.elements=n;this.callback=t;this.options=i;this.reviver=r;this.svgUid=i&&i.svgUid||0};fabric.ElementsParser.prototype.parse=function(){this.instances=Array(this.elements.length);this.numElements=this.elements.length;this.createObjects()};fabric.ElementsParser.prototype.createObjects=function(){for(var n=0,t=this.elements.length;n<t;n++)this.elements[n].setAttribute("svgUid",this.svgUid),function(n,t){setTimeout(function(){n.createObject(n.elements[t],t)},0)}(this,n)};fabric.ElementsParser.prototype.createObject=function(n,t){var i=fabric[fabric.util.string.capitalize(n.tagName)];if(i&&i.fromElement)try{this._createObject(i,n,t)}catch(r){fabric.log(r)}else this.checkIfDone()};fabric.ElementsParser.prototype._createObject=function(n,t,i){n.async?n.fromElement(t,this.createCallback(i,t),this.options):(n=n.fromElement(t,this.options),this.resolveGradient(n,"fill"),this.resolveGradient(n,"stroke"),this.reviver&&this.reviver(t,n),this.instances[i]=n,this.checkIfDone())};fabric.ElementsParser.prototype.createCallback=function(n,t){var i=this;return function(r){i.resolveGradient(r,"fill");i.resolveGradient(r,"stroke");i.reviver&&i.reviver(t,r);i.instances[n]=r;i.checkIfDone()}};fabric.ElementsParser.prototype.resolveGradient=function(n,t){var i=n.get(t);/^url\(/.test(i)&&(i=i.slice(5,i.length-1),fabric.gradientDefs[this.svgUid][i]&&n.set(t,fabric.Gradient.fromElement(fabric.gradientDefs[this.svgUid][i],n)))};fabric.ElementsParser.prototype.checkIfDone=function(){0==--this.numElements&&(this.instances=this.instances.filter(function(n){return null!=n}),this.callback(this.instances))},function(n){function t(n,t){this.x=n;this.y=t}n=n.fabric||(n.fabric={});n.Point?n.warn("fabric.Point is already defined"):(n.Point=t,t.prototype={constructor:t,add:function(n){return new t(this.x+n.x,this.y+n.y)},addEquals:function(n){return this.x+=n.x,this.y+=n.y,this},scalarAdd:function(n){return new t(this.x+n,this.y+n)},scalarAddEquals:function(n){return this.x+=n,this.y+=n,this},subtract:function(n){return new t(this.x-n.x,this.y-n.y)},subtractEquals:function(n){return this.x-=n.x,this.y-=n.y,this},scalarSubtract:function(n){return new t(this.x-n,this.y-n)},scalarSubtractEquals:function(n){return this.x-=n,this.y-=n,this},multiply:function(n){return new t(this.x*n,this.y*n)},multiplyEquals:function(n){return this.x*=n,this.y*=n,this},divide:function(n){return new t(this.x/n,this.y/n)},divideEquals:function(n){return this.x/=n,this.y/=n,this},eq:function(n){return this.x===n.x&&this.y===n.y},lt:function(n){return this.x<n.x&&this.y<n.y},lte:function(n){return this.x<=n.x&&this.y<=n.y},gt:function(n){return this.x>n.x&&this.y>n.y},gte:function(n){return this.x>=n.x&&this.y>=n.y},lerp:function(n,i){return new t(this.x+(n.x-this.x)*i,this.y+(n.y-this.y)*i)},distanceFrom:function(n){var t=this.x-n.x;return n=this.y-n.y,Math.sqrt(t*t+n*n)},midPointFrom:function(n){return new t(this.x+(n.x-this.x)/2,this.y+(n.y-this.y)/2)},min:function(n){return new t(Math.min(this.x,n.x),Math.min(this.y,n.y))},max:function(n){return new t(Math.max(this.x,n.x),Math.max(this.y,n.y))},toString:function(){return this.x+","+this.y},setXY:function(n,t){this.x=n;this.y=t},setFromPoint:function(n){this.x=n.x;this.y=n.y},swap:function(n){var t=this.x,i=this.y;this.x=n.x;this.y=n.y;n.x=t;n.y=i}})}("undefined"!=typeof exports?exports:this),function(n){function t(n){this.status=n;this.points=[]}var i=n.fabric||(n.fabric={});i.Intersection?i.warn("fabric.Intersection is already defined"):(i.Intersection=t,i.Intersection.prototype={appendPoint:function(n){this.points.push(n)},appendPoints:function(n){this.points=this.points.concat(n)}},i.Intersection.intersectLineLine=function(n,r,u,f){var e,o=(f.x-u.x)*(n.y-u.y)-(f.y-u.y)*(n.x-u.x);return e=(r.x-n.x)*(n.y-u.y)-(r.y-n.y)*(n.x-u.x),u=(f.y-u.y)*(r.x-n.x)-(f.x-u.x)*(r.y-n.y),0!==u?(o/=u,e/=u,0<=o&&1>=o&&0<=e&&1>=e?(e=new t("Intersection"),e.points.push(new i.Point(n.x+o*(r.x-n.x),n.y+o*(r.y-n.y)))):e=new t):e=0===o||0===e?new t("Coincident"):new t("Parallel"),e},i.Intersection.intersectLinePolygon=function(n,i,r){for(var o,u=new t,e=r.length,f=0;f<e;f++)o=t.intersectLineLine(n,i,r[f],r[(f+1)%e]),u.appendPoints(o.points);return 0<u.points.length&&(u.status="Intersection"),u},i.Intersection.intersectPolygonPolygon=function(n,i){for(var e,r=new t,f=n.length,u=0;u<f;u++)e=t.intersectLinePolygon(n[u],n[(u+1)%f],i),r.appendPoints(e.points);return 0<r.points.length&&(r.status="Intersection"),r},i.Intersection.intersectPolygonRectangle=function(n,r,u){var f=r.min(u),e=r.max(u),o;return u=new i.Point(e.x,f.y),o=new i.Point(f.x,e.y),r=t.intersectLinePolygon(f,u,n),u=t.intersectLinePolygon(u,e,n),e=t.intersectLinePolygon(e,o,n),n=t.intersectLinePolygon(o,f,n),f=new t,f.appendPoints(r.points),f.appendPoints(u.points),f.appendPoints(e.points),f.appendPoints(n.points),0<f.points.length&&(f.status="Intersection"),f})}("undefined"!=typeof exports?exports:this),function(n){function t(n){n?this._tryParsingColor(n):this.setSource([0,0,0,1])}function r(n,t,i){return 0>i&&(i+=1),1<i&&--i,i<1/6?n+6*(t-n)*i:.5>i?t:i<2/3?n+(t-n)*(2/3-i)*6:n}var i=n.fabric||(n.fabric={});i.Color?i.warn("fabric.Color is already defined."):(i.Color=t,i.Color.prototype={_tryParsingColor:function(n){var i;n in t.colorNameMap&&(n=t.colorNameMap[n]);"transparent"===n?this.setSource([255,255,255,0]):((i=t.sourceFromHex(n))||(i=t.sourceFromRgb(n)),i||(i=t.sourceFromHsl(n)),i&&this.setSource(i))},_rgbToHsl:function(n,t,r){var e,u,s,f,o;if(n/=255,t/=255,r/=255,f=i.util.array.max([n,t,r]),u=i.util.array.min([n,t,r]),s=(f+u)/2,f===u)e=u=0;else{o=f-u;u=.5<s?o/(2-f-u):o/(f+u);switch(f){case n:e=(t-r)/o+(t<r?6:0);break;case t:e=(r-n)/o+2;break;case r:e=(n-t)/o+4}e/=6}return[Math.round(360*e),Math.round(100*u),Math.round(100*s)]},getSource:function(){return this._source},setSource:function(n){this._source=n},toRgb:function(){var n=this.getSource();return"rgb("+n[0]+","+n[1]+","+n[2]+")"},toRgba:function(){var n=this.getSource();return"rgba("+n[0]+","+n[1]+","+n[2]+","+n[3]+")"},toHsl:function(){var n=this.getSource(),n=this._rgbToHsl(n[0],n[1],n[2]);return"hsl("+n[0]+","+n[1]+"%,"+n[2]+"%)"},toHsla:function(){var n=this.getSource(),t=this._rgbToHsl(n[0],n[1],n[2]);return"hsla("+t[0]+","+t[1]+"%,"+t[2]+"%,"+n[3]+")"},toHex:function(){var n=this.getSource(),t,i;return t=n[0].toString(16),t=1===t.length?"0"+t:t,i=n[1].toString(16),i=1===i.length?"0"+i:i,n=n[2].toString(16),n=1===n.length?"0"+n:n,t.toUpperCase()+i.toUpperCase()+n.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(n){var t=this.getSource();return t[3]=n,this.setSource(t),this},toGrayscale:function(){var n=this.getSource(),t=parseInt((.3*n[0]+.59*n[1]+.11*n[2]).toFixed(0),10);return this.setSource([t,t,t,n[3]]),this},toBlackWhite:function(n){var t=this.getSource(),i=(.3*t[0]+.59*t[1]+.11*t[2]).toFixed(0),t=t[3],i=Number(i)<Number(n||127)?0:255;return this.setSource([i,i,i,t]),this},overlayWith:function(n){var i;n instanceof t||(n=new t(n));var r=[],u=this.getAlpha(),f=this.getSource();for(n=n.getSource(),i=0;3>i;i++)r.push(Math.round(.5*f[i]+.5*n[i]));return r[3]=u,this.setSource(r),this}},i.Color.reRGBa=/^rgba?\(\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*(?:\s*,\s*(\d+(?:\.\d+)?)\s*)?\)$/,i.Color.reHSLa=/^hsla?\(\s*(\d{1,3})\s*,\s*(\d{1,3}\%)\s*,\s*(\d{1,3}\%)\s*(?:\s*,\s*(\d+(?:\.\d+)?)\s*)?\)$/,i.Color.reHex=/^#?([0-9a-f]{6}|[0-9a-f]{3})$/i,i.Color.colorNameMap={aqua:"#00FFFF",black:"#000000",blue:"#0000FF",fuchsia:"#FF00FF",gray:"#808080",green:"#008000",lime:"#00FF00",maroon:"#800000",navy:"#000080",olive:"#808000",orange:"#FFA500",purple:"#800080",red:"#FF0000",silver:"#C0C0C0",teal:"#008080",white:"#FFFFFF",yellow:"#FFFF00"},i.Color.fromRgb=function(n){return t.fromSource(t.sourceFromRgb(n))},i.Color.sourceFromRgb=function(n){if(n=n.match(t.reRGBa)){var i=parseInt(n[1],10)/(/%$/.test(n[1])?100:1)*(/%$/.test(n[1])?255:1),r=parseInt(n[2],10)/(/%$/.test(n[2])?100:1)*(/%$/.test(n[2])?255:1),u=parseInt(n[3],10)/(/%$/.test(n[3])?100:1)*(/%$/.test(n[3])?255:1);return[parseInt(i,10),parseInt(r,10),parseInt(u,10),n[4]?parseFloat(n[4]):1]}},i.Color.fromRgba=t.fromRgb,i.Color.fromHsl=function(n){return t.fromSource(t.sourceFromHsl(n))},i.Color.sourceFromHsl=function(n){if(n=n.match(t.reHSLa)){var f=(parseFloat(n[1])%360+360)%360/360,u=parseFloat(n[2])/(/%$/.test(n[2])?100:1),i=parseFloat(n[3])/(/%$/.test(n[3])?100:1);if(0===u)i=u=f=i;else var e=.5>=i?i*(u+1):i+u-i*u,o=2*i-e,i=r(o,e,f+1/3),u=r(o,e,f),f=r(o,e,f-1/3);return[Math.round(255*i),Math.round(255*u),Math.round(255*f),n[4]?parseFloat(n[4]):1]}},i.Color.fromHsla=t.fromHsl,i.Color.fromHex=function(n){return t.fromSource(t.sourceFromHex(n))},i.Color.sourceFromHex=function(n){var r,u,i;if(n.match(t.reHex))return i=n.slice(n.indexOf("#")+1),r=3===i.length,n=r?i.charAt(0)+i.charAt(0):i.substring(0,2),u=r?i.charAt(1)+i.charAt(1):i.substring(2,4),i=r?i.charAt(2)+i.charAt(2):i.substring(4,6),[parseInt(n,16),parseInt(u,16),parseInt(i,16),1]},i.Color.fromSource=function(n){var i=new t;return i.setSource(n),i})}("undefined"!=typeof exports?exports:this),function(n){var t=n.fabric||(n.fabric={}),i=t.util.toFixed;t.Shadow?t.warn("fabric.Shadow is already defined."):(t.Shadow=t.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,initialize:function(n){"string"==typeof n&&(n=this._parseShadow(n));for(var i in n)this[i]=n[i];this.id=t.Object.__uid++},_parseShadow:function(n){n=n.trim();var i=t.Shadow.reOffsetsAndBlur.exec(n)||[];return{color:(n.replace(t.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)").trim(),offsetX:parseInt(i[1],10)||0,offsetY:parseInt(i[2],10)||0,blur:parseInt(i[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(n){var t=40,r=40;return n.width&&n.height&&(t=100*i((Math.abs(this.offsetX)+this.blur)/n.width,2)+20,r=100*i((Math.abs(this.offsetY)+this.blur)/n.height,2)+20),'<filter id="SVGID_'+this.id+'" y="-'+r+'%" height="'+(100+2*r)+'%" x="-'+t+'%" width="'+(100+2*t)+'%" >\n\t<feGaussianBlur in="SourceAlpha" stdDeviation="'+i(this.blur?this.blur/2:0,3)+'"><\/feGaussianBlur>\n\t<feOffset dx="'+this.offsetX+'" dy="'+this.offsetY+'" result="oBlur" ><\/feOffset>\n\t<feFlood flood-color="'+this.color+'"/>\n\t<feComposite in2="oBlur" operator="in" />\n\t<feMerge>\n\t\t<feMergeNode><\/feMergeNode>\n\t\t<feMergeNode in="SourceGraphic"><\/feMergeNode>\n\t<\/feMerge>\n<\/filter>\n'},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY};var n={},i=t.Shadow.prototype;return this.color!==i.color&&(n.color=this.color),this.blur!==i.blur&&(n.blur=this.blur),this.offsetX!==i.offsetX&&(n.offsetX=this.offsetX),this.offsetY!==i.offsetY&&(n.offsetY=this.offsetY),n}}),t.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/)}("undefined"!=typeof exports?exports:this),function(){if(fabric.StaticCanvas)fabric.warn("fabric.StaticCanvas is already defined.");else{var n=fabric.util.object.extend,r=fabric.util.getElementOffset,t=fabric.util.removeFromArray,i=Error("Could not initialize `canvas` element");fabric.StaticCanvas=fabric.util.createClass({initialize:function(n,t){t||(t={});this._initStatic(n,t);fabric.StaticCanvas.activeInstance=this},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!0,renderOnAddRemove:!0,clipTo:null,controlsAboveOverlay:!1,allowTouchScrolling:!1,imageSmoothingEnabled:!0,preserveObjectStacking:!1,viewportTransform:[1,0,0,1,0,0],onBeforeScaleRotate:function(){},enableRetinaScaling:!0,_initStatic:function(n,t){this._objects=[];this._createLowerCanvas(n);this._initOptions(t);this._setImageSmoothing();this.interactive||this._initRetinaScaling();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));t.overlayColor&&this.setOverlayColor(t.overlayColor,this.renderAll.bind(this));this.calcOffset()},_initRetinaScaling:function(){1!==fabric.devicePixelRatio&&this.enableRetinaScaling&&(this.lowerCanvasEl.setAttribute("width",this.width*fabric.devicePixelRatio),this.lowerCanvasEl.setAttribute("height",this.height*fabric.devicePixelRatio),this.contextContainer.scale(fabric.devicePixelRatio,fabric.devicePixelRatio))},calcOffset:function(){return this._offset=r(this.lowerCanvasEl),this},setOverlayImage:function(n,t,i){return this.__setBgOverlayImage("overlayImage",n,t,i)},setBackgroundImage:function(n,t,i){return this.__setBgOverlayImage("backgroundImage",n,t,i)},setOverlayColor:function(n,t){return this.__setBgOverlayColor("overlayColor",n,t)},setBackgroundColor:function(n,t){return this.__setBgOverlayColor("backgroundColor",n,t)},_setImageSmoothing:function(){var n=this.getContext();"undefined"!=typeof n.imageSmoothingEnabled?n.imageSmoothingEnabled=this.imageSmoothingEnabled:(n.webkitImageSmoothingEnabled=this.imageSmoothingEnabled,n.mozImageSmoothingEnabled=this.imageSmoothingEnabled,n.msImageSmoothingEnabled=this.imageSmoothingEnabled,n.oImageSmoothingEnabled=this.imageSmoothingEnabled)},__setBgOverlayImage:function(n,t,i,r){return"string"==typeof t?fabric.util.loadImage(t,function(t){this[n]=new fabric.Image(t,r);i&&i()},this,r&&r.crossOrigin):(r&&t.setOptions(r),this[n]=t,i&&i()),this},__setBgOverlayColor:function(n,t,i){if(t&&t.source){var r=this;fabric.util.loadImage(t.source,function(u){r[n]=new fabric.Pattern({source:u,repeat:t.repeat,offsetX:t.offsetX,offsetY:t.offsetY});i&&i()})}else this[n]=t,i&&i();return this},_createCanvasElement:function(){var n=fabric.document.createElement("canvas");if(n.style||(n.style={}),!n)throw i;return this._initCanvasElement(n),n},_initCanvasElement:function(n){if(fabric.util.createCanvasElement(n),"undefined"==typeof n.getContext)throw i;},_initOptions:function(n){for(var t in n)this[t]=n[t];this.width=this.width||parseInt(this.lowerCanvasEl.width,10)||0;this.height=this.height||parseInt(this.lowerCanvasEl.height,10)||0;this.lowerCanvasEl.style&&(this.lowerCanvasEl.width=this.width,this.lowerCanvasEl.height=this.height,this.lowerCanvasEl.style.width=this.width+"px",this.lowerCanvasEl.style.height=this.height+"px",this.viewportTransform=this.viewportTransform.slice())},_createLowerCanvas:function(n){this.lowerCanvasEl=fabric.util.getById(n)||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(n,t){return this.setDimensions({width:n},t)},setHeight:function(n,t){return this.setDimensions({height:n},t)},setDimensions:function(n,t){var r,i;t=t||{};for(i in n)r=n[i],t.cssOnly||(this._setBackstoreDimension(i,n[i]),r+="px"),t.backstoreOnly||this._setCssDimension(i,r);return this._setImageSmoothing(),this.calcOffset(),t.cssOnly||this.renderAll(),this},_setBackstoreDimension:function(n,t){return this.lowerCanvasEl[n]=t,this.upperCanvasEl&&(this.upperCanvasEl[n]=t),this.cacheCanvasEl&&(this.cacheCanvasEl[n]=t),this[n]=t,this},_setCssDimension:function(n,t){return this.lowerCanvasEl.style[n]=t,this.upperCanvasEl&&(this.upperCanvasEl.style[n]=t),this.wrapperEl&&(this.wrapperEl.style[n]=t),this},getZoom:function(){return Math.sqrt(this.viewportTransform[0]*this.viewportTransform[3])},setViewportTransform:function(n){var t=this.getActiveGroup(),i;for(this.viewportTransform=n,this.renderAll(),n=0,i=this._objects.length;n<i;n++)this._objects[n].setCoords();return t&&t.setCoords(),this},zoomToPoint:function(n,t){var i=n,r;for(n=fabric.util.transformPoint(n,fabric.util.invertTransform(this.viewportTransform)),this.viewportTransform[0]=t,this.viewportTransform[3]=t,r=fabric.util.transformPoint(n,this.viewportTransform),this.viewportTransform[4]+=i.x-r.x,this.viewportTransform[5]+=i.y-r.y,this.renderAll(),i=0,r=this._objects.length;i<r;i++)this._objects[i].setCoords();return this},setZoom:function(n){return this.zoomToPoint(new fabric.Point(0,0),n),this},absolutePan:function(n){this.viewportTransform[4]=-n.x;this.viewportTransform[5]=-n.y;this.renderAll();n=0;for(var t=this._objects.length;n<t;n++)this._objects[n].setCoords();return this},relativePan:function(n){return this.absolutePan(new fabric.Point(-n.x-this.viewportTransform[4],-n.y-this.viewportTransform[5]))},getElement:function(){return this.lowerCanvasEl},getActiveObject:function(){return null},getActiveGroup:function(){return null},_draw:function(n,t){if(t){n.save();var i=this.viewportTransform;n.transform(i[0],i[1],i[2],i[3],i[4],i[5]);this._shouldRenderObject(t)&&t.render(n);n.restore();this.controlsAboveOverlay||t._renderControls(n)}},_shouldRenderObject:function(n){return n?n!==this.getActiveGroup()||!this.preserveObjectStacking:!1},_onObjectAdded:function(n){this.stateful&&n.setupState();n._set("canvas",this);n.setCoords();this.fire("object:added",{target:n});n.fire("added")},_onObjectRemoved:function(n){this.getActiveObject()===n&&(this.fire("before:selection:cleared",{target:n}),this._discardActiveObject(),this.fire("selection:cleared"));this.fire("object:removed",{target:n});n.fire("removed")},clearContext:function(n){return n.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(n){var t=this[!0===n&&this.interactive?"contextTop":"contextContainer"],i=this.getActiveGroup();return this.contextTop&&this.selection&&!this._groupSelector&&this.clearContext(this.contextTop),n||this.clearContext(t),this.fire("before:render"),this.clipTo&&fabric.util.clipContext(this,t),this._renderBackground(t),this._renderObjects(t,i),this._renderActiveGroup(t,i),this.clipTo&&t.restore(),this._renderOverlay(t),this.controlsAboveOverlay&&this.interactive&&this.drawControls(t),this.fire("after:render"),this},_renderObjects:function(n,t){var i,r;if(!t||this.preserveObjectStacking)for(i=0,r=this._objects.length;i<r;++i)this._draw(n,this._objects[i]);else for(i=0,r=this._objects.length;i<r;++i)this._objects[i]&&!t.contains(this._objects[i])&&this._draw(n,this._objects[i])},_renderActiveGroup:function(n,t){if(t){var i=[];this.forEachObject(function(n){t.contains(n)&&i.push(n)});t._set("_objects",i.reverse());this._draw(n,t)}},_renderBackground:function(n){this.backgroundColor&&(n.fillStyle=this.backgroundColor.toLive?this.backgroundColor.toLive(n):this.backgroundColor,n.fillRect(this.backgroundColor.offsetX||0,this.backgroundColor.offsetY||0,this.width,this.height));this.backgroundImage&&this._draw(n,this.backgroundImage)},_renderOverlay:function(n){this.overlayColor&&(n.fillStyle=this.overlayColor.toLive?this.overlayColor.toLive(n):this.overlayColor,n.fillRect(this.overlayColor.offsetX||0,this.overlayColor.offsetY||0,this.width,this.height));this.overlayImage&&this._draw(n,this.overlayImage)},renderTop:function(){var n=this.contextTop||this.contextContainer,t;return this.clearContext(n),this.selection&&this._groupSelector&&this._drawSelection(),t=this.getActiveGroup(),t&&t.render(n),this._renderOverlay(n),this.fire("after:render"),this},getCenter:function(){return{top:this.getHeight()/2,left:this.getWidth()/2}},centerObjectH:function(n){return this._centerObject(n,new fabric.Point(this.getCenter().left,n.getCenterPoint().y)),this.renderAll(),this},centerObjectV:function(n){return this._centerObject(n,new fabric.Point(n.getCenterPoint().x,this.getCenter().top)),this.renderAll(),this},centerObject:function(n){var t=this.getCenter();return this._centerObject(n,new fabric.Point(t.left,t.top)),this.renderAll(),this},_centerObject:function(n,t){return n.setPositionByOrigin(t,"center","center"),this},toDatalessJSON:function(n){return this.toDatalessObject(n)},toObject:function(n){return this._toObjectMethod("toObject",n)},toDatalessObject:function(n){return this._toObjectMethod("toDatalessObject",n)},_toObjectMethod:function(t,i){var r={objects:this._toObjects(t,i)};return n(r,this.__serializeBgOverlay()),fabric.util.populateWithProperties(this,r,i),r},_toObjects:function(n,t){return this.getObjects().map(function(i){return this._toObject(i,n,t)},this)},_toObject:function(n,t,i){var r,u;return this.includeDefaultValues||(r=n.includeDefaultValues,n.includeDefaultValues=!1),u=this._realizeGroupTransformOnObject(n),t=n[t](i),this.includeDefaultValues||(n.includeDefaultValues=r),this._unwindGroupTransformOnObject(n,u),t},_realizeGroupTransformOnObject:function(n){var i="angle flipX flipY height left scaleX scaleY top width".split(" "),t;return n.group&&n.group===this.getActiveGroup()?(t={},i.forEach(function(i){t[i]=n[i]}),this.getActiveGroup().realizeTransform(n),t):null},_unwindGroupTransformOnObject:function(n,t){t&&n.set(t)},__serializeBgOverlay:function(){var n={background:this.backgroundColor&&this.backgroundColor.toObject?this.backgroundColor.toObject():this.backgroundColor};return this.overlayColor&&(n.overlay=this.overlayColor.toObject?this.overlayColor.toObject():this.overlayColor),this.backgroundImage&&(n.backgroundImage=this.backgroundImage.toObject()),this.overlayImage&&(n.overlayImage=this.overlayImage.toObject()),n},svgViewportTransformation:!0,toSVG:function(n,t){n||(n={});var i=[];return this._setSVGPreamble(i,n),this._setSVGHeader(i,n),this._setSVGBgOverlayColor(i,"backgroundColor"),this._setSVGBgOverlayImage(i,"backgroundImage"),this._setSVGObjects(i,t),this._setSVGBgOverlayColor(i,"overlayColor"),this._setSVGBgOverlayImage(i,"overlayImage"),i.push("<\/svg>"),i.join("")},_setSVGPreamble:function(n,t){t.suppressPreamble||n.push('<?xml version="1.0" encoding="',t.encoding||"UTF-8",'" standalone="no" ?>\n','<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" ','"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')},_setSVGHeader:function(n,t){var i,r,u;t.viewBox?(i=t.viewBox.width,r=t.viewBox.height):(i=this.width,r=this.height,this.svgViewportTransformation||(u=this.viewportTransform,i/=u[0],r/=u[3]));n.push("<svg ",'xmlns="http://www.w3.org/2000/svg" ','xmlns:xlink="http://www.w3.org/1999/xlink" ','version="1.1" ','width="',i,'" ','height="',r,'" ',this.backgroundColor&&!this.backgroundColor.toLive?'style="background-color: '+this.backgroundColor+'" ':null,t.viewBox?'viewBox="'+t.viewBox.x+" "+t.viewBox.y+" "+t.viewBox.width+" "+t.viewBox.height+'" ':null,'xml:space="preserve">\n',"<desc>Created with Fabric.js ",fabric.version,"<\/desc>\n","<defs>",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),"<\/defs>\n")},_setSVGObjects:function(n,t){for(var i,f,r=0,u=this.getObjects(),e=u.length;r<e;r++)i=u[r],f=this._realizeGroupTransformOnObject(i),n.push(i.toSVG(t)),this._unwindGroupTransformOnObject(i,f)},_setSVGBgOverlayImage:function(n,t){this[t]&&this[t].toSVG&&n.push(this[t].toSVG())},_setSVGBgOverlayColor:function(n,t){this[t]&&this[t].source?n.push('<rect x="',this[t].offsetX,'" y="',this[t].offsetY,'" ','width="',"repeat-y"===this[t].repeat||"no-repeat"===this[t].repeat?this[t].source.width:this.width,'" height="',"repeat-x"===this[t].repeat||"no-repeat"===this[t].repeat?this[t].source.height:this.height,'" fill="url(#'+t+'Pattern)"',"><\/rect>\n"):this[t]&&"overlayColor"===t&&n.push('<rect x="0" y="0" ','width="',this.width,'" height="',this.height,'" fill="',this[t],'"',"><\/rect>\n")},sendToBack:function(n){return t(this._objects,n),this._objects.unshift(n),this.renderAll&&this.renderAll()},bringToFront:function(n){return t(this._objects,n),this._objects.push(n),this.renderAll&&this.renderAll()},sendBackwards:function(n,i){var r=this._objects.indexOf(n);return 0!==r&&(r=this._findNewLowerIndex(n,r,i),t(this._objects,n),this._objects.splice(r,0,n),this.renderAll&&this.renderAll()),this},_findNewLowerIndex:function(n,t,i){if(i){for(i=t,--t;0<=t;--t)if(n.intersectsWithObject(this._objects[t])||n.isContainedWithinObject(this._objects[t])||this._objects[t].isContainedWithinObject(n)){i=t;break}}else i=t-1;return i},bringForward:function(n,i){var r=this._objects.indexOf(n);return r!==this._objects.length-1&&(r=this._findNewUpperIndex(n,r,i),t(this._objects,n),this._objects.splice(r,0,n),this.renderAll&&this.renderAll()),this},_findNewUpperIndex:function(n,t,i){if(i){for(i=t,t+=1;t<this._objects.length;++t)if(n.intersectsWithObject(this._objects[t])||n.isContainedWithinObject(this._objects[t])||this._objects[t].isContainedWithinObject(n)){i=t;break}}else i=t+1;return i},moveTo:function(n,i){return t(this._objects,n),this._objects.splice(i,0,n),this.renderAll&&this.renderAll()},dispose:function(){return this.clear(),this.interactive&&this.removeListeners(),this},toString:function(){return"#<fabric.Canvas ("+this.complexity()+"): { objects: "+this.getObjects().length+" }>"}});n(fabric.StaticCanvas.prototype,fabric.Observable);n(fabric.StaticCanvas.prototype,fabric.Collection);n(fabric.StaticCanvas.prototype,fabric.DataURLExporter);n(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(n){var t=fabric.util.createCanvasElement(),i;if(!t||!t.getContext||(i=t.getContext("2d"),!i))return null;switch(n){case"getImageData":return"undefined"!=typeof i.getImageData;case"setLineDash":return"undefined"!=typeof i.setLineDash;case"toDataURL":return"undefined"!=typeof t.toDataURL;case"toDataURLWithQuality":try{return t.toDataURL("image/jpeg",0),!0}catch(r){}return!1;default:return null}}});fabric.StaticCanvas.prototype.toJSON=fabric.StaticCanvas.prototype.toObject}}();fabric.BaseBrush=fabric.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",strokeDashArray:null,setShadow:function(n){return this.shadow=new fabric.Shadow(n),this},_setBrushStyles:function(){var n=this.canvas.contextTop;n.strokeStyle=this.color;n.lineWidth=this.width;n.lineCap=this.strokeLineCap;n.lineJoin=this.strokeLineJoin;this.strokeDashArray&&fabric.StaticCanvas.supports("setLineDash")&&n.setLineDash(this.strokeDashArray)},_setShadow:function(){if(this.shadow){var n=this.canvas.contextTop;n.shadowColor=this.shadow.color;n.shadowBlur=this.shadow.blur;n.shadowOffsetX=this.shadow.offsetX;n.shadowOffsetY=this.shadow.offsetY}},_resetShadow:function(){var n=this.canvas.contextTop;n.shadowColor="";n.shadowBlur=n.shadowOffsetX=n.shadowOffsetY=0}}),function(){fabric.PencilBrush=fabric.util.createClass(fabric.BaseBrush,{initialize:function(n){this.canvas=n;this._points=[]},onMouseDown:function(n){this._prepareForDrawing(n);this._captureDrawingPath(n);this._render()},onMouseMove:function(n){this._captureDrawingPath(n);this.canvas.clearContext(this.canvas.contextTop);this._render()},onMouseUp:function(){this._finalizeAndAddPath()},_prepareForDrawing:function(n){n=new fabric.Point(n.x,n.y);this._reset();this._addPoint(n);this.canvas.contextTop.moveTo(n.x,n.y)},_addPoint:function(n){this._points.push(n)},_reset:function(){this._points.length=0;this._setBrushStyles();this._setShadow()},_captureDrawingPath:function(n){n=new fabric.Point(n.x,n.y);this._addPoint(n)},_render:function(){var i=this.canvas.contextTop,n=this.canvas.viewportTransform,t=this._points[0],r=this._points[1],u;for(i.save(),i.transform(n[0],n[1],n[2],n[3],n[4],n[5]),i.beginPath(),2===this._points.length&&t.x===r.x&&t.y===r.y&&(t.x-=.5,r.x+=.5),i.moveTo(t.x,t.y),n=1,u=this._points.length;n<u;n++)r=t.midPointFrom(r),i.quadraticCurveTo(t.x,t.y,r.x,r.y),t=this._points[n],r=this._points[n+1];i.lineTo(t.x,t.y);i.stroke();i.restore()},convertPointsToSVGPath:function(n){var r=[],i=new fabric.Point(n[0].x,n[0].y),f=new fabric.Point(n[1].x,n[1].y),t,e,u;for(r.push("M ",n[0].x," ",n[0].y," "),t=1,e=n.length;t<e;t++)u=i.midPointFrom(f),r.push("Q ",i.x," ",i.y," ",u.x," ",u.y," "),i=new fabric.Point(n[t].x,n[t].y),t+1<n.length&&(f=new fabric.Point(n[t+1].x,n[t+1].y));return r.push("L ",i.x," ",i.y," "),r},createPath:function(n){return n=new fabric.Path(n,{fill:null,stroke:this.color,strokeWidth:this.width,strokeLineCap:this.strokeLineCap,strokeLineJoin:this.strokeLineJoin,strokeDashArray:this.strokeDashArray,originX:"center",originY:"center"}),this.shadow&&(this.shadow.affectStroke=!0,n.setShadow(this.shadow)),n},_finalizeAndAddPath:function(){this.canvas.contextTop.closePath();var n=this.convertPointsToSVGPath(this._points).join("");"M 0 0 Q 0 0 0 0 L 0 0"===n?this.canvas.renderAll():(n=this.createPath(n),this.canvas.add(n),n.setCoords(),this.canvas.clearContext(this.canvas.contextTop),this._resetShadow(),this.canvas.renderAll(),this.canvas.fire("path:created",{path:n}))}})}();fabric.CircleBrush=fabric.util.createClass(fabric.BaseBrush,{width:10,initialize:function(n){this.canvas=n;this.points=[]},drawDot:function(n){n=this.addPoint(n);var t=this.canvas.contextTop,i=this.canvas.viewportTransform;t.save();t.transform(i[0],i[1],i[2],i[3],i[4],i[5]);t.fillStyle=n.fill;t.beginPath();t.arc(n.x,n.y,n.radius,0,2*Math.PI,!1);t.closePath();t.fill();t.restore()},onMouseDown:function(n){this.points.length=0;this.canvas.clearContext(this.canvas.contextTop);this._setShadow();this.drawDot(n)},onMouseMove:function(n){this.drawDot(n)},onMouseUp:function(){var r=this.canvas.renderOnAddRemove,n;this.canvas.renderOnAddRemove=!1;for(var t=[],i=0,u=this.points.length;i<u;i++)n=this.points[i],n=new fabric.Circle({radius:n.radius,left:n.x,top:n.y,originX:"center",originY:"center",fill:n.fill}),this.shadow&&n.setShadow(this.shadow),t.push(n);t=new fabric.Group(t,{originX:"center",originY:"center"});t.canvas=this.canvas;this.canvas.add(t);this.canvas.fire("path:created",{path:t});this.canvas.clearContext(this.canvas.contextTop);this._resetShadow();this.canvas.renderOnAddRemove=r;this.canvas.renderAll()},addPoint:function(n){n=new fabric.Point(n.x,n.y);var t=fabric.util.getRandomInt(Math.max(0,this.width-20),this.width+20)/2,i=new fabric.Color(this.color).setAlpha(fabric.util.getRandomInt(0,100)/100).toRgba();return n.radius=t,n.fill=i,this.points.push(n),n}});fabric.SprayBrush=fabric.util.createClass(fabric.BaseBrush,{width:10,density:20,dotWidth:1,dotWidthVariance:1,randomOpacity:!1,optimizeOverlapping:!0,initialize:function(n){this.canvas=n;this.sprayChunks=[]},onMouseDown:function(n){this.sprayChunks.length=0;this.canvas.clearContext(this.canvas.contextTop);this._setShadow();this.addSprayChunk(n);this.render()},onMouseMove:function(n){this.addSprayChunk(n);this.render()},onMouseUp:function(){var f=this.canvas.renderOnAddRemove,u;this.canvas.renderOnAddRemove=!1;for(var n=[],r=0,e=this.sprayChunks.length;r<e;r++)for(var i=this.sprayChunks[r],t=0,o=i.length;t<o;t++)u=new fabric.Rect({width:i[t].width,height:i[t].width,left:i[t].x+1,top:i[t].y+1,originX:"center",originY:"center",fill:this.color}),this.shadow&&u.setShadow(this.shadow),n.push(u);this.optimizeOverlapping&&(n=this._getOptimizedRects(n));n=new fabric.Group(n,{originX:"center",originY:"center"});n.canvas=this.canvas;this.canvas.add(n);this.canvas.fire("path:created",{path:n});this.canvas.clearContext(this.canvas.contextTop);this._resetShadow();this.canvas.renderOnAddRemove=f;this.canvas.renderAll()},_getOptimizedRects:function(n){for(var r={},t,i=0,u=n.length;i<u;i++)t=n[i].left+""+n[i].top,r[t]||(r[t]=n[i]);n=[];for(t in r)n.push(r[t]);return n},render:function(){var i=this.canvas.contextTop,n,r,t;for(i.fillStyle=this.color,n=this.canvas.viewportTransform,i.save(),i.transform(n[0],n[1],n[2],n[3],n[4],n[5]),n=0,r=this.sprayChunkPoints.length;n<r;n++)t=this.sprayChunkPoints[n],"undefined"!=typeof t.opacity&&(i.globalAlpha=t.opacity),i.fillRect(t.x,t.y,t.width,t.width);i.restore()},addSprayChunk:function(n){this.sprayChunkPoints=[];for(var t,r,u,i=this.width/2,f=0;f<this.density;f++)t=fabric.util.getRandomInt(n.x-i,n.x+i),r=fabric.util.getRandomInt(n.y-i,n.y+i),u=this.dotWidthVariance?fabric.util.getRandomInt(Math.max(1,this.dotWidth-this.dotWidthVariance),this.dotWidth+this.dotWidthVariance):this.dotWidth,t=new fabric.Point(t,r),t.width=u,this.randomOpacity&&(t.opacity=fabric.util.getRandomInt(0,100)/100),this.sprayChunkPoints.push(t);this.sprayChunks.push(this.sprayChunkPoints)}});fabric.PatternBrush=fabric.util.createClass(fabric.PencilBrush,{getPatternSrc:function(){var t=fabric.document.createElement("canvas"),n=t.getContext("2d");return t.width=t.height=25,n.fillStyle=this.color,n.beginPath(),n.arc(10,10,10,0,2*Math.PI,!1),n.closePath(),n.fill(),t},getPatternSrcFunction:function(){return String(this.getPatternSrc).replace("this.color",'"'+this.color+'"')},getPattern:function(){return this.canvas.contextTop.createPattern(this.source||this.getPatternSrc(),"repeat")},_setBrushStyles:function(){this.callSuper("_setBrushStyles");this.canvas.contextTop.strokeStyle=this.getPattern()},createPath:function(n){return n=this.callSuper("createPath",n),n.stroke=new fabric.Pattern({source:this.source||this.getPatternSrcFunction()}),n}}),function(){var r=fabric.util.getPointer,u=fabric.util.degreesToRadians,f=fabric.util.radiansToDegrees,i=Math.atan2,n=Math.abs,t;fabric.Canvas=fabric.util.createClass(fabric.StaticCanvas,{initialize:function(n,t){t||(t={});this._initStatic(n,t);this._initInteractive();this._createCacheCanvas();fabric.Canvas.activeInstance=this},uniScaleTransform:!1,centeredScaling:!1,centeredRotation:!1,interactive:!0,selection:!0,selectionColor:"rgba(100, 100, 255, 0.3)",selectionDashArray:[],selectionBorderColor:"rgba(255, 255, 255, 0.3)",selectionLineWidth:1,hoverCursor:"move",moveCursor:"move",defaultCursor:"default",freeDrawingCursor:"crosshair",rotationCursor:"crosshair",containerClass:"canvas-inner-container",perPixelTargetFind:!1,targetFindTolerance:0,skipTargetFind:!1,isDrawingMode:!1,_initInteractive:function(){this._groupSelector=this._currentTransform=null;this._initWrapperElement();this._createUpperCanvas();this._initEventListeners();this._initRetinaScaling();this.freeDrawingBrush=fabric.PencilBrush&&new fabric.PencilBrush(this);this.calcOffset()},_resetCurrentTransform:function(n){var t=this._currentTransform;t.target.set({scaleX:t.original.scaleX,scaleY:t.original.scaleY,left:t.original.left,top:t.original.top});this._shouldCenterTransform(n,t.target)?"rotate"===t.action?this._setOriginToCenter(t.target):("center"!==t.originX&&(t.mouseXSign="right"===t.originX?-1:1),"center"!==t.originY&&(t.mouseYSign="bottom"===t.originY?-1:1),t.originX="center",t.originY="center"):(t.originX=t.original.originX,t.originY=t.original.originY)},containsPoint:function(n,t){var i=this.getPointer(n,!0),r=this._normalizePointer(t,i);return t.containsPoint(r)||t._findTargetCorner(i)},_normalizePointer:function(n,t){var i=this.getActiveGroup(),r=t.x,u=t.y,f;return i&&"group"!==n.type&&i.contains(n)&&(f=fabric.util.transformPoint(i.getCenterPoint(),this.viewportTransform,!0),r-=f.x,u-=f.y,r/=i.scaleX,u/=i.scaleY),{x:r,y:u}},isTargetTransparent:function(n,t,i){var r=n.hasBorders,u=n.transparentCorners;return n.hasBorders=n.transparentCorners=!1,this._draw(this.contextCache,n),n.hasBorders=r,n.transparentCorners=u,n=fabric.util.isTransparent(this.contextCache,t,i,this.targetFindTolerance),this.clearContext(this.contextCache),n},_shouldClearSelection:function(n,t){var i=this.getActiveGroup(),r=this.getActiveObject();return!t||t&&i&&!i.contains(t)&&i!==t&&!n.shiftKey||t&&!t.evented||t&&!t.selectable&&r&&r!==t},_shouldCenterTransform:function(n,t){if(t){var i=this._currentTransform,r;return"scale"===i.action||"scaleX"===i.action||"scaleY"===i.action?r=this.centeredScaling||t.centeredScaling:"rotate"===i.action&&(r=this.centeredRotation||t.centeredRotation),r?!n.altKey:n.altKey}},_getOriginFromCorner:function(n,t){var i={x:n.originX,y:n.originY};return"ml"===t||"tl"===t||"bl"===t?i.x="right":("mr"===t||"tr"===t||"br"===t)&&(i.x="left"),"tl"===t||"mt"===t||"tr"===t?i.y="bottom":("bl"===t||"mb"===t||"br"===t)&&(i.y="top"),i},_getActionFromCorner:function(n,t){var i="drag";return t&&(i="ml"===t||"mr"===t?"scaleX":"mt"===t||"mb"===t?"scaleY":"mtr"===t?"rotate":"scale"),i},_setupCurrentTransform:function(n,t){if(t){var r=this.getPointer(n),i=t._findTargetCorner(this.getPointer(n,!0)),f=this._getActionFromCorner(t,i),i=this._getOriginFromCorner(t,i);this._currentTransform={target:t,action:f,scaleX:t.scaleX,scaleY:t.scaleY,offsetX:r.x-t.left,offsetY:r.y-t.top,originX:i.x,originY:i.y,ex:r.x,ey:r.y,left:t.left,top:t.top,theta:u(t.angle),width:t.width*t.scaleX,mouseXSign:1,mouseYSign:1};this._currentTransform.original={left:t.left,top:t.top,scaleX:t.scaleX,scaleY:t.scaleY,originX:i.x,originY:i.y};this._resetCurrentTransform(n)}},_translateObject:function(n,t){var i=this._currentTransform.target;i.get("lockMovementX")||i.set("left",n-this._currentTransform.offsetX);i.get("lockMovementY")||i.set("top",t-this._currentTransform.offsetY)},_scaleObject:function(n,t,i){var r=this._currentTransform,u=r.target,f=u.get("lockScalingX"),e=u.get("lockScalingY"),s=u.get("lockScalingFlip"),o;f&&e||(o=u.translateToOriginPoint(u.getCenterPoint(),r.originX,r.originY),n=u.toLocalPoint(new fabric.Point(n,t),r.originX,r.originY),this._setLocalMouse(n,r),this._setObjectScale(n,r,f,e,i,s),u.setPositionByOrigin(o,r.originX,r.originY))},_setObjectScale:function(n,t,i,r,u,f){var e=t.target,o=!1,s=!1,h=e._getNonTransformedDimensions();t.newScaleX=n.x/h.x;t.newScaleY=n.y/h.y;f&&0>=t.newScaleX&&t.newScaleX<e.scaleX&&(o=!0);f&&0>=t.newScaleY&&t.newScaleY<e.scaleY&&(s=!0);"equally"!==u||i||r?u?"x"!==u||e.get("lockUniScaling")?"y"!==u||e.get("lockUniScaling")||s||r||e.set("scaleY",t.newScaleY):o||i||e.set("scaleX",t.newScaleX):(o||i||e.set("scaleX",t.newScaleX),s||r||e.set("scaleY",t.newScaleY)):o||s||this._scaleObjectEqually(n,e,t);o||s||this._flipObject(t,u)},_scaleObjectEqually:function(n,t,i){n=n.y+n.x;var r=t._getNonTransformedDimensions(),r=r.y*i.original.scaleY+r.x*i.original.scaleX;i.newScaleX=i.original.scaleX*n/r;i.newScaleY=i.original.scaleY*n/r;t.set("scaleX",i.newScaleX);t.set("scaleY",i.newScaleY)},_flipObject:function(n,t){0>n.newScaleX&&"y"!==t&&("left"===n.originX?n.originX="right":"right"===n.originX&&(n.originX="left"));0>n.newScaleY&&"x"!==t&&("top"===n.originY?n.originY="bottom":"bottom"===n.originY&&(n.originY="top"))},_setLocalMouse:function(t,i){var r=i.target;"right"===i.originX?t.x*=-1:"center"===i.originX&&(t.x=2*t.x*i.mouseXSign,0>t.x&&(i.mouseXSign=-i.mouseXSign));"bottom"===i.originY?t.y*=-1:"center"===i.originY&&(t.y=2*t.y*i.mouseYSign,0>t.y&&(i.mouseYSign=-i.mouseYSign));t.x=n(t.x)>r.padding?0>t.x?t.x+r.padding:t.x-r.padding:0;t.y=n(t.y)>r.padding?0>t.y?t.y+r.padding:t.y-r.padding:0},_rotateObject:function(n,t){var r=this._currentTransform;if(!r.target.get("lockRotation")){var u=i(r.ey-r.top,r.ex-r.left),e=i(t-r.top,n-r.left),u=f(e-u+r.theta);0>u&&(u=360+u);r.target.angle=u%360}},setCursor:function(n){this.upperCanvasEl.style.cursor=n},_resetObjectTransform:function(n){n.scaleX=1;n.scaleY=1;n.setAngle(0)},_drawSelection:function(){var r=this.contextTop,t=this._groupSelector,i=t.left,e=t.top,u=n(i),f=n(e);r.fillStyle=this.selectionColor;r.fillRect(t.ex-(0<i?0:-i),t.ey-(0<e?0:-e),u,f);r.lineWidth=this.selectionLineWidth;r.strokeStyle=this.selectionBorderColor;1<this.selectionDashArray.length?(i=t.ex+.5-(0<i?0:u),t=t.ey+.5-(0<e?0:f),r.beginPath(),fabric.util.drawDashedLine(r,i,t,i+u,t,this.selectionDashArray),fabric.util.drawDashedLine(r,i,t+f-1,i+u,t+f-1,this.selectionDashArray),fabric.util.drawDashedLine(r,i,t,i,t+f,this.selectionDashArray),fabric.util.drawDashedLine(r,i+u-1,t,i+u-1,t+f,this.selectionDashArray),r.closePath(),r.stroke()):r.strokeRect(t.ex+.5-(0<i?0:u),t.ey+.5-(0<e?0:f),u,f)},_isLastRenderedObject:function(n){return this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay.visible&&this.containsPoint(n,this.lastRenderedObjectWithControlsAboveOverlay)&&this.lastRenderedObjectWithControlsAboveOverlay._findTargetCorner(this.getPointer(n,!0))},findTarget:function(n,t){if(!this.skipTargetFind){if(this._isLastRenderedObject(n))return this.lastRenderedObjectWithControlsAboveOverlay;var i=this.getActiveGroup();return i&&!t&&this.containsPoint(n,i)?i:(i=this._searchPossibleTargets(n,t),this._fireOverOutEvents(i,n),i)}},_fireOverOutEvents:function(n,t){n?this._hoveredTarget!==n&&(this._hoveredTarget&&(this.fire("mouse:out",{target:this._hoveredTarget,e:t}),this._hoveredTarget.fire("mouseout")),this.fire("mouse:over",{target:n,e:t}),n.fire("mouseover"),this._hoveredTarget=n):this._hoveredTarget&&(this.fire("mouse:out",{target:this._hoveredTarget,e:t}),this._hoveredTarget.fire("mouseout"),this._hoveredTarget=null)},_checkTarget:function(n,t,i){if(t&&t.visible&&t.evented&&this.containsPoint(n,t)&&(!this.perPixelTargetFind&&!t.perPixelTargetFind||t.isEditing||!this.isTargetTransparent(t,i.x,i.y)))return!0},_searchPossibleTargets:function(n,t){for(var r,u=this.getPointer(n,!0),i=this._objects.length;i--;)if((!this._objects[i].group||t)&&this._checkTarget(n,this._objects[i],u)){this.relatedTarget=this._objects[i];r=this._objects[i];break}return r},getPointer:function(n,t,i){i||(i=this.upperCanvasEl);n=r(n);var u=i.getBoundingClientRect(),f=u.width||0,e=u.height||0;return f&&e||("top"in u&&"bottom"in u&&(e=Math.abs(u.top-u.bottom)),"right"in u&&"left"in u&&(f=Math.abs(u.right-u.left))),this.calcOffset(),n.x-=this._offset.left,n.y-=this._offset.top,t||(n=fabric.util.transformPoint(n,fabric.util.invertTransform(this.viewportTransform))),0===f||0===e?i=t=1:(t=i.width/f,i=i.height/e),{x:n.x*t,y:n.y*i}},_createUpperCanvas:function(){var n=this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/,"");this.upperCanvasEl=this._createCanvasElement();fabric.util.addClass(this.upperCanvasEl,"upper-canvas "+n);this.wrapperEl.appendChild(this.upperCanvasEl);this._copyCanvasStyle(this.lowerCanvasEl,this.upperCanvasEl);this._applyCanvasStyle(this.upperCanvasEl);this.contextTop=this.upperCanvasEl.getContext("2d")},_createCacheCanvas:function(){this.cacheCanvasEl=this._createCanvasElement();this.cacheCanvasEl.setAttribute("width",this.width);this.cacheCanvasEl.setAttribute("height",this.height);this.contextCache=this.cacheCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=fabric.util.wrapElement(this.lowerCanvasEl,"div",{"class":this.containerClass});fabric.util.setStyle(this.wrapperEl,{width:this.getWidth()+"px",height:this.getHeight()+"px",position:"relative"});fabric.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(n){var t=this.getWidth()||n.width,i=this.getHeight()||n.height;fabric.util.setStyle(n,{position:"absolute",width:t+"px",height:i+"px",left:0,top:0});n.width=t;n.height=i;fabric.util.makeElementUnselectable(n)},_copyCanvasStyle:function(n,t){t.style.cssText=n.style.cssText},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},_setActiveObject:function(n){this._activeObject&&this._activeObject.set("active",!1);this._activeObject=n;n.set("active",!0)},setActiveObject:function(n,t){return this._setActiveObject(n),this.renderAll(),this.fire("object:selected",{target:n,e:t}),n.fire("selected",{e:t}),this},getActiveObject:function(){return this._activeObject},_discardActiveObject:function(){this._activeObject&&this._activeObject.set("active",!1);this._activeObject=null},discardActiveObject:function(n){return this._discardActiveObject(),this.renderAll(),this.fire("selection:cleared",{e:n}),this},_setActiveGroup:function(n){(this._activeGroup=n)&&n.set("active",!0)},setActiveGroup:function(n,t){return this._setActiveGroup(n),n&&(this.fire("object:selected",{target:n,e:t}),n.fire("selected",{e:t})),this},getActiveGroup:function(){return this._activeGroup},_discardActiveGroup:function(){var n=this.getActiveGroup();n&&n.destroy();this.setActiveGroup(null)},discardActiveGroup:function(n){return this._discardActiveGroup(),this.fire("selection:cleared",{e:n}),this},deactivateAll:function(){for(var t=this.getObjects(),n=0,i=t.length;n<i;n++)t[n].set("active",!1);return this._discardActiveGroup(),this._discardActiveObject(),this},deactivateAllWithDispatch:function(n){var t=this.getActiveGroup()||this.getActiveObject();return t&&this.fire("before:selection:cleared",{target:t,e:n}),this.deactivateAll(),t&&this.fire("selection:cleared",{e:n}),this},drawControls:function(n){var t=this.getActiveGroup();t?this._drawGroupControls(n,t):this._drawObjectsControls(n)},_drawGroupControls:function(n,t){t._renderControls(n)},_drawObjectsControls:function(n){for(var t=0,i=this._objects.length;t<i;++t)this._objects[t]&&this._objects[t].active&&(this._objects[t]._renderControls(n),this.lastRenderedObjectWithControlsAboveOverlay=this._objects[t])}});for(t in fabric.StaticCanvas)"prototype"!==t&&(fabric.Canvas[t]=fabric.StaticCanvas[t]);fabric.isTouchSupported&&(fabric.Canvas.prototype._setCursorFromEvent=function(){});fabric.Element=fabric.Canvas}(),function(){var i={mt:0,tr:1,mr:2,br:3,mb:4,bl:5,ml:6,tl:7},n=fabric.util.addListener,t=fabric.util.removeListener;fabric.util.object.extend(fabric.Canvas.prototype,{cursorMap:"n-resize ne-resize e-resize se-resize s-resize sw-resize w-resize nw-resize".split(" "),_initEventListeners:function(){this._bindEvents();n(fabric.window,"resize",this._onResize);n(this.upperCanvasEl,"mousedown",this._onMouseDown);n(this.upperCanvasEl,"mousemove",this._onMouseMove);n(this.upperCanvasEl,"mousewheel",this._onMouseWheel);n(this.upperCanvasEl,"touchstart",this._onMouseDown);n(this.upperCanvasEl,"touchmove",this._onMouseMove);"undefined"!=typeof eventjs&&"add"in eventjs&&(eventjs.add(this.upperCanvasEl,"gesture",this._onGesture),eventjs.add(this.upperCanvasEl,"drag",this._onDrag),eventjs.add(this.upperCanvasEl,"orientation",this._onOrientationChange),eventjs.add(this.upperCanvasEl,"shake",this._onShake),eventjs.add(this.upperCanvasEl,"longpress",this._onLongPress))},_bindEvents:function(){this._onMouseDown=this._onMouseDown.bind(this);this._onMouseMove=this._onMouseMove.bind(this);this._onMouseUp=this._onMouseUp.bind(this);this._onResize=this._onResize.bind(this);this._onGesture=this._onGesture.bind(this);this._onDrag=this._onDrag.bind(this);this._onShake=this._onShake.bind(this);this._onLongPress=this._onLongPress.bind(this);this._onOrientationChange=this._onOrientationChange.bind(this);this._onMouseWheel=this._onMouseWheel.bind(this)},removeListeners:function(){t(fabric.window,"resize",this._onResize);t(this.upperCanvasEl,"mousedown",this._onMouseDown);t(this.upperCanvasEl,"mousemove",this._onMouseMove);t(this.upperCanvasEl,"mousewheel",this._onMouseWheel);t(this.upperCanvasEl,"touchstart",this._onMouseDown);t(this.upperCanvasEl,"touchmove",this._onMouseMove);"undefined"!=typeof eventjs&&"remove"in eventjs&&(eventjs.remove(this.upperCanvasEl,"gesture",this._onGesture),eventjs.remove(this.upperCanvasEl,"drag",this._onDrag),eventjs.remove(this.upperCanvasEl,"orientation",this._onOrientationChange),eventjs.remove(this.upperCanvasEl,"shake",this._onShake),eventjs.remove(this.upperCanvasEl,"longpress",this._onLongPress))},_onGesture:function(n,t){this.__onTransformGesture&&this.__onTransformGesture(n,t)},_onDrag:function(n,t){this.__onDrag&&this.__onDrag(n,t)},_onMouseWheel:function(n,t){this.__onMouseWheel&&this.__onMouseWheel(n,t)},_onOrientationChange:function(n,t){this.__onOrientationChange&&this.__onOrientationChange(n,t)},_onShake:function(n,t){this.__onShake&&this.__onShake(n,t)},_onLongPress:function(n,t){this.__onLongPress&&this.__onLongPress(n,t)},_onMouseDown:function(i){this.__onMouseDown(i);n(fabric.document,"touchend",this._onMouseUp);n(fabric.document,"touchmove",this._onMouseMove);t(this.upperCanvasEl,"mousemove",this._onMouseMove);t(this.upperCanvasEl,"touchmove",this._onMouseMove);"touchstart"===i.type?t(this.upperCanvasEl,"mousedown",this._onMouseDown):(n(fabric.document,"mouseup",this._onMouseUp),n(fabric.document,"mousemove",this._onMouseMove))},_onMouseUp:function(i){if(this.__onMouseUp(i),t(fabric.document,"mouseup",this._onMouseUp),t(fabric.document,"touchend",this._onMouseUp),t(fabric.document,"mousemove",this._onMouseMove),t(fabric.document,"touchmove",this._onMouseMove),n(this.upperCanvasEl,"mousemove",this._onMouseMove),n(this.upperCanvasEl,"touchmove",this._onMouseMove),"touchend"===i.type){var r=this;setTimeout(function(){n(r.upperCanvasEl,"mousedown",r._onMouseDown)},400)}},_onMouseMove:function(n){!this.allowTouchScrolling&&n.preventDefault&&n.preventDefault();this.__onMouseMove(n)},_onResize:function(){this.calcOffset()},_shouldRender:function(n,t){var i=this.getActiveGroup()||this.getActiveObject();return!!(n&&(n.isMoving||n!==i)||!n&&i||!n&&!i&&!this._groupSelector||t&&this._previousPointer&&this.selection&&(t.x!==this._previousPointer.x||t.y!==this._previousPointer.y))},__onMouseUp:function(n){var t,i;this.isDrawingMode&&this._isCurrentlyDrawing?this._onMouseUpInDrawingMode(n):(this._currentTransform?(this._finalizeCurrentTransform(),t=this._currentTransform.target):t=this.findTarget(n,!0),i=this._shouldRender(t,this.getPointer(n)),this._maybeGroupObjects(n),t&&(t.isMoving=!1),i&&this.renderAll(),this._handleCursorAndEvent(n,t))},_handleCursorAndEvent:function(n,t){this._setCursorFromEvent(n,t);var i=this;setTimeout(function(){i._setCursorFromEvent(n,t)},50);this.fire("mouse:up",{target:t,e:n});t&&t.fire("mouseup",{e:n})},_finalizeCurrentTransform:function(){var n=this._currentTransform.target;n._scaling&&(n._scaling=!1);n.setCoords();this.stateful&&n.hasStateChanged()&&(this.fire("object:modified",{target:n}),n.fire("modified"));this._restoreOriginXY(n)},_restoreOriginXY:function(n){if(this._previousOriginX&&this._previousOriginY){var t=n.translateToOriginPoint(n.getCenterPoint(),this._previousOriginX,this._previousOriginY);n.originX=this._previousOriginX;n.originY=this._previousOriginY;n.left=t.x;n.top=t.y;this._previousOriginY=this._previousOriginX=null}},_onMouseDownInDrawingMode:function(n){this._isCurrentlyDrawing=!0;this.discardActiveObject(n).renderAll();this.clipTo&&(fabric.util.clipContext(this,this.contextTop),this.clearContext(this.contextTop));var t=fabric.util.invertTransform(this.viewportTransform),t=fabric.util.transformPoint(this.getPointer(n,!0),t);this.freeDrawingBrush.onMouseDown(t);this.fire("mouse:down",{e:n});t=this.findTarget(n);"undefined"!=typeof t&&t.fire("mousedown",{e:n,target:t})},_onMouseMoveInDrawingMode:function(n){if(this._isCurrentlyDrawing){var t=fabric.util.invertTransform(this.viewportTransform),t=fabric.util.transformPoint(this.getPointer(n,!0),t);this.freeDrawingBrush.onMouseMove(t)}this.setCursor(this.freeDrawingCursor);this.fire("mouse:move",{e:n});t=this.findTarget(n);"undefined"!=typeof t&&t.fire("mousemove",{e:n,target:t})},_onMouseUpInDrawingMode:function(n){this._isCurrentlyDrawing=!1;this.clipTo&&this.contextTop.restore();this.freeDrawingBrush.onMouseUp();this.fire("mouse:up",{e:n});var t=this.findTarget(n);"undefined"!=typeof t&&t.fire("mouseup",{e:n,target:t})},__onMouseDown:function(n){var t,i,u,r;(("which"in n?1===n.which:1===n.button)||fabric.isTouchSupported)&&(this.isDrawingMode?this._onMouseDownInDrawingMode(n):this._currentTransform||(t=this.findTarget(n),i=this.getPointer(n,!0),this._previousPointer=i,u=this._shouldRender(t,i),r=this._shouldGroup(n,t),this._shouldClearSelection(n,t)?this._clearSelection(n,t,i):r&&(this._handleGrouping(n,t),t=this.getActiveGroup()),t&&t.selectable&&!r&&(this._beforeTransform(n,t),this._setupCurrentTransform(n,t)),u&&this.renderAll(),this.fire("mouse:down",{target:t,e:n}),t&&t.fire("mousedown",{e:n})))},_beforeTransform:function(n,t){if(this.stateful&&t.saveState(),t._findTargetCorner(this.getPointer(n)))this.onBeforeScaleRotate(t);t!==this.getActiveGroup()&&t!==this.getActiveObject()&&(this.deactivateAll(),this.setActiveObject(t,n))},_clearSelection:function(n,t,i){this.deactivateAllWithDispatch(n);t&&t.selectable?this.setActiveObject(t,n):this.selection&&(this._groupSelector={ex:i.x,ey:i.y,top:0,left:0})},_setOriginToCenter:function(n){this._previousOriginX=this._currentTransform.target.originX;this._previousOriginY=this._currentTransform.target.originY;var t=n.getCenterPoint();n.originX="center";n.originY="center";n.left=t.x;n.top=t.y;this._currentTransform.left=n.left;this._currentTransform.top=n.top},_setCenterToOrigin:function(n){var t=n.translateToOriginPoint(n.getCenterPoint(),this._previousOriginX,this._previousOriginY);n.originX=this._previousOriginX;n.originY=this._previousOriginY;n.left=t.x;n.top=t.y;this._previousOriginY=this._previousOriginX=null},__onMouseMove:function(n){var t,r,i;this.isDrawingMode?this._onMouseMoveInDrawingMode(n):"undefined"!=typeof n.touches&&1<n.touches.length||(i=this._groupSelector,i?(r=this.getPointer(n,!0),i.left=r.x-i.ex,i.top=r.y-i.ey,this.renderTop()):this._currentTransform?this._transformObject(n):(t=this.findTarget(n),!t||t&&!t.selectable?this.setCursor(this.defaultCursor):this._setCursorFromEvent(n,t)),this.fire("mouse:move",{target:t,e:n}),t&&t.fire("mousemove",{e:n}))},_transformObject:function(n){var i=this.getPointer(n),t=this._currentTransform;t.reset=!1;t.target.isMoving=!0;this._beforeScaleTransform(n,t);this._performTransformAction(n,t,i);this.renderAll()},_performTransformAction:function(n,t,i){var u=i.x,r,f;i=i.y;r=t.target;f=t.action;"rotate"===f?(this._rotateObject(u,i),this._fire("rotating",r,n)):"scale"===f?(this._onScale(n,t,u,i),this._fire("scaling",r,n)):"scaleX"===f?(this._scaleObject(u,i,"x"),this._fire("scaling",r,n)):"scaleY"===f?(this._scaleObject(u,i,"y"),this._fire("scaling",r,n)):(this._translateObject(u,i),this._fire("moving",r,n),this.setCursor(this.moveCursor))},_fire:function(n,t,i){this.fire("object:"+n,{target:t,e:i});t.fire(n,{e:i})},_beforeScaleTransform:function(n,t){if("scale"===t.action||"scaleX"===t.action||"scaleY"===t.action){var i=this._shouldCenterTransform(n,t.target);(i&&("center"!==t.originX||"center"!==t.originY)||!i&&"center"===t.originX&&"center"===t.originY)&&(this._resetCurrentTransform(n),t.reset=!0)}},_onScale:function(n,t,i,r){!n.shiftKey&&!this.uniScaleTransform||t.target.get("lockUniScaling")?(t.reset||"scale"!==t.currentAction||this._resetCurrentTransform(n,t.target),t.currentAction="scaleEqually",this._scaleObject(i,r,"equally")):(t.currentAction="scale",this._scaleObject(i,r))},_setCursorFromEvent:function(n,t){if(t&&t.selectable){var i=this.getActiveGroup();(i=t._findTargetCorner&&(!i||!i.contains(t))&&t._findTargetCorner(this.getPointer(n,!0)))?this._setCornerCursor(i,t):this.setCursor(t.hoverCursor||this.hoverCursor)}else return this.setCursor(this.defaultCursor),!1;return!0},_setCornerCursor:function(n,t){if(n in i)this.setCursor(this._getRotatedCornerCursor(n,t));else if("mtr"===n&&t.hasRotatingPoint)this.setCursor(this.rotationCursor);else return this.setCursor(this.defaultCursor),!1},_getRotatedCornerCursor:function(n,t){var r=Math.round(t.getAngle()%360/45);return 0>r&&(r+=8),r+=i[n],this.cursorMap[r%8]}})}(),function(){var n=Math.min,t=Math.max;fabric.util.object.extend(fabric.Canvas.prototype,{_shouldGroup:function(n,t){var i=this.getActiveObject();return n.shiftKey&&(this.getActiveGroup()||i&&i!==t)&&this.selection},_handleGrouping:function(n,t){(t!==this.getActiveGroup()||(t=this.findTarget(n,!0),t&&!t.isType("group")))&&(this.getActiveGroup()?this._updateActiveGroup(t,n):this._createActiveGroup(t,n),this._activeGroup&&this._activeGroup.saveCoords())},_updateActiveGroup:function(n,t){var i=this.getActiveGroup();if(i.contains(n)){if(i.removeWithUpdate(n),this._resetObjectTransform(i),n.set("active",!1),1===i.size()){this.discardActiveGroup(t);this.setActiveObject(i.item(0));return}}else i.addWithUpdate(n),this._resetObjectTransform(i);this.fire("selection:created",{target:i,e:t});i.set("active",!0)},_createActiveGroup:function(n,t){if(this._activeObject&&n!==this._activeObject){var i=this._createGroup(n);i.addWithUpdate();this.setActiveGroup(i);this._activeObject=null;this.fire("selection:created",{target:i,e:t})}n.set("active",!0)},_createGroup:function(n){var t=this.getObjects();return n=t.indexOf(this._activeObject)<t.indexOf(n)?[this._activeObject,n]:[n,this._activeObject],new fabric.Group(n,{canvas:this})},_groupSelectedObjects:function(n){var t=this._collectObjects();1===t.length?this.setActiveObject(t[0],n):1<t.length&&(t=new fabric.Group(t.reverse(),{canvas:this}),t.addWithUpdate(),this.setActiveGroup(t,n),t.saveCoords(),this.fire("selection:created",{target:t}),this.renderAll())},_collectObjects:function(){for(var s=[],i=this._groupSelector.ex,r=this._groupSelector.ey,u=i+this._groupSelector.left,f=r+this._groupSelector.top,e=new fabric.Point(n(i,u),n(r,f)),o=new fabric.Point(t(i,u),t(r,f)),r=i===u&&r===f,u=this._objects.length;u--&&!((i=this._objects[u])&&i.selectable&&i.visible&&(i.intersectsWithRect(e,o)||i.isContainedWithinRect(e,o)||i.containsPoint(e)||i.containsPoint(o))&&(i.set("active",!0),s.push(i),r)););return s},_maybeGroupObjects:function(n){this.selection&&this._groupSelector&&this._groupSelectedObjects(n);(n=this.getActiveGroup())&&(n.setObjectsCoords().setCoords(),n.isMoving=!1,this.setCursor(this.defaultCursor));this._currentTransform=this._groupSelector=null}})}();fabric.util.object.extend(fabric.StaticCanvas.prototype,{toDataURL:function(n){n||(n={});var t=n.format||"png",i=n.quality||1,r=n.multiplier||1;return n={left:n.left,top:n.top,width:n.width,height:n.height},1!==r?this.__toDataURLWithMultiplier(t,i,n,r):this.__toDataURL(t,i,n)},__toDataURL:function(n,t,i){this.renderAll(!0);var r=this.upperCanvasEl||this.lowerCanvasEl;return i=this.__getCroppedCanvas(r,i),"jpg"===n&&(n="jpeg"),n=fabric.StaticCanvas.supports("toDataURLWithQuality")?(i||r).toDataURL("image/"+n,t):(i||r).toDataURL("image/"+n),this.contextTop&&this.clearContext(this.contextTop),this.renderAll(),n},__getCroppedCanvas:function(n,t){var i,r;return("left"in t||"top"in t||"width"in t||"height"in t)&&(i=fabric.util.createCanvasElement(),r=i.getContext("2d"),i.width=t.width||this.width,i.height=t.height||this.height,r.drawImage(n,-t.left||0,-t.top||0)),i},__toDataURLWithMultiplier:function(n,t,i,r){var f=this.getWidth(),e=this.getHeight(),s=f*r,h=e*r,o=this.getActiveObject(),u=this.getActiveGroup(),c=this.contextTop||this.contextContainer;return 1<r&&this.setWidth(s).setHeight(h),c.scale(r,r),i.left&&(i.left*=r),i.top&&(i.top*=r),i.width?i.width*=r:1>r&&(i.width=s),i.height?i.height*=r:1>r&&(i.height=h),u?this._tempRemoveBordersControlsFromGroup(u):o&&this.deactivateAll&&this.deactivateAll(),this.renderAll(!0),n=this.__toDataURL(n,t,i),this.width=f,this.height=e,c.scale(1/r,1/r),this.setWidth(f).setHeight(e),u?this._restoreBordersControlsOnGroup(u):o&&this.setActiveObject&&this.setActiveObject(o),this.contextTop&&this.clearContext(this.contextTop),this.renderAll(),n},toDataURLWithMultiplier:function(n,t,i){return this.toDataURL({format:n,multiplier:t,quality:i})},_tempRemoveBordersControlsFromGroup:function(n){n.origHasControls=n.hasControls;n.origBorderColor=n.borderColor;n.hasControls=!0;n.borderColor="rgba(0,0,0,0)";n.forEachObject(function(n){n.origBorderColor=n.borderColor;n.borderColor="rgba(0,0,0,0)"})},_restoreBordersControlsOnGroup:function(n){n.hideControls=n.origHideControls;n.borderColor=n.origBorderColor;n.forEachObject(function(n){n.borderColor=n.origBorderColor;delete n.origBorderColor})}});fabric.util.object.extend(fabric.StaticCanvas.prototype,{loadFromDatalessJSON:function(n,t,i){return this.loadFromJSON(n,t,i)},loadFromJSON:function(n,t,i){var r,u;if(n)return r="string"==typeof n?JSON.parse(n):n,this.clear(),u=this,this._enlivenObjects(r.objects,function(){u._setBgOverlay(r,t)},i),this},_setBgOverlay:function(n,t){var u=this,i={backgroundColor:!1,overlayColor:!1,backgroundImage:!1,overlayImage:!1},r;n.backgroundImage||n.overlayImage||n.background||n.overlay?(r=function(){i.backgroundImage&&i.overlayImage&&i.backgroundColor&&i.overlayColor&&(u.renderAll(),t&&t())},this.__setBgOverlay("backgroundImage",n.backgroundImage,i,r),this.__setBgOverlay("overlayImage",n.overlayImage,i,r),this.__setBgOverlay("backgroundColor",n.background,i,r),this.__setBgOverlay("overlayColor",n.overlay,i,r),r()):t&&t()},__setBgOverlay:function(n,t,i,r){var u=this;t?"backgroundImage"===n||"overlayImage"===n?fabric.Image.fromObject(t,function(t){u[n]=t;i[n]=!0;r&&r()}):this["set"+fabric.util.string.capitalize(n,!0)](t,function(){i[n]=!0;r&&r()}):i[n]=!0},_enlivenObjects:function(n,t,i){var r=this,u;n&&0!==n.length?(u=this.renderOnAddRemove,this.renderOnAddRemove=!1,fabric.util.enlivenObjects(n,function(n){n.forEach(function(n,t){r.insertAt(n,t,!0)});r.renderOnAddRemove=u;t&&t()},null,i)):t&&t()},_toDataURL:function(n,t){this.clone(function(i){t(i.toDataURL(n))})},_toDataURLWithMultiplier:function(n,t,i){this.clone(function(r){i(r.toDataURLWithMultiplier(n,t))})},clone:function(n,t){var i=JSON.stringify(this.toJSON(t));this.cloneWithoutData(function(t){t.loadFromJSON(i,function(){n&&n(t)})})},cloneWithoutData:function(n){var i=fabric.document.createElement("canvas"),t;i.width=this.getWidth();i.height=this.getHeight();t=new fabric.Canvas(i);t.clipTo=this.clipTo;this.backgroundImage?(t.setBackgroundImage(this.backgroundImage.src,function(){t.renderAll();n&&n(t)}),t.backgroundImageOpacity=this.backgroundImageOpacity,t.backgroundImageStretch=this.backgroundImageStretch):n&&n(t)}}),function(){var n=fabric.util.degreesToRadians,t=fabric.util.radiansToDegrees;fabric.util.object.extend(fabric.Canvas.prototype,{__onTransformGesture:function(n,t){if(!this.isDrawingMode&&n.touches&&2===n.touches.length&&"gesture"===t.gesture){var i=this.findTarget(n);"undefined"!=typeof i&&(this.__gesturesParams={e:n,self:t,target:i},this.__gesturesRenderer());this.fire("touch:gesture",{target:i,e:n,self:t})}},__gesturesParams:null,__gesturesRenderer:function(){if(null!==this.__gesturesParams&&null!==this._currentTransform){var t=this.__gesturesParams.self,n=this._currentTransform,i=this.__gesturesParams.e;n.action="scale";n.originX=n.originY="center";this._setOriginToCenter(n.target);this._scaleObjectBy(t.scale,i);0!==t.rotation&&(n.action="rotate",this._rotateObjectByAngle(t.rotation,i));this.renderAll();n.action="drag"}},__onDrag:function(n,t){this.fire("touch:drag",{e:n,self:t})},__onOrientationChange:function(n,t){this.fire("touch:orientation",{e:n,self:t})},__onShake:function(n,t){this.fire("touch:shake",{e:n,self:t})},__onLongPress:function(n,t){this.fire("touch:longpress",{e:n,self:t})},_scaleObjectBy:function(n,t){var r=this._currentTransform,i=r.target,f=i.get("lockScalingX"),e=i.get("lockScalingY"),o,u;f&&e||(i._scaling=!0,o=i.translateToOriginPoint(i.getCenterPoint(),r.originX,r.originY),u=i._getNonTransformedDimensions(),this._setObjectScale(new fabric.Point(r.scaleX*n*u.x,r.scaleY*n*u.y),r,f,e,null,i.get("lockScalingFlip")),i.setPositionByOrigin(o,r.originX,r.originY),this._fire("scaling",i,t))},_rotateObjectByAngle:function(i,r){var u=this._currentTransform;u.target.get("lockRotation")||(u.target.angle=t(n(i)+u.theta),this._fire("rotating",u.target,r))}})}(),function(n){var t=n.fabric||(n.fabric={});n=t.util.object.extend;var i=t.util.toFixed,u=t.util.string.capitalize,r=t.util.degreesToRadians,f=t.StaticCanvas.supports("setLineDash");t.Object||(t.Object=t.util.createClass({type:"object",originX:"left",originY:"top",top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:!1,flipY:!1,opacity:1,angle:0,cornerSize:12,transparentCorners:!0,hoverCursor:null,padding:0,borderColor:"rgba(102,153,255,0.75)",cornerColor:"rgba(102,153,255,0.5)",centeredScaling:!1,centeredRotation:!0,fill:"rgb(0,0,0)",fillRule:"nonzero",globalCompositeOperation:"source-over",backgroundColor:"",stroke:null,strokeWidth:1,strokeDashArray:null,strokeLineCap:"butt",strokeLineJoin:"miter",strokeMiterLimit:10,shadow:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,transformMatrix:null,minScaleLimit:.01,selectable:!0,evented:!0,visible:!0,hasControls:!0,hasBorders:!0,hasRotatingPoint:!0,rotatingPointOffset:40,perPixelTargetFind:!1,includeDefaultValues:!0,clipTo:null,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockUniScaling:!1,lockScalingFlip:!1,stateProperties:"top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeLineJoin strokeMiterLimit angle opacity fill fillRule globalCompositeOperation shadow clipTo visible backgroundColor alignX alignY meetOrSlice".split(" "),initialize:function(n){n&&this.setOptions(n)},_initGradient:function(n){!n.fill||!n.fill.colorStops||n.fill instanceof t.Gradient||this.set("fill",new t.Gradient(n.fill));!n.stroke||!n.stroke.colorStops||n.stroke instanceof t.Gradient||this.set("stroke",new t.Gradient(n.stroke))},_initPattern:function(n){!n.fill||!n.fill.source||n.fill instanceof t.Pattern||this.set("fill",new t.Pattern(n.fill));!n.stroke||!n.stroke.source||n.stroke instanceof t.Pattern||this.set("stroke",new t.Pattern(n.stroke))},_initClipping:function(n){n.clipTo&&"string"==typeof n.clipTo&&(n=t.util.getFunctionBody(n.clipTo),"undefined"!=typeof n&&(this.clipTo=new Function("ctx",n)))},setOptions:function(n){for(var t in n)this.set(t,n[t]);this._initGradient(n);this._initPattern(n);this._initClipping(n)},transform:function(n,t){this.group&&this.canvas.preserveObjectStacking&&this.group===this.canvas._activeGroup&&this.group.transform(n);var i=t?this._getLeftTopCoords():this.getCenterPoint();n.translate(i.x,i.y);n.rotate(r(this.angle));n.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(n){var r=t.Object.NUM_FRACTION_DIGITS,r={type:this.type,originX:this.originX,originY:this.originY,left:i(this.left,r),top:i(this.top,r),width:i(this.width,r),height:i(this.height,r),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:i(this.strokeWidth,r),strokeDashArray:this.strokeDashArray?this.strokeDashArray.concat():this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeLineJoin:this.strokeLineJoin,strokeMiterLimit:i(this.strokeMiterLimit,r),scaleX:i(this.scaleX,r),scaleY:i(this.scaleY,r),angle:i(this.getAngle(),r),flipX:this.flipX,flipY:this.flipY,opacity:i(this.opacity,r),shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible,clipTo:this.clipTo&&String(this.clipTo),backgroundColor:this.backgroundColor,fillRule:this.fillRule,globalCompositeOperation:this.globalCompositeOperation,transformMatrix:this.transformMatrix?this.transformMatrix.concat():this.transformMatrix};return this.includeDefaultValues||(r=this._removeDefaultValues(r)),t.util.populateWithProperties(this,r,n),r},toDatalessObject:function(n){return this.toObject(n)},_removeDefaultValues:function(n){var i=t.util.getKlass(n.type).prototype;return i.stateProperties.forEach(function(t){n[t]===i[t]&&delete n[t];"[object Array]"===Object.prototype.toString.call(n[t])&&"[object Array]"===Object.prototype.toString.call(i[t])&&0===n[t].length&&0===i[t].length&&delete n[t]}),n},toString:function(){return"#<fabric."+u(this.type)+">"},get:function(n){return this[n]},_setObject:function(n){for(var t in n)this._set(t,n[t])},set:function(n,t){return"object"==typeof n?this._setObject(n):"function"==typeof t&&"clipTo"!==n?this._set(n,t(this.get(n))):this._set(n,t),this},_set:function(n,r){return("scaleX"===n||"scaleY"===n)&&(r=this._constrainScale(r)),"scaleX"===n&&0>r?(this.flipX=!this.flipX,r*=-1):"scaleY"===n&&0>r?(this.flipY=!this.flipY,r*=-1):"width"===n||"height"===n?this.minScaleLimit=i(Math.min(.1,1/Math.max(this.width,this.height)),2):"shadow"!==n||!r||r instanceof t.Shadow||(r=new t.Shadow(r)),this[n]=r,this},setOnGroup:function(){},toggle:function(n){var t=this.get(n);return"boolean"==typeof t&&this.set(n,!t),this},setSourcePath:function(n){return this.sourcePath=n,this},getViewportTransform:function(){return this.canvas&&this.canvas.viewportTransform?this.canvas.viewportTransform:[1,0,0,1,0,0]},render:function(n,i){(0!==this.width||0!==this.height)&&this.visible&&(n.save(),this._setupCompositeOperation(n),i||this.transform(n),this._setStrokeStyles(n),this._setFillStyles(n),this.transformMatrix&&n.transform.apply(n,this.transformMatrix),this._setOpacity(n),this._setShadow(n),this.clipTo&&t.util.clipContext(this,n),this._render(n,i),this.clipTo&&n.restore(),n.restore())},_setOpacity:function(n){this.group&&this.group._setOpacity(n);n.globalAlpha*=this.opacity},_setStrokeStyles:function(n){this.stroke&&(n.lineWidth=this.strokeWidth,n.lineCap=this.strokeLineCap,n.lineJoin=this.strokeLineJoin,n.miterLimit=this.strokeMiterLimit,n.strokeStyle=this.stroke.toLive?this.stroke.toLive(n,this):this.stroke)},_setFillStyles:function(n){this.fill&&(n.fillStyle=this.fill.toLive?this.fill.toLive(n,this):this.fill)},_renderControls:function(n,i){var f,u;this.active&&!i&&(f=this.getViewportTransform(),n.save(),this.group&&(u=t.util.transformPoint(this.group.getCenterPoint(),f),n.translate(u.x,u.y),n.rotate(r(this.group.angle))),u=t.util.transformPoint(this.getCenterPoint(),f,null!=this.group),this.group&&(u.x*=this.group.scaleX,u.y*=this.group.scaleY),n.translate(u.x,u.y),n.rotate(r(this.angle)),this.drawBorders(n),this.drawControls(n),n.restore())},_setShadow:function(n){if(this.shadow){var t=this.canvas&&this.canvas.viewportTransform[0]||1,i=this.canvas&&this.canvas.viewportTransform[3]||1;n.shadowColor=this.shadow.color;n.shadowBlur=this.shadow.blur*(t+i)*(this.scaleX+this.scaleY)/4;n.shadowOffsetX=this.shadow.offsetX*t*this.scaleX;n.shadowOffsetY=this.shadow.offsetY*i*this.scaleY}},_removeShadow:function(n){this.shadow&&(n.shadowColor="",n.shadowBlur=n.shadowOffsetX=n.shadowOffsetY=0)},_renderFill:function(n){this.fill&&(n.save(),this.fill.gradientTransform&&n.transform.apply(n,this.fill.gradientTransform),this.fill.toLive&&n.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0),"evenodd"===this.fillRule?n.fill("evenodd"):n.fill(),n.restore())},_renderStroke:function(n){this.stroke&&0!==this.strokeWidth&&(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(n),n.save(),this.strokeDashArray?(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),f?(n.setLineDash(this.strokeDashArray),this._stroke&&this._stroke(n)):this._renderDashedStroke&&this._renderDashedStroke(n),n.stroke()):(this.stroke.gradientTransform&&n.transform.apply(n,this.stroke.gradientTransform),this._stroke?this._stroke(n):n.stroke()),n.restore())},clone:function(n,i){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(i),n):new t.Object(this.toObject(i))},cloneAsImage:function(n){var i=this.toDataURL();return t.util.loadImage(i,function(i){n&&n(new t.Image(i))}),this},toDataURL:function(n){var i,r,u;return n||(n={}),i=t.util.createCanvasElement(),r=this.getBoundingRect(),i.width=r.width,i.height=r.height,t.util.wrapElement(i,"div"),r=new t.StaticCanvas(i),"jpg"===n.format&&(n.format="jpeg"),"jpeg"===n.format&&(r.backgroundColor="#fff"),u={active:this.get("active"),left:this.getLeft(),top:this.getTop()},this.set("active",!1),this.setPositionByOrigin(new t.Point(i.width/2,i.height/2),"center","center"),i=this.canvas,r.add(this),n=r.toDataURL(n),this.set(u).setCoords(),this.canvas=i,r.dispose(),n},isType:function(n){return this.type===n},complexity:function(){return 0},toJSON:function(n){return this.toObject(n)},setGradient:function(n,i){var r,u,f;i||(i={});r={colorStops:[]};r.type=i.type||(i.r1||i.r2?"radial":"linear");r.coords={x1:i.x1,y1:i.y1,x2:i.x2,y2:i.y2};(i.r1||i.r2)&&(r.coords.r1=i.r1,r.coords.r2=i.r2);i.gradientTransform&&(r.gradientTransform=i.gradientTransform);for(u in i.colorStops)f=new t.Color(i.colorStops[u]),r.colorStops.push({offset:u,color:f.toRgb(),opacity:f.getAlpha()});return this.set(n,t.Gradient.forObject(this,r))},setPatternFill:function(n){return this.set("fill",new t.Pattern(n))},setShadow:function(n){return this.set("shadow",n?new t.Shadow(n):null)},setColor:function(n){return this.set("fill",n),this},setAngle:function(n){var t=("center"!==this.originX||"center"!==this.originY)&&this.centeredRotation;return t&&this._setOriginToCenter(),this.set("angle",n),t&&this._resetOrigin(),this},centerH:function(){return this.canvas.centerObjectH(this),this},centerV:function(){return this.canvas.centerObjectV(this),this},center:function(){return this.canvas.centerObject(this),this},remove:function(){return this.canvas.remove(this),this},getLocalPointer:function(n,i){i=i||this.canvas.getPointer(n);var r=new t.Point(i.x,i.y),u=this._getLeftTopCoords();return this.angle&&(r=t.util.rotatePoint(r,u,t.util.degreesToRadians(-this.angle))),{x:r.x-u.x,y:r.y-u.y}},_setupCompositeOperation:function(n){this.globalCompositeOperation&&(n.globalCompositeOperation=this.globalCompositeOperation)}}),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)}("undefined"!=typeof exports?exports:this),function(){var t=fabric.util.degreesToRadians,n={left:-.5,center:0,right:.5},i={top:-.5,center:0,bottom:.5};fabric.util.object.extend(fabric.Object.prototype,{translateToGivenOrigin:function(t,r,u,f,e){var s=t.x,o=t.y;return r=n[f]-n[r],u=i[e]-i[u],(r||u)&&(o=this._getTransformedDimensions(),s=t.x+r*o.x,o=t.y+u*o.y),new fabric.Point(s,o)},translateToCenterPoint:function(n,i,r){return i=this.translateToGivenOrigin(n,i,r,"center","center"),this.angle?fabric.util.rotatePoint(i,n,t(this.angle)):i},translateToOriginPoint:function(n,i,r){return i=this.translateToGivenOrigin(n,"center","center",i,r),this.angle?fabric.util.rotatePoint(i,n,t(this.angle)):i},getCenterPoint:function(){var n=new fabric.Point(this.left,this.top);return this.translateToCenterPoint(n,this.originX,this.originY)},getPointByOrigin:function(n,t){var i=this.getCenterPoint();return this.translateToOriginPoint(i,n,t)},toLocalPoint:function(n,i,r){var u=this.getCenterPoint();return i=i&&r?this.translateToGivenOrigin(u,"center","center",i,r):new fabric.Point(this.left,this.top),n=new fabric.Point(n.x,n.y),this.angle&&(n=fabric.util.rotatePoint(n,u,-t(this.angle))),n.subtractEquals(i)},setPositionByOrigin:function(n,t,i){n=this.translateToCenterPoint(n,t,i);n=this.translateToOriginPoint(n,this.originX,this.originY);this.set("left",n.x);this.set("top",n.y)},adjustPosition:function(i){var r=t(this.angle),u=this.getWidth(),f=Math.sin(r)*u;this.left+=Math.cos(r)*u*(n[i]-n[this.originX]);this.top+=f*(n[i]-n[this.originX]);this.setCoords();this.originX=i},_setOriginToCenter:function(){this._originalOriginX=this.originX;this._originalOriginY=this.originY;var n=this.getCenterPoint();this.originY=this.originX="center";this.left=n.x;this.top=n.y},_resetOrigin:function(){var n=this.translateToOriginPoint(this.getCenterPoint(),this._originalOriginX,this._originalOriginY);this.originX=this._originalOriginX;this.originY=this._originalOriginY;this.left=n.x;this.top=n.y;this._originalOriginY=this._originalOriginX=null},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","top")}})}(),function(){function n(n){return[new fabric.Point(n.tl.x,n.tl.y),new fabric.Point(n.tr.x,n.tr.y),new fabric.Point(n.br.x,n.br.y),new fabric.Point(n.bl.x,n.bl.y)]}var t=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{oCoords:null,intersectsWithRect:function(t,i){var r=n(this.oCoords);return"Intersection"===fabric.Intersection.intersectPolygonRectangle(r,t,i).status},intersectsWithObject:function(t){return"Intersection"===fabric.Intersection.intersectPolygonPolygon(n(this.oCoords),n(t.oCoords)).status},isContainedWithinObject:function(n){var t=n.getBoundingRect();return n=new fabric.Point(t.left,t.top),t=new fabric.Point(t.left+t.width,t.top+t.height),this.isContainedWithinRect(n,t)},isContainedWithinRect:function(n,t){var i=this.getBoundingRect();return i.left>=n.x&&i.left+i.width<=t.x&&i.top>=n.y&&i.top+i.height<=t.y},containsPoint:function(n){var t=this._getImageLines(this.oCoords);return n=this._findCrossPoints(n,t),0!==n&&1==n%2},_getImageLines:function(n){return{topline:{o:n.tl,d:n.tr},rightline:{o:n.tr,d:n.br},bottomline:{o:n.br,d:n.bl},leftline:{o:n.bl,d:n.tl}}},_findCrossPoints:function(n,t){var r,f,i,u=0,e;for(e in t)if(i=t[e],!(i.o.y<n.y&&i.d.y<n.y||i.o.y>=n.y&&i.d.y>=n.y)&&(i.o.x===i.d.x&&i.o.x>=n.x?r=i.o.x:(r=(i.d.y-i.o.y)/(i.d.x-i.o.x),f=n.y-0*n.x,i=i.o.y-r*i.o.x,r=-(f-i)/(0-r)),r>=n.x&&(u+=1),2===u))break;return u},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){this.oCoords||this.setCoords();var n=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],i=fabric.util.array.min(n),n=fabric.util.array.max(n),n=Math.abs(i-n),t=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],r=fabric.util.array.min(t),t=fabric.util.array.max(t);return{left:i,top:r,width:n,height:Math.abs(r-t)}},getWidth:function(){return this.width*this.scaleX},getHeight:function(){return this.height*this.scaleY},_constrainScale:function(n){return Math.abs(n)<this.minScaleLimit?0>n?-this.minScaleLimit:this.minScaleLimit:n},scale:function(n){return n=this._constrainScale(n),0>n&&(this.flipX=!this.flipX,this.flipY=!this.flipY,n*=-1),this.scaleY=this.scaleX=n,this.setCoords(),this},scaleToWidth:function(n){var t=this.getBoundingRect().width/this.getWidth();return this.scale(n/this.width/t)},scaleToHeight:function(n){var t=this.getBoundingRect().height/this.getHeight();return this.scale(n/this.height/t)},setCoords:function(){var u=t(this.angle),r=this.getViewportTransform(),e=this._calculateCurrentDimensions(),n=e.x,f=e.y;0>n&&(n=Math.abs(n));var e=Math.sin(u),h=Math.cos(u),i=0<n?Math.atan(f/n):0,s=n/Math.cos(i)/2,o=Math.cos(i+u)*s,u=Math.sin(i+u)*s,i=fabric.util.transformPoint(this.getCenterPoint(),r),r=new fabric.Point(i.x-o,i.y-u),n=new fabric.Point(r.x+n*h,r.y+n*e),f=new fabric.Point(r.x-f*e,r.y+f*h),o=new fabric.Point(i.x+o,i.y+u),u=new fabric.Point((r.x+f.x)/2,(r.y+f.y)/2),i=new fabric.Point((n.x+r.x)/2,(n.y+r.y)/2),s=new fabric.Point((o.x+n.x)/2,(o.y+n.y)/2),c=new fabric.Point((o.x+f.x)/2,(o.y+f.y)/2),e=new fabric.Point(i.x+e*this.rotatingPointOffset,i.y-h*this.rotatingPointOffset);return this.oCoords={tl:r,tr:n,br:o,bl:f,ml:u,mt:i,mr:s,mb:c,mtr:e},this._setCornerCoords&&this._setCornerCoords(),this},_calcDimensionsTransformMatrix:function(){return[this.scaleX,0,0,this.scaleY,0,0]}})}();fabric.util.object.extend(fabric.Object.prototype,{sendToBack:function(){return this.group?fabric.StaticCanvas.prototype.sendToBack.call(this.group,this):this.canvas.sendToBack(this),this},bringToFront:function(){return this.group?fabric.StaticCanvas.prototype.bringToFront.call(this.group,this):this.canvas.bringToFront(this),this},sendBackwards:function(n){return this.group?fabric.StaticCanvas.prototype.sendBackwards.call(this.group,this,n):this.canvas.sendBackwards(this,n),this},bringForward:function(n){return this.group?fabric.StaticCanvas.prototype.bringForward.call(this.group,this,n):this.canvas.bringForward(this,n),this},moveTo:function(n){return this.group?fabric.StaticCanvas.prototype.moveTo.call(this.group,this,n):this.canvas.moveTo(this,n),this}});fabric.util.object.extend(fabric.Object.prototype,{getSvgStyles:function(){var n=this.fill?this.fill.toLive?"url(#SVGID_"+this.fill.id+")":this.fill:"none",t=this.fillRule,i=this.stroke?this.stroke.toLive?"url(#SVGID_"+this.stroke.id+")":this.stroke:"none",r=this.strokeWidth?this.strokeWidth:"0",u=this.strokeDashArray?this.strokeDashArray.join(" "):"none",f=this.strokeLineCap?this.strokeLineCap:"butt",e=this.strokeLineJoin?this.strokeLineJoin:"miter",o=this.strokeMiterLimit?this.strokeMiterLimit:"4",s="undefined"!=typeof this.opacity?this.opacity:"1",h=this.visible?"":" visibility: hidden;",c=this.getSvgFilter();return["stroke: ",i,"; stroke-width: ",r,"; stroke-dasharray: ",u,"; stroke-linecap: ",f,"; stroke-linejoin: ",e,"; stroke-miterlimit: ",o,"; fill: ",n,"; fill-rule: ",t,"; opacity: ",s,";",c,h].join("")},getSvgFilter:function(){return this.shadow?"filter: url(#SVGID_"+this.shadow.id+");":""},getSvgTransform:function(){if(this.group&&"path-group"===this.group.type)return"";var t=fabric.util.toFixed,r=this.getAngle(),n=!this.canvas||this.canvas.svgViewportTransformation?this.getViewportTransform():[1,0,0,1,0,0],u=fabric.util.transformPoint(this.getCenterPoint(),n),i=fabric.Object.NUM_FRACTION_DIGITS,u="path-group"===this.type?"":"translate("+t(u.x,i)+" "+t(u.y,i)+")",r=0!==r?" rotate("+t(r,i)+")":"",t=1===this.scaleX&&1===this.scaleY&&1===n[0]&&1===n[3]?"":" scale("+t(this.scaleX*n[0],i)+" "+t(this.scaleY*n[3],i)+")",i="path-group"===this.type?this.width*n[0]:0,n="path-group"===this.type?this.height*n[3]:0;return[u,r,t,this.flipX?" matrix(-1 0 0 1 "+i+" 0) ":"",this.flipY?" matrix(1 0 0 -1 0 "+n+")":""].join("")},getSvgTransformMatrix:function(){return this.transformMatrix?" matrix("+this.transformMatrix.join(" ")+") ":""},_createBaseSVGMarkup:function(){var n=[];return this.fill&&this.fill.toLive&&n.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&n.push(this.stroke.toSVG(this,!1)),this.shadow&&n.push(this.shadow.toSVG(this)),n}});fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(n){return this.get(n)!==this.originalState[n]},this)},saveState:function(n){return this.stateProperties.forEach(function(n){this.originalState[n]=this.get(n)},this),n&&n.stateProperties&&n.stateProperties.forEach(function(n){this.originalState[n]=this.get(n)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var n=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{_controlsVisibility:null,_findTargetCorner:function(n){var r,i,t;if(!this.hasControls||!this.active)return!1;r=n.x;n=n.y;this.__corner=0;for(t in this.oCoords)if(this.isControlVisible(t)&&("mtr"!==t||this.hasRotatingPoint)&&(!this.get("lockUniScaling")||"mt"!==t&&"mr"!==t&&"mb"!==t&&"ml"!==t)&&(i=this._getImageLines(this.oCoords[t].corner),i=this._findCrossPoints({x:r,y:n},i),0!==i&&1==i%2))return this.__corner=t;return!1},_setCornerCoords:function(){var u=this.oCoords,t=n(45-this.angle),i=.707106*this.cornerSize,f=i*Math.cos(t),t=i*Math.sin(t),r,e;for(e in u)i=u[e].x,r=u[e].y,u[e].corner={tl:{x:i-t,y:r-f},tr:{x:i+f,y:r-t},bl:{x:i-f,y:r+t},br:{x:i+t,y:r+f}}},_getNonTransformedDimensions:function(){var n=this.strokeWidth,t=this.width,i=this.height,r=!0,u=!0;return"line"===this.type&&"butt"===this.strokeLineCap&&(u=t,r=i),u&&(i+=0>i?-n:n),r&&(t+=0>t?-n:n),{x:t,y:i}},_getTransformedDimensions:function(n){n||(n=this._getNonTransformedDimensions());var t=this._calcDimensionsTransformMatrix();return fabric.util.transformPoint(n,t,!0)},_calculateCurrentDimensions:function(){var i=this.getViewportTransform(),n=this._getTransformedDimensions(),t=n.x,n=n.y,t=t+2*this.padding,n=n+2*this.padding;return fabric.util.transformPoint(new fabric.Point(t,n),i,!0)},drawBorders:function(n){if(!this.hasBorders)return this;n.save();n.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1;n.strokeStyle=this.borderColor;n.lineWidth=1/this.borderScaleFactor;n.setLineDash([4,4]);var t=this._calculateCurrentDimensions(),i=t.x,t=t.y;return this.group&&(i*=this.group.scaleX,t*=this.group.scaleY),n.strokeRect(~~-(i/2)-.5,~~-(t/2)-.5,~~i+1,~~t+1),this.hasRotatingPoint&&this.isControlVisible("mtr")&&!this.get("lockRotation")&&this.hasControls&&(i=-t/2,n.setLineDash([4,4]),n.beginPath(),n.moveTo(0,i),n.lineTo(0,i-this.rotatingPointOffset),n.stroke()),n.restore(),this},drawControls:function(n){if(!this.hasControls)return this;var i=this._calculateCurrentDimensions(),f=i.x,i=i.y,t=this.cornerSize/2,r=-(f/2)-t,t=-(i/2)-t,u=this.transparentCorners?"strokeRect":"fillRect";return n.save(),n.lineWidth=1/this.borderScaleFactor,n.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,n.strokeStyle=n.fillStyle=this.cornerColor,this._drawControl("tl",n,u,r,t),this._drawControl("tr",n,u,r+f,t),this._drawControl("bl",n,u,r,t+i),this._drawControl("br",n,u,r+f,t+i),this.get("lockUniScaling")||(this._drawControl("mt",n,u,r+f/2,t),this._drawControl("mb",n,u,r+f/2,t+i),this._drawControl("mr",n,u,r+f,t+i/2),this._drawControl("ml",n,u,r,t+i/2)),this.hasRotatingPoint&&this._drawControl("mtr",n,u,r+f/2,t-this.rotatingPointOffset),n.restore(),this},_drawControl:function(n,t,i,r,u){this.isControlVisible(n)&&(n=this.cornerSize,"undefined"!=typeof G_vmlCanvasManager||this.transparentCorners||t.clearRect(r,u,n,n),t[i](r,u,n,n))},isControlVisible:function(n){return this._getControlsVisibility()[n]},setControlVisible:function(n,t){return this._getControlsVisibility()[n]=t,this},setControlsVisibility:function(n){n||(n={});for(var t in n)this.setControlVisible(t,n[t]);return this},_getControlsVisibility:function(){return this._controlsVisibility||(this._controlsVisibility={tl:!0,tr:!0,br:!0,bl:!0,ml:!0,mt:!0,mr:!0,mb:!0,mtr:!0}),this._controlsVisibility}})}();fabric.util.object.extend(fabric.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(n,t){t=t||{};var i=function(){},r=t.onComplete||i,u=t.onChange||i,f=this;return fabric.util.animate({startValue:n.get("left"),endValue:this.getCenter().left,duration:this.FX_DURATION,onChange:function(t){n.set("left",t);f.renderAll();u()},onComplete:function(){n.setCoords();r()}}),this},fxCenterObjectV:function(n,t){t=t||{};var i=function(){},r=t.onComplete||i,u=t.onChange||i,f=this;return fabric.util.animate({startValue:n.get("top"),endValue:this.getCenter().top,duration:this.FX_DURATION,onChange:function(t){n.set("top",t);f.renderAll();u()},onComplete:function(){n.setCoords();r()}}),this},fxRemove:function(n,t){t=t||{};var i=function(){},u=t.onComplete||i,f=t.onChange||i,r=this;return fabric.util.animate({startValue:n.get("opacity"),endValue:0,duration:this.FX_DURATION,onStart:function(){n.set("active",!1)},onChange:function(t){n.set("opacity",t);r.renderAll();f()},onComplete:function(){r.remove(n);u()}}),this}});fabric.util.object.extend(fabric.Object.prototype,{animate:function(){var i,n,u,t,r;if(arguments[0]&&"object"==typeof arguments[0]){i=[];for(n in arguments[0])i.push(n);for(t=0,r=i.length;t<r;t++)n=i[t],u=t!==r-1,this._animate(n,arguments[0][n],arguments[1],u)}else this._animate.apply(this,arguments);return this},_animate:function(n,t,i,r){var f=this,u,e;t=t.toString();i=i?fabric.util.object.clone(i):{};~n.indexOf(".")&&(u=n.split("."));e=u?this.get(u[0])[u[1]]:this.get(n);"from"in i||(i.from=e);t=~t.indexOf("=")?e+parseFloat(t.replace("=","")):parseFloat(t);fabric.util.animate({startValue:i.from,endValue:t,byValue:i.by,easing:i.easing,duration:i.duration,abort:i.abort&&function(){return i.abort.call(f)},onChange:function(t){u?f[u[0]][u[1]]=t:f.set(n,t);r||i.onChange&&i.onChange()},onComplete:function(){r||(f.setCoords(),i.onComplete&&i.onComplete())}})}}),function(n){function i(n,t){var u=n.origin,i=n.axis1,r=n.axis2,f=n.dimension,e=t.nearest,o=t.center,s=t.farthest;return function(){switch(this.get(u)){case e:return Math.min(this.get(i),this.get(r));case o:return Math.min(this.get(i),this.get(r))+.5*this.get(f);case s:return Math.max(this.get(i),this.get(r))}}}var t=n.fabric||(n.fabric={}),r=t.util.object.extend,u={x1:1,x2:1,y1:1,y2:1},f=t.StaticCanvas.supports("setLineDash");t.Line?t.warn("fabric.Line is already defined"):(t.Line=t.util.createClass(t.Object,{type:"line",x1:0,y1:0,x2:0,y2:0,initialize:function(n,t){t=t||{};n||(n=[0,0,0,0]);this.callSuper("initialize",t);this.set("x1",n[0]);this.set("y1",n[1]);this.set("x2",n[2]);this.set("y2",n[3]);this._setWidthHeight(t)},_setWidthHeight:function(n){n||(n={});this.width=Math.abs(this.x2-this.x1);this.height=Math.abs(this.y2-this.y1);this.left="left"in n?n.left:this._getLeftToOriginX();this.top="top"in n?n.top:this._getTopToOriginY()},_set:function(n,t){return this.callSuper("_set",n,t),"undefined"!=typeof u[n]&&this._setWidthHeight(),this},_getLeftToOriginX:i({origin:"originX",axis1:"x1",axis2:"x2",dimension:"width"},{nearest:"left",center:"center",farthest:"right"}),_getTopToOriginY:i({origin:"originY",axis1:"y1",axis2:"y2",dimension:"height"},{nearest:"top",center:"center",farthest:"bottom"}),_render:function(n,t){if(n.beginPath(),t){var i=this.getCenterPoint();n.translate(i.x-this.strokeWidth/2,i.y-this.strokeWidth/2)}(!this.strokeDashArray||this.strokeDashArray&&f)&&(i=this.calcLinePoints(),n.moveTo(i.x1,i.y1),n.lineTo(i.x2,i.y2));n.lineWidth=this.strokeWidth;i=n.strokeStyle;n.strokeStyle=this.stroke||n.fillStyle;this.stroke&&this._renderStroke(n);n.strokeStyle=i},_renderDashedStroke:function(n){var i=this.calcLinePoints();n.beginPath();t.util.drawDashedLine(n,i.x1,i.y1,i.x2,i.y2,this.strokeDashArray);n.closePath()},toObject:function(n){return r(this.callSuper("toObject",n),this.calcLinePoints())},calcLinePoints:function(){var n=this.x1<=this.x2?-1:1,t=this.y1<=this.y2?-1:1;return{x1:n*this.width*.5,x2:n*this.width*-.5,y1:t*this.height*.5,y2:t*this.height*-.5}},toSVG:function(n){var i=this._createBaseSVGMarkup(),t={x1:this.x1,x2:this.x2,y1:this.y1,y2:this.y2};return this.group&&"path-group"===this.group.type||(t=this.calcLinePoints()),i.push("<line ",'x1="',t.x1,'" y1="',t.y1,'" x2="',t.x2,'" y2="',t.y2,'" style="',this.getSvgStyles(),'" transform="',this.getSvgTransform(),this.getSvgTransformMatrix(),'"/>\n'),n?n(i.join("")):i.join("")},complexity:function(){return 1}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat(["x1","y1","x2","y2"]),t.Line.fromElement=function(n,i){var u=t.parseAttributes(n,t.Line.ATTRIBUTE_NAMES);return new t.Line([u.x1||0,u.y1||0,u.x2||0,u.y2||0],r(u,i))},t.Line.fromObject=function(n){return new t.Line([n.x1,n.y1,n.x2,n.y2],n)})}("undefined"!=typeof exports?exports:this),function(n){var t=n.fabric||(n.fabric={}),i=Math.PI,r=t.util.object.extend;t.Circle?t.warn("fabric.Circle is already defined."):(t.Circle=t.util.createClass(t.Object,{type:"circle",radius:0,startAngle:0,endAngle:2*i,initialize:function(n){n=n||{};this.callSuper("initialize",n);this.set("radius",n.radius||0);this.startAngle=n.startAngle||this.startAngle;this.endAngle=n.endAngle||this.endAngle},_set:function(n,t){return this.callSuper("_set",n,t),"radius"===n&&this.setRadius(t),this},toObject:function(n){return r(this.callSuper("toObject",n),{radius:this.get("radius"),startAngle:this.startAngle,endAngle:this.endAngle})},toSVG:function(n){var t=this._createBaseSVGMarkup(),r=0,u=0,f=(this.endAngle-this.startAngle)%(2*i);return 0===f?(this.group&&"path-group"===this.group.type&&(r=this.left+this.radius,u=this.top+this.radius),t.push("<circle ",'cx="'+r+'" cy="'+u+'" ','r="',this.radius,'" style="',this.getSvgStyles(),'" transform="',this.getSvgTransform()," ",this.getSvgTransformMatrix(),'"/>\n')):t.push('<path d="M '+Math.cos(this.startAngle)*this.radius+" "+Math.sin(this.startAngle)*this.radius," A "+this.radius+" "+this.radius," 0 ",+(f>i?1:0)+" 1"," "+Math.cos(this.endAngle)*this.radius+" "+Math.sin(this.endAngle)*this.radius,'" style="',this.getSvgStyles(),'" transform="',this.getSvgTransform()," ",this.getSvgTransformMatrix(),'"/>\n'),n?n(t.join("")):t.join("")},_render:function(n,t){n.beginPath();n.arc(t?this.left+this.radius:0,t?this.top+this.radius:0,this.radius,this.startAngle,this.endAngle,!1);this._renderFill(n);this._renderStroke(n)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(n){return this.radius=n,this.set("width",2*n).set("height",2*n)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat(["cx","cy","r"]),t.Circle.fromElement=function(n,i){i||(i={});var u=t.parseAttributes(n,t.Circle.ATTRIBUTE_NAMES);if(!("radius"in u&&0<=u.radius))throw Error("value of `r` attribute is required and can not be negative");return u.left=u.left||0,u.top=u.top||0,u=new t.Circle(r(u,i)),u.left-=u.radius,u.top-=u.radius,u},t.Circle.fromObject=function(n){return new t.Circle(n)})}("undefined"!=typeof exports?exports:this),function(n){var t=n.fabric||(n.fabric={});t.Triangle?t.warn("fabric.Triangle is already defined"):(t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(n){n=n||{};this.callSuper("initialize",n);this.set("width",n.width||100).set("height",n.height||100)},_render:function(n){var i=this.width/2,t=this.height/2;n.beginPath();n.moveTo(-i,t);n.lineTo(0,-t);n.lineTo(i,t);n.closePath();this._renderFill(n);this._renderStroke(n)},_renderDashedStroke:function(n){var r=this.width/2,i=this.height/2;n.beginPath();t.util.drawDashedLine(n,-r,i,0,-i,this.strokeDashArray);t.util.drawDashedLine(n,0,-i,r,i,this.strokeDashArray);t.util.drawDashedLine(n,r,i,-r,i,this.strokeDashArray);n.closePath()},toSVG:function(n){var i=this._createBaseSVGMarkup(),t=this.width/2,r=this.height/2,t=[-t+" "+r,"0 "+-r,t+" "+r].join();return i.push("<polygon ",'points="',t,'" style="',this.getSvgStyles(),'" transform="',this.getSvgTransform(),'"/>'),n?n(i.join("")):i.join("")},complexity:function(){return 1}}),t.Triangle.fromObject=function(n){return new t.Triangle(n)})}("undefined"!=typeof exports?exports:this),function(n){var t=n.fabric||(n.fabric={}),r=2*Math.PI,i=t.util.object.extend;t.Ellipse?t.warn("fabric.Ellipse is already defined."):(t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,initialize:function(n){n=n||{};this.callSuper("initialize",n);this.set("rx",n.rx||0);this.set("ry",n.ry||0)},_set:function(n,t){this.callSuper("_set",n,t);switch(n){case"rx":this.rx=t;this.set("width",2*t);break;case"ry":this.ry=t;this.set("height",2*t)}return this},getRx:function(){return this.get("rx")*this.get("scaleX")},getRy:function(){return this.get("ry")*this.get("scaleY")},toObject:function(n){return i(this.callSuper("toObject",n),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(n){var t=this._createBaseSVGMarkup(),i=0,r=0;return this.group&&"path-group"===this.group.type&&(i=this.left+this.rx,r=this.top+this.ry),t.push("<ellipse ",'cx="',i,'" cy="',r,'" ','rx="',this.rx,'" ry="',this.ry,'" style="',this.getSvgStyles(),'" transform="',this.getSvgTransform(),this.getSvgTransformMatrix(),'"/>\n'),n?n(t.join("")):t.join("")},_render:function(n,t){n.beginPath();n.save();n.transform(1,0,0,this.ry/this.rx,0,0);n.arc(t?this.left+this.rx:0,t?(this.top+this.ry)*this.rx/this.ry:0,this.rx,0,r,!1);n.restore();this._renderFill(n);this._renderStroke(n)},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat(["cx","cy","rx","ry"]),t.Ellipse.fromElement=function(n,r){r||(r={});var u=t.parseAttributes(n,t.Ellipse.ATTRIBUTE_NAMES);return u.left=u.left||0,u.top=u.top||0,u=new t.Ellipse(i(u,r)),u.top-=u.ry,u.left-=u.rx,u},t.Ellipse.fromObject=function(n){return new t.Ellipse(n)})}("undefined"!=typeof exports?exports:this),function(n){var t=n.fabric||(n.fabric={}),i=t.util.object.extend;t.Rect?t.warn("fabric.Rect is already defined"):(n=t.Object.prototype.stateProperties.concat(),n.push("rx","ry","x","y"),t.Rect=t.util.createClass(t.Object,{stateProperties:n,type:"rect",rx:0,ry:0,strokeDashArray:null,initialize:function(n){n=n||{};this.callSuper("initialize",n);this._initRxRy()},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(n,t){if(1===this.width&&1===this.height)n.fillRect(0,0,1,1);else{var u=this.rx?Math.min(this.rx,this.width/2):0,f=this.ry?Math.min(this.ry,this.height/2):0,e=this.width,o=this.height,i=t?this.left:-this.width/2,r=t?this.top:-this.height/2,s=0!==u||0!==f;n.beginPath();n.moveTo(i+u,r);n.lineTo(i+e-u,r);s&&n.bezierCurveTo(i+e-.4477152502*u,r,i+e,r+.4477152502*f,i+e,r+f);n.lineTo(i+e,r+o-f);s&&n.bezierCurveTo(i+e,r+o-.4477152502*f,i+e-.4477152502*u,r+o,i+e-u,r+o);n.lineTo(i+u,r+o);s&&n.bezierCurveTo(i+.4477152502*u,r+o,i,r+o-.4477152502*f,i,r+o-f);n.lineTo(i,r+f);s&&n.bezierCurveTo(i,r+.4477152502*f,i+.4477152502*u,r,i+u,r);n.closePath();this._renderFill(n);this._renderStroke(n)}},_renderDashedStroke:function(n){var i=-this.width/2,r=-this.height/2,u=this.width,f=this.height;n.beginPath();t.util.drawDashedLine(n,i,r,i+u,r,this.strokeDashArray);t.util.drawDashedLine(n,i+u,r,i+u,r+f,this.strokeDashArray);t.util.drawDashedLine(n,i+u,r+f,i,r+f,this.strokeDashArray);t.util.drawDashedLine(n,i,r+f,i,r,this.strokeDashArray);n.closePath()},toObject:function(n){return n=i(this.callSuper("toObject",n),{rx:this.get("rx")||0,ry:this.get("ry")||0}),this.includeDefaultValues||this._removeDefaultValues(n),n},toSVG:function(n){var t=this._createBaseSVGMarkup(),i=this.left,r=this.top;return this.group&&"path-group"===this.group.type||(i=-this.width/2,r=-this.height/2),t.push("<rect ",'x="',i,'" y="',r,'" rx="',this.get("rx"),'" ry="',this.get("ry"),'" width="',this.width,'" height="',this.height,'" style="',this.getSvgStyles(),'" transform="',this.getSvgTransform(),this.getSvgTransformMatrix(),'"/>\n'),n?n(t.join("")):t.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(n,r){if(!n)return null;r=r||{};var u=t.parseAttributes(n,t.Rect.ATTRIBUTE_NAMES);return u.left=u.left||0,u.top=u.top||0,u=new t.Rect(i(r?t.util.object.clone(r):{},u)),u.visible=0<u.width&&0<u.height,u},t.Rect.fromObject=function(n){return new t.Rect(n)})}("undefined"!=typeof exports?exports:this),function(n){var t=n.fabric||(n.fabric={});t.Polyline?t.warn("fabric.Polyline is already defined"):(t.Polyline=t.util.createClass(t.Object,{type:"polyline",points:null,minX:0,minY:0,initialize:function(n,i){return t.Polygon.prototype.initialize.call(this,n,i)},_calcDimensions:function(){return t.Polygon.prototype._calcDimensions.call(this)},_applyPointOffset:function(){return t.Polygon.prototype._applyPointOffset.call(this)},toObject:function(n){return t.Polygon.prototype.toObject.call(this,n)},toSVG:function(n){return t.Polygon.prototype.toSVG.call(this,n)},_render:function(n){t.Polygon.prototype.commonRender.call(this,n)&&(this._renderFill(n),this._renderStroke(n))},_renderDashedStroke:function(n){var r,u,i,f;for(n.beginPath(),i=0,f=this.points.length;i<f;i++)r=this.points[i],u=this.points[i+1]||r,t.util.drawDashedLine(n,r.x,r.y,u.x,u.y,this.strokeDashArray)},complexity:function(){return this.get("points").length}}),t.Polyline.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat(),t.Polyline.fromElement=function(n,i){if(!n)return null;i||(i={});var r=t.parsePointsAttribute(n.getAttribute("points")),u=t.parseAttributes(n,t.Polyline.ATTRIBUTE_NAMES);return new t.Polyline(r,t.util.object.extend(u,i))},t.Polyline.fromObject=function(n){return new t.Polyline(n.points,n,!0)})}("undefined"!=typeof exports?exports:this),function(n){var t=n.fabric||(n.fabric={}),i=t.util.object.extend,r=t.util.array.min,u=t.util.array.max,f=t.util.toFixed;t.Polygon?t.warn("fabric.Polygon is already defined"):(t.Polygon=t.util.createClass(t.Object,{type:"polygon",points:null,minX:0,minY:0,initialize:function(n,t){t=t||{};this.points=n||[];this.callSuper("initialize",t);this._calcDimensions();"top"in t||(this.top=this.minY);"left"in t||(this.left=this.minX)},_calcDimensions:function(){var n=this.points,t=r(n,"x"),i=r(n,"y"),f=u(n,"x"),n=u(n,"y");this.width=f-t||0;this.height=n-i||0;this.minX=t||0;this.minY=i||0},_applyPointOffset:function(){this.points.forEach(function(n){n.x-=this.minX+this.width/2;n.y-=this.minY+this.height/2},this)},toObject:function(n){return i(this.callSuper("toObject",n),{points:this.points.concat()})},toSVG:function(n){for(var r=[],i=this._createBaseSVGMarkup(),t=0,u=this.points.length;t<u;t++)r.push(f(this.points[t].x,2),",",f(this.points[t].y,2)," ");return i.push("<",this.type," ",'points="',r.join(""),'" style="',this.getSvgStyles(),'" transform="',this.getSvgTransform()," ",this.getSvgTransformMatrix(),'"/>\n'),n?n(i.join("")):i.join("")},_render:function(n){this.commonRender(n)&&(this._renderFill(n),this.stroke||this.strokeDashArray)&&(n.closePath(),this._renderStroke(n))},commonRender:function(n){var i,r=this.points.length,t;if(!r||isNaN(this.points[r-1].y))return!1;for(n.beginPath(),this._applyPointOffset&&(this.group&&"path-group"===this.group.type||this._applyPointOffset(),this._applyPointOffset=null),n.moveTo(this.points[0].x,this.points[0].y),t=0;t<r;t++)i=this.points[t],n.lineTo(i.x,i.y);return!0},_renderDashedStroke:function(n){t.Polyline.prototype._renderDashedStroke.call(this,n);n.closePath()},complexity:function(){return this.points.length}}),t.Polygon.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat(),t.Polygon.fromElement=function(n,r){if(!n)return null;r||(r={});var u=t.parsePointsAttribute(n.getAttribute("points")),f=t.parseAttributes(n,t.Polygon.ATTRIBUTE_NAMES);return new t.Polygon(u,i(f,r))},t.Polygon.fromObject=function(n){return new t.Polygon(n.points,n,!0)})}("undefined"!=typeof exports?exports:this),function(n){var t=n.fabric||(n.fabric={}),i=t.util.array.min,r=t.util.array.max,u=t.util.object.extend,e=Object.prototype.toString,f=t.util.drawArc,o={m:2,l:2,h:1,v:1,c:6,s:4,q:4,t:2,a:7},s={m:"l",M:"L"};t.Path?t.warn("fabric.Path is already defined"):(t.Path=t.util.createClass(t.Object,{type:"path",path:null,minX:0,minY:0,initialize:function(n,t){t=t||{};this.setOptions(t);n||(n=[]);var i="[object Array]"===e.call(n);(this.path=i?n:n.match&&n.match(/[mzlhvcsqta][^mzlhvcsqta]*/gi))&&(i||(this.path=this._parsePath()),this._setPositionDimensions(t),t.sourcePath&&this.setSourcePath(t.sourcePath))},_setPositionDimensions:function(n){var t=this._parseDimensions();this.minX=t.left;this.minY=t.top;this.width=t.width;this.height=t.height;"undefined"==typeof n.left&&(this.left=t.left+("center"===this.originX?this.width/2:"right"===this.originX?this.width:0));"undefined"==typeof n.top&&(this.top=t.top+("center"===this.originY?this.height/2:"bottom"===this.originY?this.height:0));this.pathOffset=this.pathOffset||{x:this.minX+this.width/2,y:this.minY+this.height/2}},_render:function(n){var t,l=null,v=0,y=0,i=0,r=0,o=0,s=0,h,c,u=-this.pathOffset.x,e=-this.pathOffset.y,a,p;for(this.group&&"path-group"===this.group.type&&(e=u=0),n.beginPath(),a=0,p=this.path.length;a<p;++a){t=this.path[a];switch(t[0]){case"l":i+=t[1];r+=t[2];n.lineTo(i+u,r+e);break;case"L":i=t[1];r=t[2];n.lineTo(i+u,r+e);break;case"h":i+=t[1];n.lineTo(i+u,r+e);break;case"H":i=t[1];n.lineTo(i+u,r+e);break;case"v":r+=t[1];n.lineTo(i+u,r+e);break;case"V":r=t[1];n.lineTo(i+u,r+e);break;case"m":i+=t[1];r+=t[2];v=i;y=r;n.moveTo(i+u,r+e);break;case"M":i=t[1];r=t[2];v=i;y=r;n.moveTo(i+u,r+e);break;case"c":h=i+t[5];c=r+t[6];o=i+t[3];s=r+t[4];n.bezierCurveTo(i+t[1]+u,r+t[2]+e,o+u,s+e,h+u,c+e);i=h;r=c;break;case"C":i=t[5];r=t[6];o=t[3];s=t[4];n.bezierCurveTo(t[1]+u,t[2]+e,o+u,s+e,i+u,r+e);break;case"s":h=i+t[3];c=r+t[4];null===l[0].match(/[CcSs]/)?(o=i,s=r):(o=2*i-o,s=2*r-s);n.bezierCurveTo(o+u,s+e,i+t[1]+u,r+t[2]+e,h+u,c+e);o=i+t[1];s=r+t[2];i=h;r=c;break;case"S":h=t[3];c=t[4];null===l[0].match(/[CcSs]/)?(o=i,s=r):(o=2*i-o,s=2*r-s);n.bezierCurveTo(o+u,s+e,t[1]+u,t[2]+e,h+u,c+e);i=h;r=c;o=t[1];s=t[2];break;case"q":h=i+t[3];c=r+t[4];o=i+t[1];s=r+t[2];n.quadraticCurveTo(o+u,s+e,h+u,c+e);i=h;r=c;break;case"Q":h=t[3];c=t[4];n.quadraticCurveTo(t[1]+u,t[2]+e,h+u,c+e);i=h;r=c;o=t[1];s=t[2];break;case"t":h=i+t[1];c=r+t[2];null===l[0].match(/[QqTt]/)?(o=i,s=r):(o=2*i-o,s=2*r-s);n.quadraticCurveTo(o+u,s+e,h+u,c+e);i=h;r=c;break;case"T":h=t[1];c=t[2];null===l[0].match(/[QqTt]/)?(o=i,s=r):(o=2*i-o,s=2*r-s);n.quadraticCurveTo(o+u,s+e,h+u,c+e);i=h;r=c;break;case"a":f(n,i+u,r+e,[t[1],t[2],t[3],t[4],t[5],t[6]+i+u,t[7]+r+e]);i+=t[6];r+=t[7];break;case"A":f(n,i+u,r+e,[t[1],t[2],t[3],t[4],t[5],t[6]+u,t[7]+e]);i=t[6];r=t[7];break;case"z":case"Z":i=v;r=y;n.closePath()}l=t}this._renderFill(n);this._renderStroke(n)},toString:function(){return"#<fabric.Path ("+this.complexity()+'): { "top": '+this.top+', "left": '+this.left+" }>"},toObject:function(n){return n=u(this.callSuper("toObject",n),{path:this.path.map(function(n){return n.slice()}),pathOffset:this.pathOffset}),this.sourcePath&&(n.sourcePath=this.sourcePath),this.transformMatrix&&(n.transformMatrix=this.transformMatrix),n},toDatalessObject:function(n){return n=this.toObject(n),this.sourcePath&&(n.path=this.sourcePath),delete n.sourcePath,n},toSVG:function(n){for(var t=[],i=this._createBaseSVGMarkup(),u="",r=0,f=this.path.length;r<f;r++)t.push(this.path[r].join(" "));return t=t.join(" "),this.group&&"path-group"===this.group.type||(u=" translate("+-this.pathOffset.x+", "+-this.pathOffset.y+") "),i.push("<path ",'d="',t,'" style="',this.getSvgStyles(),'" transform="',this.getSvgTransform(),u,this.getSvgTransformMatrix(),'" stroke-linecap="round" ',"/>\n"),n?n(i.join("")):i.join("")},complexity:function(){return this.path.length},_parsePath:function(){for(var f,r,c,e=[],u=[],t,n,l=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:e[-+]?\d+)?)/ig,i,h=0,a=this.path.length;h<a;h++){for(t=this.path[h],i=t.slice(1).trim(),u.length=0;n=l.exec(i);)u.push(n[0]);for(t=[t.charAt(0)],i=0,f=u.length;i<f;i++)n=parseFloat(u[i]),isNaN(n)||t.push(n);if(n=t[0],i=o[n.toLowerCase()],f=s[n]||n,t.length-1>i)for(r=1,c=t.length;r<c;r+=i)e.push([n].concat(t.slice(r,r+i))),n=f;else e.push(t)}return e},_parseDimensions:function(){for(var y=[],p=[],n,l=null,a=0,v=0,u=0,f=0,e=0,o=0,h,c,s,w=0,b=this.path.length;w<b;++w){n=this.path[w];switch(n[0]){case"l":u+=n[1];f+=n[2];s=[];break;case"L":u=n[1];f=n[2];s=[];break;case"h":u+=n[1];s=[];break;case"H":u=n[1];s=[];break;case"v":f+=n[1];s=[];break;case"V":f=n[1];s=[];break;case"m":u+=n[1];f+=n[2];a=u;v=f;s=[];break;case"M":u=n[1];f=n[2];a=u;v=f;s=[];break;case"c":h=u+n[5];c=f+n[6];e=u+n[3];o=f+n[4];s=t.util.getBoundsOfCurve(u,f,u+n[1],f+n[2],e,o,h,c);u=h;f=c;break;case"C":u=n[5];f=n[6];e=n[3];o=n[4];s=t.util.getBoundsOfCurve(u,f,n[1],n[2],e,o,u,f);break;case"s":h=u+n[3];c=f+n[4];null===l[0].match(/[CcSs]/)?(e=u,o=f):(e=2*u-e,o=2*f-o);s=t.util.getBoundsOfCurve(u,f,e,o,u+n[1],f+n[2],h,c);e=u+n[1];o=f+n[2];u=h;f=c;break;case"S":h=n[3];c=n[4];null===l[0].match(/[CcSs]/)?(e=u,o=f):(e=2*u-e,o=2*f-o);s=t.util.getBoundsOfCurve(u,f,e,o,n[1],n[2],h,c);u=h;f=c;e=n[1];o=n[2];break;case"q":h=u+n[3];c=f+n[4];e=u+n[1];o=f+n[2];s=t.util.getBoundsOfCurve(u,f,e,o,e,o,h,c);u=h;f=c;break;case"Q":e=n[1];o=n[2];s=t.util.getBoundsOfCurve(u,f,e,o,e,o,n[3],n[4]);u=n[3];f=n[4];break;case"t":h=u+n[1];c=f+n[2];null===l[0].match(/[QqTt]/)?(e=u,o=f):(e=2*u-e,o=2*f-o);s=t.util.getBoundsOfCurve(u,f,e,o,e,o,h,c);u=h;f=c;break;case"T":h=n[1];c=n[2];null===l[0].match(/[QqTt]/)?(e=u,o=f):(e=2*u-e,o=2*f-o);s=t.util.getBoundsOfCurve(u,f,e,o,e,o,h,c);u=h;f=c;break;case"a":s=t.util.getBoundsOfArc(u,f,n[1],n[2],n[3],n[4],n[5],n[6]+u,n[7]+f);u+=n[6];f+=n[7];break;case"A":s=t.util.getBoundsOfArc(u,f,n[1],n[2],n[3],n[4],n[5],n[6],n[7]);u=n[6];f=n[7];break;case"z":case"Z":u=a;f=v}l=n;s.forEach(function(n){y.push(n.x);p.push(n.y)});y.push(u);p.push(f)}return n=i(y)||0,l=i(p)||0,a=r(y)||0,v=r(p)||0,{left:n,top:l,width:a-n,height:v-l}}}),t.Path.fromObject=function(n,i){"string"==typeof n.path?t.loadSVGFromURL(n.path,function(r){r=r[0];var u=n.path;delete n.path;t.util.object.extend(r,n);r.setSourcePath(u);i(r)}):i(new t.Path(n.path,n))},t.Path.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat(["d"]),t.Path.fromElement=function(n,i,r){n=t.parseAttributes(n,t.Path.ATTRIBUTE_NAMES);i&&i(new t.Path(n.d,u(n,r)))},t.Path.async=!0)}("undefined"!=typeof exports?exports:this),function(n){var t=n.fabric||(n.fabric={}),i=t.util.object.extend,r=t.util.array.invoke,u=t.Object.prototype.toObject;t.PathGroup?t.warn("fabric.PathGroup is already defined"):(t.PathGroup=t.util.createClass(t.Path,{type:"path-group",fill:"",initialize:function(n,t){t=t||{};this.paths=n||[];for(var i=this.paths.length;i--;)this.paths[i].group=this;t.toBeParsed&&(this.parseDimensionsFromPaths(t),delete t.toBeParsed);this.setOptions(t);this.setCoords();t.sourcePath&&this.setSourcePath(t.sourcePath)},parseDimensionsFromPaths:function(n){for(var f,i,r,o=[],s=[],u,e=this.paths.length;e--;)for(i=this.paths[e],r=i.height+i.strokeWidth,u=i.width+i.strokeWidth,i=[{x:i.left,y:i.top},{x:i.left+u,y:i.top},{x:i.left,y:i.top+r},{x:i.left+u,y:i.top+r}],u=this.paths[e].transformMatrix,f=0;f<i.length;f++)r=i[f],u&&(r=t.util.transformPoint(r,u,!1)),o.push(r.x),s.push(r.y);n.width=Math.max.apply(null,o);n.height=Math.max.apply(null,s)},render:function(n){if(this.visible){n.save();this.transformMatrix&&n.transform.apply(n,this.transformMatrix);this.transform(n);this._setShadow(n);this.clipTo&&t.util.clipContext(this,n);n.translate(-this.width/2,-this.height/2);for(var i=0,r=this.paths.length;i<r;++i)this.paths[i].render(n,!0);this.clipTo&&n.restore();n.restore()}},_set:function(n,t){if("fill"===n&&t&&this.isSameColor())for(var i=this.paths.length;i--;)this.paths[i]._set(n,t);return this.callSuper("_set",n,t)},toObject:function(n){return n=i(u.call(this,n),{paths:r(this.getObjects(),"toObject",n)}),this.sourcePath&&(n.sourcePath=this.sourcePath),n},toDatalessObject:function(n){return n=this.toObject(n),this.sourcePath&&(n.paths=this.sourcePath),n},toSVG:function(n){var r=this.getObjects(),t=this.getPointByOrigin("left","top"),i="translate("+t.x+" "+t.y+")",t=this._createBaseSVGMarkup(),u;for(t.push("<g ",'style="',this.getSvgStyles(),'" ','transform="',this.getSvgTransformMatrix(),i,this.getSvgTransform(),'" ',">\n"),i=0,u=r.length;i<u;i++)t.push("\t",r[i].toSVG(n));return t.push("<\/g>\n"),n?n(t.join("")):t.join("")},toString:function(){return"#<fabric.PathGroup ("+this.complexity()+"): { top: "+this.top+", left: "+this.left+" }>"},isSameColor:function(){var n=this.getObjects()[0].get("fill")||"";return"string"!=typeof n?!1:(n=n.toLowerCase(),this.getObjects().every(function(t){return t=t.get("fill")||"","string"==typeof t&&t.toLowerCase()===n}))},complexity:function(){return this.paths.reduce(function(n,t){return n+(t&&t.complexity?t.complexity():0)},0)},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(n,i){"string"==typeof n.paths?t.loadSVGFromURL(n.paths,function(r){var u=n.paths;delete n.paths;r=t.util.groupSVGElements(r,n,u);i(r)}):t.util.enlivenObjects(n.paths,function(r){delete n.paths;i(new t.PathGroup(r,n))})},t.PathGroup.async=!0)}("undefined"!=typeof exports?exports:this),function(n){var t=n.fabric||(n.fabric={}),f=t.util.object.extend,i=t.util.array.min,r=t.util.array.max,e=t.util.array.invoke,u;t.Group||(u={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0},t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",strokeWidth:0,initialize:function(n,t,i){for(t=t||{},this._objects=[],i&&this.callSuper("initialize",t),this._objects=n||[],n=this._objects.length;n--;)this._objects[n].group=this;this.originalState={};t.originX&&(this.originX=t.originX);t.originY&&(this.originY=t.originY);i?this._updateObjectsCoords(!0):(this._calcBounds(),this._updateObjectsCoords(),this.callSuper("initialize",t));this.setCoords();this.saveCoords()},_updateObjectsCoords:function(n){for(var t=this._objects.length;t--;)this._updateObjectCoords(this._objects[t],n)},_updateObjectCoords:function(n,t){if(n.__origHasControls=n.hasControls,n.hasControls=!1,!t){var i=n.getLeft(),r=n.getTop(),u=this.getCenterPoint();n.set({originalLeft:i,originalTop:r,left:i-u.x,top:r-u.y});n.setCoords()}},toString:function(){return"#<fabric.Group: ("+this.complexity()+")>"},addWithUpdate:function(n){return this._restoreObjectsState(),n&&(this._objects.push(n),n.group=this,n._set("canvas",this.canvas)),this.forEachObject(this._setObjectActive,this),this._calcBounds(),this._updateObjectsCoords(),this},_setObjectActive:function(n){n.set("active",!0);n.group=this},removeWithUpdate:function(n){return this._moveFlippedObject(n),this._restoreObjectsState(),this.forEachObject(this._setObjectActive,this),this.remove(n),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(n){n.group=this;n._set("canvas",this.canvas)},_onObjectRemoved:function(n){delete n.group;n.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textAlign:!0,backgroundColor:!0},_set:function(n,t){var i=this._objects.length;if(this.delegatedProperties[n]||"canvas"===n)for(;i--;)this._objects[i].set(n,t);else for(;i--;)this._objects[i].setOnGroup(n,t);this.callSuper("_set",n,t)},toObject:function(n){return f(this.callSuper("toObject",n),{objects:e(this._objects,"toObject",n)})},render:function(n){if(this.visible){n.save();this.transformMatrix&&n.transform.apply(n,this.transformMatrix);this.transform(n);this._setShadow(n);this.clipTo&&t.util.clipContext(this,n);for(var i=0,r=this._objects.length;i<r;i++)this._renderObject(this._objects[i],n);this.clipTo&&n.restore();n.restore()}},_renderControls:function(n,t){this.callSuper("_renderControls",n,t);for(var i=0,r=this._objects.length;i<r;i++)this._objects[i]._renderControls(n)},_renderObject:function(n,t){if(n.visible){var i=n.hasRotatingPoint;n.hasRotatingPoint=!1;n.render(t);n.hasRotatingPoint=i}},_restoreObjectsState:function(){return this._objects.forEach(this._restoreObjectState,this),this},realizeTransform:function(n){return this._moveFlippedObject(n),this._setObjectPosition(n),n},_moveFlippedObject:function(n){var i=n.get("originX"),r=n.get("originY"),t=n.getCenterPoint();return n.set({originX:"center",originY:"center",left:t.x,top:t.y}),this._toggleFlipping(n),t=n.getPointByOrigin(i,r),n.set({originX:i,originY:r,left:t.x,top:t.y}),this},_toggleFlipping:function(n){this.flipX&&(n.toggle("flipX"),n.set("left",-n.get("left")),n.setAngle(-n.getAngle()));this.flipY&&(n.toggle("flipY"),n.set("top",-n.get("top")),n.setAngle(-n.getAngle()))},_restoreObjectState:function(n){return this._setObjectPosition(n),n.setCoords(),n.hasControls=n.__origHasControls,delete n.__origHasControls,n.set("active",!1),n.setCoords(),delete n.group,this},_setObjectPosition:function(n){var t=this.getCenterPoint(),i=this._getRotatedLeftTop(n);n.set({angle:n.getAngle()+this.getAngle(),left:t.x+i.left,top:t.y+i.top,scaleX:n.get("scaleX")*this.get("scaleX"),scaleY:n.get("scaleY")*this.get("scaleY")})},_getRotatedLeftTop:function(n){var t=this.getAngle()*(Math.PI/180);return{left:-Math.sin(t)*n.getTop()*this.get("scaleY")+Math.cos(t)*n.getLeft()*this.get("scaleX"),top:Math.cos(t)*n.getTop()*this.get("scaleY")+Math.sin(t)*n.getLeft()*this.get("scaleX")}},destroy:function(){return this._objects.forEach(this._moveFlippedObject,this),this._restoreObjectsState()},saveCoords:function(){return this._originalLeft=this.get("left"),this._originalTop=this.get("top"),this},hasMoved:function(){return this._originalLeft!==this.get("left")||this._originalTop!==this.get("top")},setObjectsCoords:function(){return this.forEachObject(function(n){n.setCoords()}),this},_calcBounds:function(n){for(var f=[],e=[],t,r,o=["tr","br","bl","tl"],u=0,s=this._objects.length,i,h=o.length;u<s;++u)for(t=this._objects[u],t.setCoords(),i=0;i<h;i++)r=o[i],f.push(t.oCoords[r].x),e.push(t.oCoords[r].y);this.set(this._getBounds(f,e,n))},_getBounds:function(n,u,f){var o=t.util.invertTransform(this.getViewportTransform()),e=t.util.transformPoint(new t.Point(i(n),i(u)),o);return n=t.util.transformPoint(new t.Point(r(n),r(u)),o),n={width:n.x-e.x||0,height:n.y-e.y||0},f||(n.left=e.x||0,n.top=e.y||0,"center"===this.originX&&(n.left+=n.width/2),"right"===this.originX&&(n.left+=n.width),"center"===this.originY&&(n.top+=n.height/2),"bottom"===this.originY&&(n.top+=n.height)),n},toSVG:function(n){var t=this._createBaseSVGMarkup(),i,r;for(t.push('<g transform="',this.getSvgTransform(),this.getSvgTransformMatrix(),'" style="',this.getSvgFilter(),'">\n'),i=0,r=this._objects.length;i<r;i++)t.push("\t",this._objects[i].toSVG(n));return t.push("<\/g>\n"),n?n(t.join("")):t.join("")},get:function(n){if(n in u){if(this[n])return this[n];for(var t=0,i=this._objects.length;t<i;t++)if(this._objects[t][n])return!0;return!1}return n in this.delegatedProperties?this._objects[0]&&this._objects[0].get(n):this[n]}}),t.Group.fromObject=function(n,i){t.util.enlivenObjects(n.objects,function(r){delete n.objects;i&&i(new t.Group(r,n,!0))})},t.Group.async=!0)}("undefined"!=typeof exports?exports:this),function(n){var t=fabric.util.object.extend;n.fabric||(n.fabric={});n.fabric.Image?fabric.warn("fabric.Image is already defined."):(fabric.Image=fabric.util.createClass(fabric.Object,{type:"image",crossOrigin:"",alignX:"none",alignY:"none",meetOrSlice:"meet",_lastScaleX:1,_lastScaleY:1,initialize:function(n,t){t||(t={});this.filters=[];this.resizeFilters=[];this.callSuper("initialize",t);this._initElement(n,t)},getElement:function(){return this._element},setElement:function(n,t,i){return this._originalElement=this._element=n,this._initConfig(i),0!==this.filters.length?this.applyFilters(t):t&&t(),this},setCrossOrigin:function(n){return this.crossOrigin=n,this._element.crossOrigin=n,this},getOriginalSize:function(){var n=this.getElement();return{width:n.width,height:n.height}},_stroke:function(n){n.save();this._setStrokeStyles(n);n.beginPath();n.strokeRect(-this.width/2,-this.height/2,this.width,this.height);n.closePath();n.restore()},_renderDashedStroke:function(n){var t=-this.width/2,i=-this.height/2,r=this.width,u=this.height;n.save();this._setStrokeStyles(n);n.beginPath();fabric.util.drawDashedLine(n,t,i,t+r,i,this.strokeDashArray);fabric.util.drawDashedLine(n,t+r,i,t+r,i+u,this.strokeDashArray);fabric.util.drawDashedLine(n,t+r,i+u,t,i+u,this.strokeDashArray);fabric.util.drawDashedLine(n,t,i+u,t,i,this.strokeDashArray);n.closePath();n.restore()},toObject:function(n){var i=[];return this.filters.forEach(function(n){n&&i.push(n.toObject())}),n=t(this.callSuper("toObject",n),{src:this._originalElement.src||this._originalElement._src,filters:i,crossOrigin:this.crossOrigin,alignX:this.alignX,alignY:this.alignY,meetOrSlice:this.meetOrSlice}),0<this.resizeFilters.length&&(n.resizeFilters=this.resizeFilters.map(function(n){return n&&n.toObject()})),this.includeDefaultValues||this._removeDefaultValues(n),n},toSVG:function(n){var t=this._createBaseSVGMarkup(),r=-this.width/2,u=-this.height/2,i="none";return this.group&&"path-group"===this.group.type&&(r=this.left,u=this.top),"none"!==this.alignX&&"none"!==this.alignY&&(i="x"+this.alignX+"Y"+this.alignY+" "+this.meetOrSlice),t.push('<g transform="',this.getSvgTransform(),this.getSvgTransformMatrix(),'">\n','<image xlink:href="',this.getSvgSrc(),'" x="',r,'" y="',u,'" style="',this.getSvgStyles(),'" width="',this.width,'" height="',this.height,'" preserveAspectRatio="',i,'"',"><\/image>\n"),(this.stroke||this.strokeDashArray)&&(i=this.fill,this.fill=null,t.push("<rect ",'x="',r,'" y="',u,'" width="',this.width,'" height="',this.height,'" style="',this.getSvgStyles(),'"/>\n'),this.fill=i),t.push("<\/g>\n"),n?n(t.join("")):t.join("")},getSrc:function(){if(this.getElement())return this.getElement().src||this.getElement()._src},setSrc:function(n,t,i){fabric.util.loadImage(n,function(n){return this.setElement(n,t,i)},this,i&&i.crossOrigin)},toString:function(){return'#<fabric.Image: { src: "'+this.getSrc()+'" }>'},clone:function(n,t){this.constructor.fromObject(this.toObject(t),n)},applyFilters:function(n,t,i,r){if(t=t||this.filters,i=i||this._originalElement){var o=i,u=fabric.util.createCanvasElement(),f=fabric.util.createImage(),e=this;return(u.width=o.width,u.height=o.height,u.getContext("2d").drawImage(o,0,0,o.width,o.height),0===t.length)?(this._element=i,n&&n(),u):(t.forEach(function(n){n&&n.applyTo(u,n.scaleX||e.scaleX,n.scaleY||e.scaleY);!r&&n&&"Resize"===n.type&&(e.width*=n.scaleX,e.height*=n.scaleY)}),f.width=u.width,f.height=u.height,fabric.isLikelyNode?(f.src=u.toBuffer(void 0,fabric.Image.pngCompression),e._element=f,!r&&(e._filteredEl=f),n&&n()):(f.onload=function(){e._element=f;r||(e._filteredEl=f);n&&n();f.onload=u=o=null},f.src=u.toDataURL("image/png")),u)}},_render:function(n,t){var u,f,i=this._findMargins(),r;u=t?this.left:-this.width/2;f=t?this.top:-this.height/2;"slice"===this.meetOrSlice&&(n.beginPath(),n.rect(u,f,this.width,this.height),n.clip());!1===this.isMoving&&this.resizeFilters.length&&this._needsResize()?(this._lastScaleX=this.scaleX,this._lastScaleY=this.scaleY,r=this.applyFilters(null,this.resizeFilters,this._filteredEl||this._originalElement,!0)):r=this._element;r&&n.drawImage(r,u+i.marginX,f+i.marginY,i.width,i.height);this._renderStroke(n)},_needsResize:function(){return this.scaleX!==this._lastScaleX||this.scaleY!==this._lastScaleY},_findMargins:function(){var n=this.width,t=this.height,i=0,r=0;return("none"!==this.alignX||"none"!==this.alignY)&&(n=[this.width/this._element.width,this.height/this._element.height],t="meet"===this.meetOrSlice?Math.min.apply(null,n):Math.max.apply(null,n),n=this._element.width*t,t*=this._element.height,"Mid"===this.alignX&&(i=(this.width-n)/2),"Max"===this.alignX&&(i=this.width-n),"Mid"===this.alignY&&(r=(this.height-t)/2),"Max"===this.alignY&&(r=this.height-t)),{width:n,height:t,marginX:i,marginY:r}},_resetWidthHeight:function(){var n=this.getElement();this.set("width",n.width);this.set("height",n.height)},_initElement:function(n,t){this.setElement(fabric.util.getById(n),null,t);fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(n){n||(n={});this.setOptions(n);this._setWidthHeight(n);this._element&&this.crossOrigin&&(this._element.crossOrigin=this.crossOrigin)},_initFilters:function(n,t){n&&n.length?fabric.util.enlivenObjects(n,function(n){t&&t(n)},"fabric.Image.filters"):t&&t()},_setWidthHeight:function(n){this.width="width"in n?n.width:this.getElement()?this.getElement().width||0:0;this.height="height"in n?n.height:this.getElement()?this.getElement().height||0:0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(n,t){fabric.util.loadImage(n.src,function(i){fabric.Image.prototype._initFilters.call(n,n.filters,function(r){n.filters=r||[];fabric.Image.prototype._initFilters.call(n,n.resizeFilters,function(r){n.resizeFilters=r||[];r=new fabric.Image(i,n);t&&t(r)})})},null,n.crossOrigin)},fabric.Image.fromURL=function(n,t,i){fabric.util.loadImage(n,function(n){t&&t(new fabric.Image(n,i))},null,i&&i.crossOrigin)},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height preserveAspectRatio xlink:href".split(" ")),fabric.Image.fromElement=function(n,i,r){n=fabric.parseAttributes(n,fabric.Image.ATTRIBUTE_NAMES);var u;n.preserveAspectRatio&&(u=fabric.util.parsePreserveAspectRatioAttribute(n.preserveAspectRatio),t(n,u));fabric.Image.fromURL(n["xlink:href"],i,t(r?fabric.util.object.clone(r):{},n))},fabric.Image.async=!0,fabric.Image.pngCompression=1)}("undefined"!=typeof exports?exports:this);fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var n=this.getAngle()%360;return 0<n?90*Math.round((n-1)/90):90*Math.round(n/90)},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(n){n=n||{};var i=function(){},r=n.onComplete||i,u=n.onChange||i,t=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(n){t.setAngle(n);u()},onComplete:function(){t.setCoords();r()},onStart:function(){t.set("active",!1)}}),this}});fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(n){return n.straighten(),this.renderAll(),this},fxStraightenObject:function(n){return n.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),function(n){var t=n.fabric||(n.fabric={}),u=t.util.object.extend,f=t.util.object.clone,i=t.util.toFixed,e=t.StaticCanvas.supports("setLineDash"),r=t.Object.NUM_FRACTION_DIGITS;t.Text?t.warn("fabric.Text is already defined"):(n=t.Object.prototype.stateProperties.concat(),n.push("fontFamily","fontWeight","fontSize","text","textDecoration","textAlign","fontStyle","lineHeight","textBackgroundColor"),t.Text=t.util.createClass(t.Object,{_dimensionAffectingProps:{fontSize:!0,fontWeight:!0,fontFamily:!0,fontStyle:!0,lineHeight:!0,stroke:!0,strokeWidth:!0,text:!0,textAlign:!0},_reNewline:/\r?\n/,_reSpacesAndTabs:/[ \t\r]+/g,type:"text",fontSize:40,fontWeight:"normal",fontFamily:"Times New Roman",textDecoration:"",textAlign:"left",fontStyle:"",lineHeight:1.16,textBackgroundColor:"",stateProperties:n,stroke:null,shadow:null,_fontSizeFraction:.25,_fontSizeMult:1.13,initialize:function(n,t){t=t||{};this.text=n;this.__skipDimension=!0;this.setOptions(t);this.__skipDimension=!1;this._initDimensions()},_initDimensions:function(n){this.__skipDimension||(n||(n=t.util.createCanvasElement().getContext("2d"),this._setTextStyles(n)),this._textLines=this._splitTextIntoLines(),this._clearCache(),this._cacheLinesWidth="justify"!==this.textAlign,this.width=this._getTextWidth(n),this._cacheLinesWidth=!0,this.height=this._getTextHeight(n))},toString:function(){return"#<fabric.Text ("+this.complexity()+'): { "text": "'+this.text+'", "fontFamily": "'+this.fontFamily+'" }>'},_render:function(n){this.clipTo&&t.util.clipContext(this,n);this._setOpacity(n);this._setShadow(n);this._setupCompositeOperation(n);this._renderTextBackground(n);this._setStrokeStyles(n);this._setFillStyles(n);this._renderText(n);this._renderTextDecoration(n);this.clipTo&&n.restore()},_renderText:function(n){this._translateForTextAlign(n);this._renderTextFill(n);this._renderTextStroke(n);this._translateForTextAlign(n,!0)},_translateForTextAlign:function(n,t){if("left"!==this.textAlign&&"justify"!==this.textAlign){var i=t?-1:1;n.translate("center"===this.textAlign?i*this.width/2:i*this.width,0)}},_setTextStyles:function(n){n.textBaseline="alphabetic";this.skipTextAlign||(n.textAlign=this.textAlign);n.font=this._getFontDeclaration()},_getTextHeight:function(){return this._textLines.length*this._getHeightOfLine()},_getTextWidth:function(n){for(var r,t=this._getLineWidth(n,0),i=1,u=this._textLines.length;i<u;i++)r=this._getLineWidth(n,i),r>t&&(t=r);return t},_renderChars:function(n,t,i,r,u){var f=n.slice(0,-4),e,o;this[f].toLive&&(e=-this.width/2+this[f].offsetX||0,o=-this.height/2+this[f].offsetY||0,t.save(),t.translate(e,o),r-=e,u-=o);t[n](i,r,u);this[f].toLive&&t.restore()},_renderTextLine:function(n,t,i,r,u,f){var e;if(u-=this.fontSize*this._fontSizeFraction,e=this._getLineWidth(t,f),"justify"!==this.textAlign||this.width<e)this._renderChars(n,t,i,r,u,f);else for(var e=i.split(/\s+/),o=this._getWidthOfWords(t,i,f),o=this.width-o,s=e.length-1,o=0<s?o/s:0,h=s=0,c,l=0,a=e.length;l<a;l++){for(;" "===i[h]&&h<i.length;)h++;c=e[l];this._renderChars(n,t,c,r+s,u,f,h);s+=t.measureText(c).width+o;h+=c.length}},_getWidthOfWords:function(n,t){return n.measureText(t.replace(/\s+/g,"")).width},_getLeftOffset:function(){return-this.width/2},_getTopOffset:function(){return-this.height/2},_renderTextFill:function(n){var i,u;if(this.fill||this._skipFillStrokeCheck)for(var r=0,t=0,f=this._textLines.length;t<f;t++)i=this._getHeightOfLine(n,t),u=i/this.lineHeight,this._renderTextLine("fillText",n,this._textLines[t],this._getLeftOffset(),this._getTopOffset()+r+u,t),r+=i},_renderTextStroke:function(n){var i,t,u,r,f;if(this.stroke&&0!==this.strokeWidth||this._skipFillStrokeCheck){for(i=0,this.shadow&&!this.shadow.affectStroke&&this._removeShadow(n),n.save(),this.strokeDashArray&&(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),e&&n.setLineDash(this.strokeDashArray)),n.beginPath(),t=0,u=this._textLines.length;t<u;t++)r=this._getHeightOfLine(n,t),f=r/this.lineHeight,this._renderTextLine("strokeText",n,this._textLines[t],this._getLeftOffset(),this._getTopOffset()+i+f,t),i+=r;n.closePath();n.restore()}},_getHeightOfLine:function(){return this.fontSize*this._fontSizeMult*this.lineHeight},_renderTextBackground:function(n){this._renderTextBoxBackground(n);this._renderTextLinesBackground(n)},_renderTextBoxBackground:function(n){this.backgroundColor&&(n.fillStyle=this.backgroundColor,n.fillRect(this._getLeftOffset(),this._getTopOffset(),this.width,this.height))},_renderTextLinesBackground:function(n){var i,u,r,f,t,e;if(this.textBackgroundColor)for(i=0,u=this._getHeightOfLine(),n.fillStyle=this.textBackgroundColor,t=0,e=this._textLines.length;t<e;t++)""!==this._textLines[t]&&(r=this._getLineWidth(n,t),f=this._getLineLeftOffset(r),n.fillRect(this._getLeftOffset()+f,this._getTopOffset()+i,r,this.fontSize*this._fontSizeMult)),i+=u},_getLineLeftOffset:function(n){return"center"===this.textAlign?(this.width-n)/2:"right"===this.textAlign?this.width-n:0},_clearCache:function(){this.__lineWidths=[];this.__lineHeights=[]},_shouldClearCache:function(){var t=!1,n;if(this._forceClearCache)return this._forceClearCache=!1,!0;for(n in this._dimensionAffectingProps)this["__"+n]!==this[n]&&(this["__"+n]=this[n],t=!0);return t},_getLineWidth:function(n,t){if(this.__lineWidths[t])return this.__lineWidths[t];var i,r=this._textLines[t];return""===r?i=0:"justify"===this.textAlign&&this._cacheLinesWidth?(i=r.split(" "),i=1<i.length?this.width:n.measureText(r).width):i=n.measureText(r).width,this._cacheLinesWidth&&(this.__lineWidths[t]=i),i},_renderTextDecoration:function(n){var e,t,i,u,o,r,s,f,h,c;if(this.textDecoration&&(e=this.height/2,t=[],-1<this.textDecoration.indexOf("underline")&&t.push(.85),-1<this.textDecoration.indexOf("line-through")&&t.push(.43),-1<this.textDecoration.indexOf("overline")&&t.push(-.12),0<t.length))for(u=0,i=0,o=this._textLines.length;i<o;i++){for(f=this._getLineWidth(n,i),h=this._getLineLeftOffset(f),c=this._getHeightOfLine(n,i),r=0,s=t.length;r<s;r++)n.fillRect(this._getLeftOffset()+h,u+(this._fontSizeMult-1+t[r])*this.fontSize-e,f,this.fontSize/15);u+=c}},_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(n,t){this.visible&&(n.save(),this._setTextStyles(n),this._shouldClearCache()&&this._initDimensions(n),t||this.transform(n),this.transformMatrix&&n.transform.apply(n,this.transformMatrix),this.group&&"path-group"===this.group.type&&n.translate(this.left,this.top),this._render(n),n.restore())},_splitTextIntoLines:function(){return this.text.split(this._reNewline)},toObject:function(n){return n=u(this.callSuper("toObject",n),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textAlign:this.textAlign,textBackgroundColor:this.textBackgroundColor}),this.includeDefaultValues||this._removeDefaultValues(n),n},toSVG:function(n){var i=this._createBaseSVGMarkup(),t=this._getSVGLeftTopOffsets(this.ctx),t=this._getSVGTextAndBg(t.textTop,t.textLeft);return this._wrapSVGTextAndBg(i,t),n?n(i.join("")):i.join("")},_getSVGLeftTopOffsets:function(n){return n=this._getHeightOfLine(n,0),{textLeft:-this.width/2+(this.group&&"path-group"===this.group.type?this.left:0),textTop:0+(this.group&&"path-group"===this.group.type?-this.top:0),lineTop:n}},_wrapSVGTextAndBg:function(n,t){n.push('\t<g transform="',this.getSvgTransform(),this.getSvgTransformMatrix(),'">\n',t.textBgRects.join(""),"\t\t<text ",this.fontFamily?'font-family="'+this.fontFamily.replace(/"/g,"'")+'" ':"",this.fontSize?'font-size="'+this.fontSize+'" ':"",this.fontStyle?'font-style="'+this.fontStyle+'" ':"",this.fontWeight?'font-weight="'+this.fontWeight+'" ':"",this.textDecoration?'text-decoration="'+this.textDecoration+'" ':"",'style="',this.getSvgStyles(),'" >',t.textSpans.join(""),"<\/text>\n","\t<\/g>\n")},_getSVGTextAndBg:function(n,t){var f=[],r=[],u=0,i,e;for(this._setSVGBg(r),i=0,e=this._textLines.length;i<e;i++)this.textBackgroundColor&&this._setSVGTextLineBg(r,i,t,n,u),this._setSVGTextLineText(i,f,u,t,n,r),u+=this._getHeightOfLine(this.ctx,i);return{textSpans:f,textBgRects:r}},_setSVGTextLineText:function(n,u,f,e,o){f=this.fontSize*(this._fontSizeMult-this._fontSizeFraction)-o+f-this.height/2;u.push('<tspan x="',i(e+this._getLineLeftOffset(this._getLineWidth(this.ctx,n)),r),'" ','y="',i(f,r),'" ',this._getFillAttributes(this.fill),">",t.util.string.escapeXml(this._textLines[n]),"<\/tspan>")},_setSVGTextLineBg:function(n,t,u,f,e){n.push("\t\t<rect ",this._getFillAttributes(this.textBackgroundColor),' x="',i(u+this._getLineLeftOffset(this._getLineWidth(this.ctx,t)),r),'" y="',i(e-this.height/2,r),'" width="',i(this._getLineWidth(this.ctx,t),r),'" height="',i(this._getHeightOfLine(this.ctx,t)/this.lineHeight,r),'"><\/rect>\n')},_setSVGBg:function(n){this.backgroundColor&&n.push("\t\t<rect ",this._getFillAttributes(this.backgroundColor),' x="',i(-this.width/2,r),'" y="',i(-this.height/2,r),'" width="',i(this.width,r),'" height="',i(this.height,r),'"><\/rect>\n')},_getFillAttributes:function(n){var i=n&&"string"==typeof n?new t.Color(n):"";return i&&i.getSource()&&1!==i.getAlpha()?'opacity="'+i.getAlpha()+'" fill="'+i.setAlpha(1).toRgb()+'"':'fill="'+n+'"'},_set:function(n,t){this.callSuper("_set",n,t);n in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y dx dy font-family font-style font-weight font-size text-decoration text-anchor".split(" ")),t.Text.DEFAULT_SVG_FONT_SIZE=16,t.Text.fromElement=function(n,i){var r;if(!n)return null;r=t.parseAttributes(n,t.Text.ATTRIBUTE_NAMES);i=t.util.object.extend(i?t.util.object.clone(i):{},r);i.top=i.top||0;i.left=i.left||0;"dx"in r&&(i.left+=r.dx);"dy"in r&&(i.top+=r.dy);"fontSize"in i||(i.fontSize=t.Text.DEFAULT_SVG_FONT_SIZE);i.originX||(i.originX="left");var r=n.textContent.replace(/^\s+|\s+$|\n+/g,"").replace(/\s+/g," "),r=new t.Text(r,i),u=0;return"left"===r.originX&&(u=r.getWidth()/2),"right"===r.originX&&(u=-r.getWidth()/2),r.set({left:r.getLeft()+u,top:r.getTop()-r.getHeight()/2+r.fontSize*(.18+r._fontSizeFraction)}),r},t.Text.fromObject=function(n){return new t.Text(n.text,f(n))},t.util.createAccessors(t.Text))}("undefined"!=typeof exports?exports:this),function(){var n=fabric.util.object.clone;fabric.IText=fabric.util.createClass(fabric.Text,fabric.Observable,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"#333",cursorDelay:1e3,cursorDuration:600,styles:null,caching:!0,_skipFillStrokeCheck:!1,_reSpace:/\s|\n/,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,_charWidthsCache:{},initialize:function(n,t){this.styles=t?t.styles||{}:{};this.callSuper("initialize",n,t);this.initBehavior()},_clearCache:function(){this.callSuper("_clearCache");this.__maxFontHeights=[];this.__widthOfSpace=[]},isEmptyStyles:function(){var n,t,i,r;if(!this.styles)return!0;n=this.styles;for(t in n)for(i in n[t])for(r in n[t][i])return!1;return!0},setSelectionStart:function(n){n=Math.max(n,0);this.selectionStart!==n&&(this.fire("selection:changed"),this.canvas&&this.canvas.fire("text:selection:changed",{target:this}),this.selectionStart=n);this._updateTextarea()},setSelectionEnd:function(n){n=Math.min(n,this.text.length);this.selectionEnd!==n&&(this.fire("selection:changed"),this.canvas&&this.canvas.fire("text:selection:changed",{target:this}),this.selectionEnd=n);this._updateTextarea()},getSelectionStyles:function(n,t){if(2===arguments.length){for(var i=[],r=n;r<t;r++)i.push(this.getSelectionStyles(r));return i}return i=this.get2DCursorLocation(n),this._getStyleDeclaration(i.lineIndex,i.charIndex)||{}},setSelectionStyles:function(n){if(this.selectionStart===this.selectionEnd)this._extendStyles(this.selectionStart,n);else for(var t=this.selectionStart;t<this.selectionEnd;t++)this._extendStyles(t,n);return this._forceClearCache=!0,this},_extendStyles:function(n,t){var i=this.get2DCursorLocation(n);this._getLineStyle(i.lineIndex)||this._setLineStyle(i.lineIndex,{});this._getStyleDeclaration(i.lineIndex,i.charIndex)||this._setStyleDeclaration(i.lineIndex,i.charIndex,{});fabric.util.object.extend(this._getStyleDeclaration(i.lineIndex,i.charIndex),t)},_render:function(n){this.callSuper("_render",n);this.ctx=n;this.isEditing&&this.renderCursorOrSelection()},renderCursorOrSelection:function(){if(this.active){var i=this.text.split(""),t,n;this.canvas.contextTop?(n=this.canvas.contextTop,n.save(),n.transform.apply(n,this.canvas.viewportTransform),this.transform(n),this.transformMatrix&&n.transform.apply(n,this.transformMatrix)):(n=this.ctx,n.save());this.selectionStart===this.selectionEnd?(t=this._getCursorBoundaries(i,"cursor"),this.renderCursor(t,n)):(t=this._getCursorBoundaries(i,"selection"),this.renderSelection(i,t,n));n.restore()}},get2DCursorLocation:function(n){"undefined"==typeof n&&(n=this.selectionStart);for(var i=this._textLines.length,t=0;t<i;t++){if(n<=this._textLines[t].length)return{lineIndex:t,charIndex:n};n-=this._textLines[t].length+1}return{lineIndex:t-1,charIndex:this._textLines[t-1].length<n?this._textLines[t-1].length:n}},getCurrentCharStyle:function(n,t){var i=this._getStyleDeclaration(n,0===t?0:t-1);return{fontSize:i&&i.fontSize||this.fontSize,fill:i&&i.fill||this.fill,textBackgroundColor:i&&i.textBackgroundColor||this.textBackgroundColor,textDecoration:i&&i.textDecoration||this.textDecoration,fontFamily:i&&i.fontFamily||this.fontFamily,fontWeight:i&&i.fontWeight||this.fontWeight,fontStyle:i&&i.fontStyle||this.fontStyle,stroke:i&&i.stroke||this.stroke,strokeWidth:i&&i.strokeWidth||this.strokeWidth}},getCurrentCharFontSize:function(n,t){var i=this._getStyleDeclaration(n,0===t?0:t-1);return i&&i.fontSize?i.fontSize:this.fontSize},getCurrentCharColor:function(n,t){var i=this._getStyleDeclaration(n,0===t?0:t-1);return i&&i.fill?i.fill:this.cursorColor},_getCursorBoundaries:function(n,t){var r=Math.round(this._getLeftOffset()),u=this._getTopOffset(),i=this._getCursorBoundariesOffsets(n,t);return{left:r,top:u,leftOffset:i.left+i.lineLeft,topOffset:i.top}},_getCursorBoundariesOffsets:function(n,t){for(var o=0,i=0,r=0,f=0,e=0,u=0;u<this.selectionStart;u++)"\n"===n[u]?(e=0,f+=this._getHeightOfLine(this.ctx,i),i++,r=0):(e+=this._getWidthOfChar(this.ctx,n[u],i,r),r++),o=this._getLineLeftOffset(this._getLineWidth(this.ctx,i));return"cursor"===t&&(f+=(1-this._fontSizeFraction)*this._getHeightOfLine(this.ctx,i)/this.lineHeight-this.getCurrentCharFontSize(i,r)*(1-this._fontSizeFraction)),{top:f,left:e,lineLeft:o}},renderCursor:function(n,t){var i=this.get2DCursorLocation(),r=i.lineIndex,i=i.charIndex,u=this.getCurrentCharFontSize(r,i),f=0===r&&0===i?this._getLineLeftOffset(this._getLineWidth(t,r)):n.leftOffset;t.fillStyle=this.getCurrentCharColor(r,i);t.globalAlpha=this.__isMousedown?1:this._currentCursorOpacity;t.fillRect(n.left+f,n.top+n.topOffset,this.cursorWidth/this.scaleX,u)},renderSelection:function(n,t,i){var r,s;i.fillStyle=this.selectionColor;n=this.get2DCursorLocation(this.selectionStart);for(var h=this.get2DCursorLocation(this.selectionEnd),c=n.lineIndex,f=h.lineIndex,u=c;u<=f;u++){var l=this._getLineLeftOffset(this._getLineWidth(i,u))||0,a=this._getHeightOfLine(this.ctx,u),e=0,o=this._textLines[u];if(u===c)for(r=0,s=o.length;r<s;r++)r>=n.charIndex&&(u!==f||r<h.charIndex)&&(e+=this._getWidthOfChar(i,o[r],u,r)),r<n.charIndex&&(l+=this._getWidthOfChar(i,o[r],u,r));else if(u>c&&u<f)e+=this._getLineWidth(i,u)||5;else if(u===f)for(r=0,s=h.charIndex;r<s;r++)e+=this._getWidthOfChar(i,o[r],u,r);i.fillRect(t.left+l,t.top+t.topOffset,e,a);t.topOffset+=a}},_renderChars:function(n,t,i,r,u,f,e){var o,l;if(this.isEmptyStyles())return this._renderCharsFast(n,t,i,r,u);e=e||0;this.skipTextAlign=!0;r-="center"===this.textAlign?this.width/2:"right"===this.textAlign?this.width:0;var a=this._getHeightOfLine(t,f),s=this._getLineLeftOffset(this._getLineWidth(t,f)),h,c="";for(r+=s||0,t.save(),u-=a/this.lineHeight*this._fontSizeFraction,o=e,l=i.length+e;o<=l;o++)h=h||this.getCurrentCharStyle(f,o),s=this.getCurrentCharStyle(f,o+1),(this._hasStyleChanged(h,s)||o===l)&&(this._renderChar(n,t,f,o-1,c,r,u,a),c="",h=s),c+=i[o-e];t.restore()},_renderCharsFast:function(n,t,i,r,u){this.skipTextAlign=!1;"fillText"===n&&this.fill&&this.callSuper("_renderChars",n,t,i,r,u);"strokeText"===n&&(this.stroke&&0<this.strokeWidth||this.skipFillStrokeCheck)&&this.callSuper("_renderChars",n,t,i,r,u)},_renderChar:function(n,t,i,r,u,f,e,o){var s=this._getStyleDeclaration(i,r),h,c;o=this._fontSizeFraction*o/this.lineHeight;s?(h=s.stroke||this.stroke,c=s.fill||this.fill,t.save(),n=this._applyCharStylesGetWidth(t,u,i,r,s),i=this._getHeightOfChar(t,u,i,r),c&&t.fillText(u,f,e),h&&t.strokeText(u,f,e),this._renderCharDecoration(t,s,f,e,o,n,i),t.restore()):("strokeText"===n&&this.stroke&&t[n](u,f,e),"fillText"===n&&this.fill&&t[n](u,f,e),n=this._applyCharStylesGetWidth(t,u,i,r),this._renderCharDecoration(t,null,f,e,o,n,this.fontSize));t.translate(n,0)},_hasStyleChanged:function(n,t){return n.fill!==t.fill||n.fontSize!==t.fontSize||n.textBackgroundColor!==t.textBackgroundColor||n.textDecoration!==t.textDecoration||n.fontFamily!==t.fontFamily||n.fontWeight!==t.fontWeight||n.fontStyle!==t.fontStyle||n.stroke!==t.stroke||n.strokeWidth!==t.strokeWidth},_renderCharDecoration:function(n,t,i,r,u,f,e){(t=t?t.textDecoration||this.textDecoration:this.textDecoration)&&(-1<t.indexOf("underline")&&n.fillRect(i,r+e/10,f,e/15),-1<t.indexOf("line-through")&&n.fillRect(i,r-e*(this._fontSizeFraction+this._fontSizeMult-1)+e/15,f,e/15),-1<t.indexOf("overline")&&n.fillRect(i,r-(this._fontSizeMult-this._fontSizeFraction)*e,f,e/15))},_renderTextLine:function(n,t,i,r,u,f){this.isEmptyStyles()||(u+=this.fontSize*(this._fontSizeFraction+.03));this.callSuper("_renderTextLine",n,t,i,r,u,f)},_renderTextDecoration:function(n){if(this.isEmptyStyles())return this.callSuper("_renderTextDecoration",n)},_renderTextLinesBackground:function(n){var r,e,i,o,u,s;if(this.textBackgroundColor||this.styles){n.save();this.textBackgroundColor&&(n.fillStyle=this.textBackgroundColor);for(var f=0,t=0,h=this._textLines.length;t<h;t++){if(r=this._getHeightOfLine(n,t),""!==this._textLines[t]&&(i=this._getLineWidth(n,t),e=this._getLineLeftOffset(i),this.textBackgroundColor&&(n.fillStyle=this.textBackgroundColor,n.fillRect(this._getLeftOffset()+e,this._getTopOffset()+f,i,r/this.lineHeight)),this._getLineStyle(t)))for(i=0,o=this._textLines[t].length;i<o;i++)u=this._getStyleDeclaration(t,i),u&&u.textBackgroundColor&&(s=this._textLines[t][i],n.fillStyle=u.textBackgroundColor,n.fillRect(this._getLeftOffset()+e+this._getWidthOfCharsAt(n,t,i),this._getTopOffset()+f,this._getWidthOfChar(n,s,t,i)+1,r/this.lineHeight));f+=r}n.restore()}},_getCacheProp:function(n,t){return n+t.fontFamily+t.fontSize+t.fontWeight+t.fontStyle+t.shadow},_applyCharStylesGetWidth:function(n,t,i,r,u){return(i=u||this._getStyleDeclaration(i,r,!0),this._applyFontStyles(i),r=this._getCacheProp(t,i),this.isEmptyStyles()&&this._charWidthsCache[r]&&this.caching)?this._charWidthsCache[r]:("string"==typeof i.shadow&&(i.shadow=new fabric.Shadow(i.shadow)),u=i.fill||this.fill,n.fillStyle=u.toLive?u.toLive(n,this):u,i.stroke&&(n.strokeStyle=i.stroke&&i.stroke.toLive?i.stroke.toLive(n,this):i.stroke),n.lineWidth=i.strokeWidth||this.strokeWidth,n.font=this._getFontDeclaration.call(i),this._setShadow.call(i,n),!this.caching)?n.measureText(t).width:(this._charWidthsCache[r]||(this._charWidthsCache[r]=n.measureText(t).width),this._charWidthsCache[r])},_applyFontStyles:function(n){n.fontFamily||(n.fontFamily=this.fontFamily);n.fontSize||(n.fontSize=this.fontSize);n.fontWeight||(n.fontWeight=this.fontWeight);n.fontStyle||(n.fontStyle=this.fontStyle)},_getStyleDeclaration:function(t,i,r){return r?this.styles[t]&&this.styles[t][i]?n(this.styles[t][i]):{}:this.styles[t]&&this.styles[t][i]?this.styles[t][i]:null},_setStyleDeclaration:function(n,t,i){this.styles[n][t]=i},_deleteStyleDeclaration:function(n,t){delete this.styles[n][t]},_getLineStyle:function(n){return this.styles[n]},_setLineStyle:function(n,t){this.styles[n]=t},_deleteLineStyle:function(n){delete this.styles[n]},_getWidthOfChar:function(n,t,i,r){if("justify"===this.textAlign&&this._reSpacesAndTabs.test(t))return this._getWidthOfSpace(n,i);var u=this._getStyleDeclaration(i,r,!0);return(this._applyFontStyles(u),u=this._getCacheProp(t,u),this._charWidthsCache[u]&&this.caching)?this._charWidthsCache[u]:n?(n.save(),t=this._applyCharStylesGetWidth(n,t,i,r),n.restore(),t):void 0},_getHeightOfChar:function(n,t,i,r){return(n=this._getStyleDeclaration(i,r))&&n.fontSize?n.fontSize:this.fontSize},_getHeightOfCharAt:function(n,t,i){return this._getHeightOfChar(n,this._textLines[t][i],t,i)},_getWidthOfCharsAt:function(n,t,i){for(var u=0,f,r=0;r<i;r++)f=this._textLines[t][r],u+=this._getWidthOfChar(n,f,t,r);return u},_getLineWidth:function(n,t){return this.__lineWidths[t]?this.__lineWidths[t]:(this.__lineWidths[t]=this._getWidthOfCharsAt(n,t,this._textLines[t].length),this.__lineWidths[t])},_getWidthOfSpace:function(n,t){if(this.__widthOfSpace[t])return this.__widthOfSpace[t];var i=this._textLines[t],r=this._getWidthOfWords(n,i,t),r=this.width-r,i=i.length-i.replace(this._reSpacesAndTabs,"").length,i=r/i;return this.__widthOfSpace[t]=i},_getWidthOfWords:function(n,t,i){for(var f,u=0,r=0;r<t.length;r++)f=t[r],f.match(/\s/)||(u+=this._getWidthOfChar(n,f,i,r));return u},_getHeightOfLine:function(n,t){var f;if(this.__lineHeights[t])return this.__lineHeights[t];for(var u=this._textLines[t],i=this._getHeightOfChar(n,u[0],t,0),r=1,e=u.length;r<e;r++)f=this._getHeightOfChar(n,u[r],t,r),f>i&&(i=f);return this.__maxFontHeights[t]=i,this.__lineHeights[t]=i*this.lineHeight*this._fontSizeMult,this.__lineHeights[t]},_getTextHeight:function(n){for(var i=0,t=0,r=this._textLines.length;t<r;t++)i+=this._getHeightOfLine(n,t);return i},_renderTextBoxBackground:function(n){this.backgroundColor&&(n.save(),n.fillStyle=this.backgroundColor,n.fillRect(this._getLeftOffset(),this._getTopOffset(),this.width,this.height),n.restore())},toObject:function(t){var r={},i,u,f;for(i in this.styles)for(u in f=this.styles[i],r[i]={},f)r[i][u]=n(f[u]);return fabric.util.object.extend(this.callSuper("toObject",t),{styles:r})}});fabric.IText.fromObject=function(t){return new fabric.IText(t.text,n(t))}}(),function(){var n=fabric.util.object.clone;fabric.util.object.extend(fabric.IText.prototype,{initBehavior:function(){this.initAddedHandler();this.initRemovedHandler();this.initCursorSelectionHandlers();this.initDoubleClickSimulation()},initSelectedHandler:function(){this.on("selected",function(){var n=this;setTimeout(function(){n.selected=!0},100)})},initAddedHandler:function(){var n=this;this.on("added",function(){this.canvas&&!this.canvas._hasITextHandlers&&(this.canvas._hasITextHandlers=!0,this._initCanvasHandlers());n.canvas&&(n.canvas._iTextInstances=n.canvas._iTextInstances||[],n.canvas._iTextInstances.push(n))})},initRemovedHandler:function(){var n=this;this.on("removed",function(){n.canvas&&(n.canvas._iTextInstances=n.canvas._iTextInstances||[],fabric.util.removeFromArray(n.canvas._iTextInstances,n))})},_initCanvasHandlers:function(){var n=this;this.canvas.on("selection:cleared",function(){fabric.IText.prototype.exitEditingOnOthers(n.canvas)});this.canvas.on("mouse:up",function(){n.canvas._iTextInstances&&n.canvas._iTextInstances.forEach(function(n){n.__isMousedown=!1})});this.canvas.on("object:selected",function(){fabric.IText.prototype.exitEditingOnOthers(n.canvas)})},_tick:function(){this._currentTickState=this._animateCursor(this,1,this.cursorDuration,"_onTickComplete")},_animateCursor:function(n,t,i,r){var u;return u={isAborted:!1,abort:function(){this.isAborted=!0}},n.animate("_currentCursorOpacity",t,{duration:i,onComplete:function(){u.isAborted||n[r]()},onChange:function(){n.canvas&&(n.canvas.clearContext(n.canvas.contextTop||n.ctx),n.renderCursorOrSelection())},abort:function(){return u.isAborted}}),u},_onTickComplete:function(){var n=this;this._cursorTimeout1&&clearTimeout(this._cursorTimeout1);this._cursorTimeout1=setTimeout(function(){n._currentTickCompleteState=n._animateCursor(n,0,this.cursorDuration/2,"_tick")},100)},initDelayedCursor:function(n){var t=this;n=n?0:this.cursorDelay;this._currentTickState&&this._currentTickState.abort();this._currentTickCompleteState&&this._currentTickCompleteState.abort();clearTimeout(this._cursorTimeout1);this._currentCursorOpacity=1;this.canvas&&(this.canvas.clearContext(this.canvas.contextTop||this.ctx),this.renderCursorOrSelection());this._cursorTimeout2&&clearTimeout(this._cursorTimeout2);this._cursorTimeout2=setTimeout(function(){t._tick()},n)},abortCursorAnimation:function(){this._currentTickState&&this._currentTickState.abort();this._currentTickCompleteState&&this._currentTickCompleteState.abort();clearTimeout(this._cursorTimeout1);clearTimeout(this._cursorTimeout2);this._currentCursorOpacity=0;this.canvas&&this.canvas.clearContext(this.canvas.contextTop||this.ctx)},selectAll:function(){this.setSelectionStart(0);this.setSelectionEnd(this.text.length)},getSelectedText:function(){return this.text.slice(this.selectionStart,this.selectionEnd)},findWordBoundaryLeft:function(n){var i=0,t=n-1;if(this._reSpace.test(this.text.charAt(t)))for(;this._reSpace.test(this.text.charAt(t));)i++,t--;for(;/\S/.test(this.text.charAt(t))&&-1<t;)i++,t--;return n-i},findWordBoundaryRight:function(n){var i=0,t=n;if(this._reSpace.test(this.text.charAt(t)))for(;this._reSpace.test(this.text.charAt(t));)i++,t++;for(;/\S/.test(this.text.charAt(t))&&t<this.text.length;)i++,t++;return n+i},findLineBoundaryLeft:function(n){for(var i=0,t=n-1;!/\n/.test(this.text.charAt(t))&&-1<t;)i++,t--;return n-i},findLineBoundaryRight:function(n){for(var i=0,t=n;!/\n/.test(this.text.charAt(t))&&t<this.text.length;)i++,t++;return n+i},getNumNewLinesInSelectedText:function(){for(var t=this.getSelectedText(),i=0,n=0,r=t.length;n<r;n++)"\n"===t[n]&&i++;return i},searchWordBoundary:function(n,t){for(var i=this._reSpace.test(this.text.charAt(n))?n-1:n,r=this.text.charAt(i),u=/[ \n\.,;!\?\-]/;!u.test(r)&&0<i&&i<this.text.length;)i+=t,r=this.text.charAt(i);return u.test(r)&&"\n"!==r&&(i+=1===t?0:1),i},selectWord:function(n){var t=this.searchWordBoundary(n,-1);n=this.searchWordBoundary(n,1);this.setSelectionStart(t);this.setSelectionEnd(n)},selectLine:function(n){var t=this.findLineBoundaryLeft(n);n=this.findLineBoundaryRight(n);this.setSelectionStart(t);this.setSelectionEnd(n)},enterEditing:function(){if(!this.isEditing&&this.editable)return(this.canvas&&this.exitEditingOnOthers(this.canvas),this.isEditing=!0,this.initHiddenTextarea(),this.hiddenTextarea.focus(),this._updateTextarea(),this._saveEditingProps(),this._setEditingProps(),this._tick(),this.fire("editing:entered"),!this.canvas)?this:(this.canvas.renderAll(),this.canvas.fire("text:editing:entered",{target:this}),this.initMouseMoveHandler(),this)},exitEditingOnOthers:function(n){n._iTextInstances&&n._iTextInstances.forEach(function(n){n.selected=!1;n.isEditing&&n.exitEditing()})},initMouseMoveHandler:function(){var n=this;this.canvas.on("mouse:move",function(t){n.__isMousedown&&n.isEditing&&(t=n.getSelectionStartFromPointer(t.e),t>=n.__selectionStartOnMouseDown?(n.setSelectionStart(n.__selectionStartOnMouseDown),n.setSelectionEnd(t)):(n.setSelectionStart(t),n.setSelectionEnd(n.__selectionStartOnMouseDown)))})},_setEditingProps:function(){this.hoverCursor="text";this.canvas&&(this.canvas.defaultCursor=this.canvas.moveCursor="text");this.borderColor=this.editingBorderColor;this.hasControls=this.selectable=!1;this.lockMovementX=this.lockMovementY=!0},_updateTextarea:function(){this.hiddenTextarea&&(this.hiddenTextarea.value=this.text,this.hiddenTextarea.selectionStart=this.selectionStart,this.hiddenTextarea.selectionEnd=this.selectionEnd)},_saveEditingProps:function(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,defaultCursor:this.canvas&&this.canvas.defaultCursor,moveCursor:this.canvas&&this.canvas.moveCursor}},_restoreEditingProps:function(){this._savedProps&&(this.hoverCursor=this._savedProps.overCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY,this.canvas&&(this.canvas.defaultCursor=this._savedProps.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor))},exitEditing:function(){return this.isEditing=this.selected=!1,this.selectable=!0,this.selectionEnd=this.selectionStart,this.hiddenTextarea&&this.canvas&&this.hiddenTextarea.parentNode.removeChild(this.hiddenTextarea),this.hiddenTextarea=null,this.abortCursorAnimation(),this._restoreEditingProps(),this._currentCursorOpacity=0,this.fire("editing:exited"),this.canvas&&this.canvas.fire("text:editing:exited",{target:this}),this},_removeExtraneousStyles:function(){for(var n in this.styles)this._textLines[n]||delete this.styles[n]},_removeCharsFromTo:function(n,t){for(;t!==n;)this._removeSingleCharAndStyle(n+1),t--;this.setSelectionStart(n)},_removeSingleCharAndStyle:function(n){var t="\n"===this.text[n-1];this.removeStyleObject(t,t?n:n-1);this.text=this.text.slice(0,n-1)+this.text.slice(n);this._textLines=this._splitTextIntoLines()},insertChars:function(n,t){var u,i,r;for(1<this.selectionEnd-this.selectionStart&&(this._removeCharsFromTo(this.selectionStart,this.selectionEnd),this.setSelectionEnd(this.selectionStart)),i=0,r=n.length;i<r;i++)t&&(u=fabric.copiedTextStyle[i]),this.insertChar(n[i],i<r-1,u)},insertChar:function(n,t,i){var r="\n"===this.text[this.selectionStart];this.text=this.text.slice(0,this.selectionStart)+n+this.text.slice(this.selectionEnd);this._textLines=this._splitTextIntoLines();this.insertStyleObjects(n,r,i);this.selectionEnd=this.selectionStart+=1;t||(this._updateTextarea(),this.canvas&&this.canvas.renderAll(),this.setCoords(),this.fire("changed"),this.canvas&&this.canvas.fire("text:changed",{target:this}))},insertNewlineStyleObject:function(t,i,r){var e,f,u;if(this.shiftLineStyles(t,1),this.styles[t+1]||(this.styles[t+1]={}),e={},f={},this.styles[t]&&this.styles[t][i-1]&&(e=this.styles[t][i-1]),r)f[0]=n(e);else for(u in this.styles[t])parseInt(u,10)>=i&&(f[parseInt(u,10)-i]=this.styles[t][u],delete this.styles[t][u]);this.styles[t+1]=f;this._forceClearCache=!0},insertCharStyleObject:function(t,i,r){var f=this.styles[t],e=n(f),o,u;0!==i||r||(i=1);for(o in e)u=parseInt(o,10),u>=i&&(f[u+1]=e[u],e[u-1]||delete f[u]);this.styles[t][i]=r||n(f[i-1]);this._forceClearCache=!0},insertStyleObjects:function(n,t,i){var r=this.get2DCursorLocation(),u=r.lineIndex,r=r.charIndex;this._getLineStyle(u)||this._setLineStyle(u,{});"\n"===n?this.insertNewlineStyleObject(u,r,t):this.insertCharStyleObject(u,r,i)},shiftLineStyles:function(t,i){var u=n(this.styles),f,r;for(f in this.styles)r=parseInt(f,10),r>t&&(this.styles[r+i]=u[r],u[r-i]||delete this.styles[r])},removeStyleObject:function(t,i){var u=this.get2DCursorLocation(i),r=u.lineIndex,u=u.charIndex,f,o,e;if(t){f=this._textLines[r-1];f=f?f.length:0;this.styles[r-1]||(this.styles[r-1]={});for(u in this.styles[r])this.styles[r-1][parseInt(u,10)+f]=this.styles[r][u];this.shiftLineStyles(r,-1)}else{(r=this.styles[r])&&delete r[u];o=n(r);for(f in o)e=parseInt(f,10),e>=u&&0!==e&&(r[e-1]=o[e],delete r[e])}},insertNewline:function(){this.insertChars("\n")}})}();fabric.util.object.extend(fabric.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+new Date;this.__lastLastClickTime=+new Date;this.__lastPointer={};this.on("mousedown",this.onMouseDown.bind(this))},onMouseDown:function(n){this.__newClickTime=+new Date;var t=this.canvas.getPointer(n.e);this.isTripleClick(t)?(this.fire("tripleclick",n),this._stopEvent(n.e)):this.isDoubleClick(t)&&(this.fire("dblclick",n),this._stopEvent(n.e));this.__lastLastClickTime=this.__lastClickTime;this.__lastClickTime=this.__newClickTime;this.__lastPointer=t;this.__lastIsEditing=this.isEditing;this.__lastSelected=this.selected},isDoubleClick:function(n){return 500>this.__newClickTime-this.__lastClickTime&&this.__lastPointer.x===n.x&&this.__lastPointer.y===n.y&&this.__lastIsEditing},isTripleClick:function(n){return 500>this.__newClickTime-this.__lastClickTime&&500>this.__lastClickTime-this.__lastLastClickTime&&this.__lastPointer.x===n.x&&this.__lastPointer.y===n.y},_stopEvent:function(n){n.preventDefault&&n.preventDefault();n.stopPropagation&&n.stopPropagation()},initCursorSelectionHandlers:function(){this.initSelectedHandler();this.initMousedownHandler();this.initMouseupHandler();this.initClicks()},initClicks:function(){this.on("dblclick",function(n){this.selectWord(this.getSelectionStartFromPointer(n.e))});this.on("tripleclick",function(n){this.selectLine(this.getSelectionStartFromPointer(n.e))})},initMousedownHandler:function(){this.on("mousedown",function(n){var t=this.canvas.getPointer(n.e);this.__mousedownX=t.x;this.__mousedownY=t.y;this.__isMousedown=!0;this.hiddenTextarea&&this.canvas&&this.canvas.wrapperEl.appendChild(this.hiddenTextarea);this.selected&&this.setCursorByClick(n.e);this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.initDelayedCursor(!0))})},_isObjectMoved:function(n){return n=this.canvas.getPointer(n),this.__mousedownX!==n.x||this.__mousedownY!==n.y},initMouseupHandler:function(){this.on("mouseup",function(n){this.__isMousedown=!1;this._isObjectMoved(n.e)||(this.__lastSelected&&!this.__corner&&(this.enterEditing(),this.initDelayedCursor(!0)),this.selected=!0)})},setCursorByClick:function(n){var t=this.getSelectionStartFromPointer(n);n.shiftKey?t<this.selectionStart?(this.setSelectionEnd(this.selectionStart),this.setSelectionStart(t)):this.setSelectionEnd(t):(this.setSelectionStart(t),this.setSelectionEnd(t))},getSelectionStartFromPointer:function(n){var r,u;n=this.getLocalPointer(n);for(var e=0,i,o=0,s=0,f,t=0,h=this._textLines.length;t<h;t++){for(f=this._textLines[t],o+=this._getHeightOfLine(this.ctx,t)*this.scaleY,i=this._getLineWidth(this.ctx,t),i=this._getLineLeftOffset(i)*this.scaleX,this.flipX&&(this._textLines[t]=f.reverse().join("")),r=0,u=f.length;r<u;r++)if(e=i,i+=this._getWidthOfChar(this.ctx,f[r],t,this.flipX?u-r:r)*this.scaleX,o<=n.y||i<=n.x)s++;else return this._getNewSelectionStartFromOffset(n,e,i,s+t,u);if(n.y<o)return this._getNewSelectionStartFromOffset(n,e,i,s+t-1,u)}return this.text.length},_getNewSelectionStartFromOffset:function(n,t,i,r,u){return n=r+(i-n.x>n.x-t?0:1),this.flipX&&(n=u-n),n>this.text.length&&(n=this.text.length),n}});fabric.util.object.extend(fabric.IText.prototype,{initHiddenTextarea:function(){this.hiddenTextarea=fabric.document.createElement("textarea");this.hiddenTextarea.setAttribute("autocapitalize","off");this.hiddenTextarea.style.cssText="position: fixed; bottom: 20px; left: 0px; opacity: 0; width: 0px; height: 0px; z-index: -999;";fabric.document.body.appendChild(this.hiddenTextarea);fabric.util.addListener(this.hiddenTextarea,"keydown",this.onKeyDown.bind(this));fabric.util.addListener(this.hiddenTextarea,"input",this.onInput.bind(this));fabric.util.addListener(this.hiddenTextarea,"copy",this.copy.bind(this));fabric.util.addListener(this.hiddenTextarea,"paste",this.paste.bind(this));!this._clickHandlerInitialized&&this.canvas&&(fabric.util.addListener(this.canvas.upperCanvasEl,"click",this.onClick.bind(this)),this._clickHandlerInitialized=!0)},_keysMap:{8:"removeChars",9:"exitEditing",27:"exitEditing",13:"insertNewline",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorRight",36:"moveCursorLeft",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown",46:"forwardDelete"},_ctrlKeysMap:{65:"selectAll",88:"cut"},onClick:function(){this.hiddenTextarea&&this.hiddenTextarea.focus()},onKeyDown:function(n){if(this.isEditing){if(n.keyCode in this._keysMap)this[this._keysMap[n.keyCode]](n);else if(n.keyCode in this._ctrlKeysMap&&(n.ctrlKey||n.metaKey))this[this._ctrlKeysMap[n.keyCode]](n);else return;n.stopImmediatePropagation();n.preventDefault();this.canvas&&this.canvas.renderAll()}},onInput:function(n){if(!this.isEditing||this._cancelOnInput)this._cancelOnInput=!1;else{var t=this.selectionStart||0,t=this.hiddenTextarea.value.slice(t,t+(this.hiddenTextarea.value.length-this.text.length));this.insertChars(t);n.stopPropagation()}},forwardDelete:function(n){if(this.selectionStart===this.selectionEnd){if(this.selectionStart===this.text.length)return;this.moveCursorRight(n)}this.removeChars(n)},copy:function(n){var t=this.getSelectedText();(n=this._getClipboardData(n))&&n.setData("text",t);fabric.copiedText=t;fabric.copiedTextStyle=this.getSelectionStyles(this.selectionStart,this.selectionEnd)},paste:function(n){var t;t=this._getClipboardData(n);n=!0;t?(t=t.getData("text").replace(/\r/g,""),fabric.copiedTextStyle&&fabric.copiedText===t||(n=!1)):t=fabric.copiedText;t&&this.insertChars(t,n);this._cancelOnInput=!0},cut:function(n){this.selectionStart!==this.selectionEnd&&(this.copy(),this.removeChars(n))},_getClipboardData:function(n){return n&&(n.clipboardData||fabric.window.clipboardData)},getDownCursorOffset:function(n,t){var i=t?this.selectionEnd:this.selectionStart,r=this.get2DCursorLocation(i),u=r.lineIndex,e=this._textLines[u].slice(0,r.charIndex),s=this._textLines[u].slice(r.charIndex),h=this._textLines[u+1]||"";if(u===this._textLines.length-1||n.metaKey||34===n.keyCode)return this.text.length-i;for(var i=this._getLineWidth(this.ctx,u),o=this._getLineLeftOffset(i),f=0,c=e.length;f<c;f++)i=e[f],o+=this._getWidthOfChar(this.ctx,i,u,f);return r=this._getIndexOnNextLine(r,h,o),s.length+1+r},_getIndexOnNextLine:function(n,t,i){var e,r;n=n.lineIndex+1;for(var r=this._getLineWidth(this.ctx,n),r=this._getLineLeftOffset(r),f=0,o,u=0,s=t.length;u<s;u++)if(e=this._getWidthOfChar(this.ctx,t[u],n,u),r=r+e,r>i){o=!0;f=Math.abs(r-i)<Math.abs(r-e-i)?u+1:u;break}return o||(f=t.length),f},moveCursorDown:function(n){this.abortCursorAnimation();this._currentCursorOpacity=1;var t=this.getDownCursorOffset(n,"right"===this._selectionDirection);n.shiftKey?this.moveCursorDownWithShift(t):this.moveCursorDownWithoutShift(t);this.initDelayedCursor()},moveCursorDownWithoutShift:function(n){this._selectionDirection="right";this.setSelectionStart(this.selectionStart+n);this.setSelectionEnd(this.selectionStart)},swapSelectionPoints:function(){var n=this.selectionEnd;this.setSelectionEnd(this.selectionStart);this.setSelectionStart(n)},moveCursorDownWithShift:function(n){this.selectionEnd===this.selectionStart&&(this._selectionDirection="right");"right"===this._selectionDirection?this.setSelectionEnd(this.selectionEnd+n):this.setSelectionStart(this.selectionStart+n);this.selectionEnd<this.selectionStart&&"left"===this._selectionDirection&&(this.swapSelectionPoints(),this._selectionDirection="right");this.selectionEnd>this.text.length&&this.setSelectionEnd(this.text.length)},getUpCursorOffset:function(n,t){var i=t?this.selectionEnd:this.selectionStart,r=this.get2DCursorLocation(i),u=r.lineIndex,o,f;if(0===u||n.metaKey||33===n.keyCode)return i;i=this._textLines[u].slice(0,r.charIndex);o=this._textLines[u-1]||"";f=this._getLineWidth(this.ctx,r.lineIndex);for(var s=this._getLineLeftOffset(f),e=0,h=i.length;e<h;e++)f=i[e],s+=this._getWidthOfChar(this.ctx,f,u,e);return r=this._getIndexOnPrevLine(r,o,s),o.length-r+i.length},_getIndexOnPrevLine:function(n,t,i){var e,r;n=n.lineIndex-1;for(var r=this._getLineWidth(this.ctx,n),r=this._getLineLeftOffset(r),f=0,o,u=0,s=t.length;u<s;u++)if(e=this._getWidthOfChar(this.ctx,t[u],n,u),r=r+e,r>i){o=!0;f=Math.abs(r-i)<Math.abs(r-e-i)?u:u-1;break}return o||(f=t.length-1),f},moveCursorUp:function(n){this.abortCursorAnimation();this._currentCursorOpacity=1;var t=this.getUpCursorOffset(n,"right"===this._selectionDirection);n.shiftKey?this.moveCursorUpWithShift(t):this.moveCursorUpWithoutShift(t);this.initDelayedCursor()},moveCursorUpWithShift:function(n){this.selectionEnd===this.selectionStart&&(this._selectionDirection="left");"right"===this._selectionDirection?this.setSelectionEnd(this.selectionEnd-n):this.setSelectionStart(this.selectionStart-n);this.selectionEnd<this.selectionStart&&"right"===this._selectionDirection&&(this.swapSelectionPoints(),this._selectionDirection="left")},moveCursorUpWithoutShift:function(n){this.selectionStart===this.selectionEnd&&this.setSelectionStart(this.selectionStart-n);this.setSelectionEnd(this.selectionStart);this._selectionDirection="left"},moveCursorLeft:function(n){(0!==this.selectionStart||0!==this.selectionEnd)&&(this.abortCursorAnimation(),this._currentCursorOpacity=1,n.shiftKey?this.moveCursorLeftWithShift(n):this.moveCursorLeftWithoutShift(n),this.initDelayedCursor())},_move:function(n,t,i){var r="selectionStart"===t?"setSelectionStart":"setSelectionEnd";n.altKey?this[r](this["findWordBoundary"+i](this[t])):n.metaKey||35===n.keyCode||36===n.keyCode?this[r](this["findLineBoundary"+i](this[t])):this[r](this[t]+("Left"===i?-1:1))},_moveLeft:function(n,t){this._move(n,t,"Left")},_moveRight:function(n,t){this._move(n,t,"Right")},moveCursorLeftWithoutShift:function(n){this._selectionDirection="left";this.selectionEnd===this.selectionStart&&this._moveLeft(n,"selectionStart");this.setSelectionEnd(this.selectionStart)},moveCursorLeftWithShift:function(n){"right"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveLeft(n,"selectionEnd"):(this._selectionDirection="left",this._moveLeft(n,"selectionStart"))},moveCursorRight:function(n){this.selectionStart>=this.text.length&&this.selectionEnd>=this.text.length||(this.abortCursorAnimation(),this._currentCursorOpacity=1,n.shiftKey?this.moveCursorRightWithShift(n):this.moveCursorRightWithoutShift(n),this.initDelayedCursor())},moveCursorRightWithShift:function(n){"left"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveRight(n,"selectionStart"):(this._selectionDirection="right",this._moveRight(n,"selectionEnd"))},moveCursorRightWithoutShift:function(n){this._selectionDirection="right";this.selectionStart===this.selectionEnd?(this._moveRight(n,"selectionStart"),this.setSelectionEnd(this.selectionStart)):(this.setSelectionEnd(this.selectionEnd+this.getNumNewLinesInSelectedText()),this.setSelectionStart(this.selectionEnd))},removeChars:function(n){this.selectionStart===this.selectionEnd?this._removeCharsNearCursor(n):this._removeCharsFromTo(this.selectionStart,this.selectionEnd);this.setSelectionEnd(this.selectionStart);this._removeExtraneousStyles();this.canvas&&this.canvas.renderAll();this.setCoords();this.fire("changed");this.canvas&&this.canvas.fire("text:changed",{target:this})},_removeCharsNearCursor:function(n){0!==this.selectionStart&&(n.metaKey?(n=this.findLineBoundaryLeft(this.selectionStart),this._removeCharsFromTo(n,this.selectionStart),this.setSelectionStart(n)):n.altKey?(n=this.findWordBoundaryLeft(this.selectionStart),this._removeCharsFromTo(n,this.selectionStart),this.setSelectionStart(n)):(this._removeSingleCharAndStyle(this.selectionStart),this.setSelectionStart(this.selectionStart-1)))}}),function(){var n=fabric.util.toFixed,t=fabric.Object.NUM_FRACTION_DIGITS;fabric.util.object.extend(fabric.IText.prototype,{_setSVGTextLineText:function(n,t,i,r,u,f){this.styles[n]?this._setSVGTextLineChars(n,t,i,r,f):fabric.Text.prototype._setSVGTextLineText.call(this,n,t,i,r,u)},_setSVGTextLineChars:function(n,t,i,r,u){var e,s;i=this._textLines[n];r=0;for(var h=this._getLineLeftOffset(this._getLineWidth(this.ctx,n))-this.width/2,o=this._getSVGLineTopOffset(n),c=this._getHeightOfLine(this.ctx,n),f=0,l=i.length;f<l;f++)e=this.styles[n][f]||{},t.push(this._createTextCharSpan(i[f],e,h,o.lineTop+o.offset,r)),s=this._getWidthOfChar(this.ctx,i[f],n,f),e.textBackgroundColor&&u.push(this._createTextCharBg(e,h,o.lineTop,c,s,r)),r+=s},_getSVGLineTopOffset:function(n){for(var i=0,t=0;t<n;t++)i+=this._getHeightOfLine(this.ctx,t);return n=this._getHeightOfLine(this.ctx,t),{lineTop:i,offset:(this._fontSizeMult-this._fontSizeFraction)*n/(this.lineHeight*this._fontSizeMult)}},_createTextCharBg:function(i,r,u,f,e,o){return['<rect fill="',i.textBackgroundColor,'" x="',n(r+o,t),'" y="',n(u-this.height/2,t),'" width="',n(e,t),'" height="',n(f/this.lineHeight,t),'"><\/rect>'].join("")},_createTextCharSpan:function(i,r,u,f,e){var o=this.getSvgStyles.call(fabric.util.object.extend({visible:!0,fill:this.fill,stroke:this.stroke,type:"text"},r));return['<tspan x="',n(u+e,t),'" y="',n(f-this.height/2,t),'" ',r.fontFamily?'font-family="'+r.fontFamily.replace(/"/g,"'")+'" ':"",r.fontSize?'font-size="'+r.fontSize+'" ':"",r.fontStyle?'font-style="'+r.fontStyle+'" ':"",r.fontWeight?'font-weight="'+r.fontWeight+'" ':"",r.textDecoration?'text-decoration="'+r.textDecoration+'" ':"",'style="',o,'">',fabric.util.string.escapeXml(i),"<\/tspan>"].join("")}})}(),function(n){var t=n.fabric||(n.fabric={}),i=t.util.object.clone;t.Textbox=t.util.createClass(t.IText,t.Observable,{type:"textbox",minWidth:20,dynamicMinWidth:0,__cachedLines:null,initialize:function(n,i){this.ctx=t.util.createCanvasElement().getContext("2d");this.callSuper("initialize",n,i);this.set({lockUniScaling:!1,lockScalingY:!0,lockScalingFlip:!0,hasBorders:!0});this.setControlsVisibility(t.Textbox.getTextboxControlVisibility());this._dimensionAffectingProps.width=!0},_initDimensions:function(n){this.__skipDimension||(n||(n=t.util.createCanvasElement().getContext("2d"),this._setTextStyles(n)),this.dynamicMinWidth=0,this._textLines=this._splitTextIntoLines(),this.dynamicMinWidth>this.width&&this._set("width",this.dynamicMinWidth),this._clearCache(),this.height=this._getTextHeight(n))},_generateStyleMap:function(){for(var r=0,i=0,n=0,u={},t=0;t<this._textLines.length;t++)"\n"===this.text[n]?(i=0,n++,r++):" "===this.text[n]&&(i++,n++),u[t]={line:r,offset:i},n+=this._textLines[t].length,i+=this._textLines[t].length;return u},_getStyleDeclaration:function(n,t,i){if(this._styleMap){var r=this._styleMap[n];n=r.line;t=r.offset+t}return this.callSuper("_getStyleDeclaration",n,t,i)},_setStyleDeclaration:function(n,t,i){var r=this._styleMap[n];n=r.line;t=r.offset+t;this.styles[n][t]=i},_deleteStyleDeclaration:function(n,t){var i=this._styleMap[n];n=i.line;t=i.offset+t;delete this.styles[n][t]},_getLineStyle:function(n){return this.styles[this._styleMap[n].line]},_setLineStyle:function(n,t){this.styles[this._styleMap[n].line]=t},_deleteLineStyle:function(n){delete this.styles[this._styleMap[n].line]},_wrapText:function(n,t){for(var u=t.split(this._reNewline),r=[],i=0;i<u.length;i++)r=r.concat(this._wrapLine(n,u[i],i));return r},_measureText:function(n,t,i,r){var f=0,e,u;for(r=r||0,u=0;u<t.length;u++)this.styles&&this.styles[i]&&(e=this.styles[i][u+r])?(n.save(),f+=this._applyCharStylesGetWidth(n,t[u],i,u,e),n.restore()):f+=this._applyCharStylesGetWidth(n,t[u],i,u,{});return f},_wrapLine:function(n,t,i){var c=this.width,u=this._measureText(n,t,i,0),o,r,s,h,f,e;if(u<c)return-1===t.indexOf(" ")&&u>this.dynamicMinWidth&&(this.dynamicMinWidth=u),[t];for(o=[],r="",t=t.split(" "),s=0,e=0;0<t.length;)h=""===r?"":" ",f=this._measureText(n,t[0],i,r.length+h.length+s),u=""===r?f:this._measureText(n,r+h+t[0],i,s),u<c||""===r&&f>=c?r+=h+t.shift():(s+=r.length+1,o.push(r),r=""),0===t.length&&o.push(r),f>e&&(e=f);return e>this.dynamicMinWidth&&(this.dynamicMinWidth=e),o},_splitTextIntoLines:function(){this.ctx.save();this._setTextStyles(this.ctx);var n=this._wrapText(this.ctx,this.text);return this.ctx.restore(),this._textLines=n,this._styleMap=this._generateStyleMap(),n},setOnGroup:function(n,t){"scaleX"===n&&(this.set("scaleX",Math.abs(1/t)),this.set("width",this.get("width")*t/("undefined"==typeof this.__oldScaleX?1:this.__oldScaleX)),this.__oldScaleX=t)},get2DCursorLocation:function(n){var u;"undefined"==typeof n&&(n=this.selectionStart);for(var r=this._textLines.length,t=0,i=0;i<r;i++){if(u=this._textLines[i].length,n<=t+u)return{lineIndex:i,charIndex:n-t};t+=u;"\n"!==this.text[t]&&" "!==this.text[t]||t++}return{lineIndex:r-1,charIndex:this._textLines[r-1].length}},_getCursorBoundariesOffsets:function(n,t){for(var u=0,f=0,i=this.get2DCursorLocation(),e=this._textLines[i.lineIndex].split(""),o=this._getLineLeftOffset(this._getLineWidth(this.ctx,i.lineIndex)),r=0;r<i.charIndex;r++)f+=this._getWidthOfChar(this.ctx,e[r],i.lineIndex,r);for(r=0;r<i.lineIndex;r++)u+=this._getHeightOfLine(this.ctx,r);return"cursor"===t&&(u+=(1-this._fontSizeFraction)*this._getHeightOfLine(this.ctx,i.lineIndex)/this.lineHeight-this.getCurrentCharFontSize(i.lineIndex,i.charIndex)*(1-this._fontSizeFraction)),{top:u,left:f,lineLeft:o}},getMinWidth:function(){return Math.max(this.minWidth,this.dynamicMinWidth)},toObject:function(n){return t.util.object.extend(this.callSuper("toObject",n),{minWidth:this.minWidth})}});t.Textbox.fromObject=function(n){return new t.Textbox(n.text,i(n))};t.Textbox.getTextboxControlVisibility=function(){return{tl:!1,tr:!1,br:!1,bl:!1,ml:!0,mt:!1,mr:!0,mb:!1,mtr:!0}};t.Textbox.instances=[]}("undefined"!=typeof exports?exports:this),function(){var t=fabric.Canvas.prototype._setObjectScale,n;fabric.Canvas.prototype._setObjectScale=function(n,i,r,u,f,e){var o=i.target;o instanceof fabric.Textbox?(n=n.x/i.scaleX/(o.width+o.strokeWidth)*o.width,n>=o.getMinWidth()&&o.set("width",n)):t.call(fabric.Canvas.prototype,n,i,r,u,f,e)};fabric.Group.prototype._refreshControlsVisibility=function(){if("undefined"!=typeof fabric.Textbox)for(var n=this._objects.length;n--;)if(this._objects[n]instanceof fabric.Textbox){this.setControlsVisibility(fabric.Textbox.getTextboxControlVisibility());break}};n=fabric.util.object.clone;fabric.util.object.extend(fabric.Textbox.prototype,{_removeExtraneousStyles:function(){for(var n in this._styleMap)this._textLines[n]||delete this.styles[this._styleMap[n].line]},insertCharStyleObject:function(n,t,i){var r=this._styleMap[n];n=r.line;t=r.offset+t;fabric.IText.prototype.insertCharStyleObject.apply(this,[n,t,i])},insertNewlineStyleObject:function(n,t,i){var r=this._styleMap[n];n=r.line;t=r.offset+t;fabric.IText.prototype.insertNewlineStyleObject.apply(this,[n,t,i])},shiftLineStyles:function(t,i){var u=n(this.styles),f,r;t=this._styleMap[t].line;for(f in this.styles)r=parseInt(f,10),r>t&&(this.styles[r+i]=u[r],u[r-i]||delete this.styles[r])},_getTextOnPreviousLine:function(n){for(var t=this._textLines[n-1];this._styleMap[n-2]&&this._styleMap[n-2].line===this._styleMap[n-1].line;)t=this._textLines[n-2]+t,n--;return t},removeStyleObject:function(t,i){var r=this.get2DCursorLocation(i),f=this._styleMap[r.lineIndex],u=f.line,f=f.offset+r.charIndex,e,o;if(t){e=this._getTextOnPreviousLine(r.lineIndex);e=e?e.length:0;this.styles[u-1]||(this.styles[u-1]={});for(f in this.styles[u])this.styles[u-1][parseInt(f,10)+e]=this.styles[u][f];this.shiftLineStyles(r.lineIndex,-1)}else for(e in(r=this.styles[u])&&delete r[f],u=n(r),u)o=parseInt(e,10),o>=f&&0!==o&&(r[o-1]=u[o],delete r[o])}})}(),function(){var n=fabric.IText.prototype._getNewSelectionStartFromOffset;fabric.IText.prototype._getNewSelectionStartFromOffset=function(t,i,r,u,f){for(u=n.call(this,t,i,r,u,f),r=i=t=0;r<this._textLines.length;r++){if(t+=this._textLines[r].length,t+i>=u)break;"\n"!==this.text[t+i]&&" "!==this.text[t+i]||i++}return u-r+i}}(),function(){function n(n,t,i){var r=e.parse(n);r.port||(r.port=0===r.protocol.indexOf("https:")?443:80);n=(0===r.protocol.indexOf("https:")?s:o).request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(n){var r="";t&&n.setEncoding(t);n.on("end",function(){i(r)});n.on("data",function(t){200===n.statusCode&&(r+=t)})});n.on("error",function(n){n.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(n.message);i(null)});n.end()}function t(n,t){require("fs").readFile(n,function(n,i){if(n)throw fabric.log(n),n;t(i)})}var r,u;if("undefined"==typeof document||"undefined"==typeof window){var f=require("xmldom").DOMParser,e=require("url"),o=require("http"),s=require("https"),i=require("canvas"),h=require("canvas").Image;fabric.util.loadImage=function(i,r,u){function e(n){n?(f.src=new Buffer(n,"binary"),f._src=i,r&&r.call(u,f)):(f=null,r&&r.call(u,null,!0))}var f=new h;i&&(i instanceof Buffer||0===i.indexOf("data"))?(f.src=f._src=i,r&&r.call(u,f)):i&&0!==i.indexOf("http")?t(i,e):i?n(i,"binary",e):r&&r.call(u,i)};fabric.loadSVGFromURL=function(i,r,u){i=i.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim();0!==i.indexOf("http")?t(i,function(n){fabric.loadSVGFromString(n.toString(),r,u)}):n(i,"",function(n){fabric.loadSVGFromString(n,r,u)})};fabric.loadSVGFromString=function(n,t,i){n=(new f).parseFromString(n);fabric.parseSVGDocument(n.documentElement,function(n,i){t&&t(n,i)},i)};fabric.util.getScript=function(t,i){n(t,"",function(a){eval(a);i&&i()})};fabric.Image.fromObject=function(n,t){fabric.util.loadImage(n.src,function(i){var r=new fabric.Image(i);r._initConfig(n);r._initFilters(n.filters,function(i){r.filters=i||[];r._initFilters(n.resizeFilters,function(n){r.resizeFilters=n||[];t&&t(r)})})})};fabric.createCanvasForNode=function(n,t,r,u){u=u||r;var f=fabric.document.createElement("canvas");return n=new i(n||600,t||600,u),f.style={},f.width=n.width,f.height=n.height,r=new(fabric.Canvas||fabric.StaticCanvas)(f,r),r.contextContainer=n.getContext("2d"),r.nodeCanvas=n,r.Font=i.Font,r};fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()};fabric.StaticCanvas.prototype.createJPEGStream=function(n){return this.nodeCanvas.createJPEGStream(n)};r=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(n,t){return r.call(this,n,t),this.nodeCanvas.width=n,this};fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);u=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(n,t){return u.call(this,n,t),this.nodeCanvas.height=n,this};fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}}(),function(){var t,n,f,s,h,c,e,r,l,a;void 0!==document.createElement("div").style.transform?(n=t="",f="transform"):window.opera&&"[object Opera]"===Object.prototype.toString.call(window.opera)?(t="-o-",n="O",f="OTransform"):void 0!==document.documentElement.style.MozTransform?(t="-moz-",n="Moz",f="MozTransform"):void 0!==document.documentElement.style.webkitTransform?(t="-webkit-",n="webkit",f="-webkit-transform"):"string"==typeof navigator.cpuClass&&(t="-ms-",n="ms",f="-ms-transform");"pointerEnabled"in window.navigator?(s=!1,r=window.navigator.pointerEnabled,h="setPointerCapture",c="releasePointerCapture",e="lostpointercapture",l="touch"):"msPointerEnabled"in window.navigator&&(s=!0,r=window.navigator.msPointerEnabled,h="msSetPointerCapture",c="msReleasePointerCapture",e="MSLostPointerCapture",l=2);var i=!1,b=!r,u=!1;"hasOwnProperty"in window&&(u=!window.hasOwnProperty("ArrayBuffer"));a=window.Selection&&window.Selection.prototype.removeAllRanges;u||void 0!==document.createElement("div").style[n+(n?"P":"p")+"erspective"]||(u=!0);var v=n+(n?"T":"t")+"ransform",o=n+(n?"T":"t")+"ransition",y=u?"translate(":"translate3d(",p={x:"",y:"0,"},w={x:",0"+(u?")":",0)"),y:u?")":",0)"};(function(){var r=document.getElementsByTagName("head")[0]||document.documentElement,n=document.createElement("style"),i;n.type="text/css";i=[".ftscroller_container { overflow: hidden; position: relative; max-height: 100%; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -ms-touch-action: none }",".ftscroller_hwaccelerated { "+(u?t+"transform-style: preserve-3d;":t+"transform: translateZ(0);")+" }",".ftscroller_x, .ftscroller_y { position: relative; min-width: 100%; min-height: 100%; overflow: hidden }",".ftscroller_x { display: inline-block }",".ftscroller_scrollbar { pointer-events: none; position: absolute; width: 5px; height: 5px; border: 1px solid rgba(255, 255, 255, 0.3); -webkit-border-radius: 3px; border-radius: 6px; opacity: 0; "+t+"transition: opacity 350ms; z-index: 10; -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box }",".ftscroller_scrollbarx { bottom: 2px; left: 2px }",".ftscroller_scrollbary { right: 2px; top: 2px }",".ftscroller_scrollbarinner { height: 100%; background: #000; -webkit-border-radius: 2px; border-radius: 4px / 6px }",".ftscroller_scrollbar.active { opacity: 0.5; "+t+"transition: none; -o-transition: all 0 none }"];n.styleSheet?n.styleSheet.cssText=i.join("\n"):n.appendChild(document.createTextNode(i.join("\n")));r.insertBefore(n,r.firstChild)})();FTScroller=function(u,k){var pt,yi,pi,oi,si,dt,wu,bu,hi,yr,ku,pr,wr,du,ii,wi,br,gu,ci,bt,ui,kr,yt,dr,gr,nf,tf,nu,li,tu,iu,rf,ru,uu,bi,fu,er,eu,ki,di,gi,nr,ou,tr,ir,uf,or,su,d={scrollbars:!0,scrollingX:!0,scrollingY:!0,scrollBoundary:1,scrollResponseBoundary:1,alwaysScroll:!1,contentWidth:void 0,contentHeight:void 0,snapping:!1,snapSizeX:void 0,snapSizeY:void 0,singlePageScrolls:!1,bouncing:!0,flinging:!0,updateOnChanges:!0,updateOnWindowResize:!1,baseAlignments:{x:-1,y:-1},windowScrollingActiveFlag:void 0,hwAccelerationClass:"ftscroller_hwaccelerated",enableRequestAnimationFrameSupport:!0,maxFlingDuration:1e3,disabledInputMethods:{mouse:!1,touch:!1,scroll:!1,pointer:!1,focus:!1},scrollingClassName:void 0,flingBezier:new CubicBezier(.103,.389,.307,.966),bounceDecelerationBezier:new CubicBezier(0,.5,.5,1),bounceBezier:new CubicBezier(.7,0,.9,.6)},sr,hr=this,gt=u,g,ot,lt={x:null,y:null},at={x:null,y:null},st={x:null,y:null},ut={x:null,y:null,rawX:null,rawY:null},ft={x:null,y:null},tt={x:!1,y:!1,userX:!1,userY:!1},hu={x:0,y:0},kt={x:0,y:0},cu=0,lu=0,rt=!1,rr=0,ur=!1,ni=!1,fi=!1,cr=!1,et={x:0,y:0},nt={x:0,y:0},ht={x:0,y:0},ff={x:null,y:null},ai=!1,vt=[],au=!1,ri={},it={x:!0,y:!0},vu=0,yu=0,lr=0,ar=0,ct=[],ti=!1,pu=!1,fr=!1,ei=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||!1,vr=window.cancelAnimationFrame||window.cancelRequestAnimationFrame||window.mozCancelAnimationFrame||window.mozCancelRequestAnimationFrame||window.webkitCancelAnimationFrame||window.webkitCancelRequestAnimationFrame||window.msCancelAnimationFrame||window.msCancelRequestAnimationFrame||!1,wt={scrollstart:[],scroll:[],scrollend:[],segmentwillchange:[],segmentdidchange:[],reachedstart:[],reachedend:[],scrollinteractionend:[]},vi;if("object"==typeof FTScrollerOptions&&FTScrollerOptions)for(pt in FTScrollerOptions)FTScrollerOptions.hasOwnProperty(pt)&&d.hasOwnProperty(pt)&&(d[pt]=FTScrollerOptions[pt]);if(k){for(pt in k)k.hasOwnProperty(pt)&&("paginatedSnap"===pt?(console.warn('FTScroller: "paginatedSnap" is deprecated; converting to "singlePageScrolls"'),d.singlePageScrolls=k.paginatedSnap):d.hasOwnProperty(pt)&&(d[pt]=k[pt]));k.hasOwnProperty("snapSizeX")&&!isNaN(k.snapSizeX)&&(tt.userX=tt.x=k.snapSizeX);k.hasOwnProperty("snapSizeY")&&!isNaN(k.snapSizeY)&&(tt.userY=tt.y=k.snapSizeY);k.contentWidth&&k.contentHeight&&(k.updateOnChanges=!1)}return d.scrollResponseBoundary=Math.min(d.scrollBoundary,d.scrollResponseBoundary),d.scrollingX&&(ri.x=!0),d.scrollingY&&(ri.y=!0),vr=(ei=d.enableRequestAnimationFrameSupport&&ei)&&vr,yi=function(n,t,i){var u,r,f=0,e={};si(Date.now());u={x:-n,y:-t};for(r in ri)ri.hasOwnProperty(r)&&(n=u[r],!1!==n&&(n=Math.min(0,Math.max(ft[r],n)),d.snapping&&tt[r]&&(n=Math.round(n/tt[r])*tt[r]),t=i||0,!0===t&&(t=20*Math.sqrt(Math.abs(et[r]-n))),bt(r,n,t),e[r]=n,f=Math.max(f,t)));(et.x!==u.x||et.y!==u.y)&&(au=!0,yt("scrollstart",ui()),yt("scroll",ui()));f?vt.push(setTimeout(function(){for(var n in e)e.hasOwnProperty(n)&&(nt[n]=e[n]);dt()},f)):dt()},pi=function(n,t,i,r){var u=cr;return(0>=i&&(i=Date.now()),d.windowScrollingActiveFlag&&window[d.windowScrollingActiveFlag])?!1:(u?wu():ai=!1,vu=n,yu=t,ht.x=nt.x,ht.y=nt.y,ct.length=0,ct.push({x:n,y:t,t:i}),u&&oi(n,t,i,r,u),!0)},oi=function(n,t,r,u,f){var h,e,c=!1,o=n-vu,s=t-yu;if(0>=r&&(r=Date.now()),ht.x=et.x+o,ht.y=et.y+s,!ni&&(i&&i!==hr?e=!0:d.windowScrollingActiveFlag&&window[d.windowScrollingActiveFlag]&&(e=!0),e))or(),rt=!1,fi&&(li(),hi(!0)||dt(!0));else{if(fi)u.preventDefault();else{if(e=nf(ht),(d.bouncing||f||it.x&&o&&0>e.x||it.y&&s&&0>e.y)&&u.preventDefault(),!f&&(!it.x||Math.abs(o)<d.scrollResponseBoundary)&&(!it.y||Math.abs(s)<d.scrollResponseBoundary))return;if(!(d.bouncing||f||it.x&&o&&!(0<e.x)||it.y&&s&&!(0<e.y))){ai=!0;return}tf();c=cr=au=fi=!0}if(!ni&&(f&&d.snapping||it.x&&Math.abs(o)>=d.scrollBoundary||it.y&&Math.abs(s)>=d.scrollBoundary)&&(ai=ni=!0,i=hr,d.windowScrollingActiveFlag&&(window[d.windowScrollingActiveFlag]=hr),yt("scrollstart",ui())),ni&&uf(),a&&window.getSelection().removeAllRanges(),pr(),c&&(0<o?et.x-=d.scrollResponseBoundary:0>o&&(et.x+=d.scrollResponseBoundary),0<s?et.y-=d.scrollResponseBoundary:0>s&&(et.y+=d.scrollResponseBoundary),ht.x=et.x+o,ht.y=et.y+s,d.scrollingClassName&&(g.className+=" "+d.scrollingClassName),d.scrollbars))for(h in it)it.hasOwnProperty(h)&&(at[h].className+=" active");ct.push({x:n,y:t,t:r});30<ct.length&&ct.splice(0,15)}},si=function(n,t){or();rt=!1;li();yt("scrollinteractionend",{});ni?(ct[ct.length-1].t=n,i=fi=ni=!1,d.windowScrollingActiveFlag&&(window[d.windowScrollingActiveFlag]=!1),t&&t.preventDefault(),bu()||hi()||dt()):!hi(!0)&&fi&&dt(!0)},dt=function(n){var t,i;if(fi=cr=!1,d.scrollingClassName&&(i=new RegExp("(?:^|\\s)"+d.scrollingClassName+"(?!\\S)","g"),g.className=g.className.replace(i,"")),d.scrollbars)for(t in it)it.hasOwnProperty(t)&&(at[t].className=at[t].className.replace(/ ?active/g,""));et.x=nt.x;et.y=nt.y;i=ui();n||(yt("scroll",i),ci(!0));i.cancelled=n;yt("scrollend",i);for(t in it)it.hasOwnProperty(t)&&(lt[t].style[o]="",d.scrollbars&&(at[t].style[o]=""));for(n=0,t=vt.length;n<t;n+=1)window.clearTimeout(vt[n]);vt.length=0},wu=function(){var n,t;cr=!1;gu();for(n in it)it.hasOwnProperty(n)&&bt(n,et[n],16,d.bounceDecelerationBezier);for(ci(!1),n=0,t=vt.length;n<t;n+=1)window.clearTimeout(vt[n]);vt.length=0},bu=function(){var t,n,e,r,i,o,u,h,c,s,f,l,a=0,y=!1,v={};if(1===ct.length||!d.flinging||"scrollwheel"===rt)return!1;for(n in it)if(it.hasOwnProperty(n)){for(h=350,u=0,c=s=!1,l=void 0,f=d.flingBezier,r=ct[ct.length-1],i=ct[ct.length-2],t=ct.length-3;0<=t&&!(100<r.t-ct[t].t);--t)i=ct[t];(t=r.t-i.t)||(t=16);e=(r[n]-i[n])/t;.01>Math.abs(e)?t=r=0:(r=Math.log(.01/Math.abs(e))/Math.log(.998),t=e*(1-Math.pow(.998,r+1))/(1-.998));i=Math.floor(nt[n]+t);d.bouncing||(0===nt[n]&&0<i?i=0:nt[n]===ft[n]&&i<nt[n]&&(i=nt[n]));d.singlePageScrolls&&d.snapping?i>-(kt[n]-1)*tt[n]?u=i+(kt[n]-1)*tt[n]:i<-(kt[n]+1)*tt[n]?u=i+(kt[n]+1)*tt[n]:.01<Math.abs(e)&&(i=0>e?Math.floor(nt[n]/tt[n])*tt[n]:Math.ceil(nt[n]/tt[n])*tt[n],r=Math.min(d.maxFlingDuration,r*(i-nt[n])/t)):d.snapping&&(u=i-Math.round(i/tt[n])*tt[n]);0<i-u?(u=i,s=!0):i-u<ft[n]&&(u=i-ft[n],s=!0);u&&(s&&d.bouncing&&t?(t=Math.floor(t),o=0<i?i-Math.max(0,nt[n]):i-Math.min(ft[n],nt[n]),s=t-o,t&&r?(t=f._getCoordinateForT(f.getTForY((t-o)/t,1/r),f._p1.x,f._p2.x),l=t*r):t=0,e=Math.ceil(o/8),Math.abs(e)>st[n]/2&&(e=0>e?-Math.floor(st[n]/2):Math.floor(st[n]/2)),c=0<i?0:ft[n],0===t?(r/=6,i=nt[n]+s+e,o=r):(o=(t+(1-t)/6)*r,kr(n,nt[n]+s+e,(1-t)*r/6,d.bounceDecelerationBezier,l),f=f.divideAtX(o/r,1/r)[0],r=o,i=nt[n]+s+e)):0>t&&u<t||0<t&&u>t?(i-=Math.floor(t/2),u-=Math.floor(t/2),h=50*Math.sqrt(Math.abs(u)),c=i-u,r=350,o=.97*r):(i-=u,t?(0>t&&0>u||0<t&&0<u)&&(t=f._getCoordinateForT(f.getTForY((Math.abs(t)-Math.abs(u))/Math.abs(t),1/r),f._p1.x,f._p2.x),f=f.divideAtX(t,1/r)[0],r=Math.round(r*t)):r=h,h=u=0));(i!==nt[n]||u)&&(y=!0,bt(n,i,r,f,l),u&&h&&kr(n,c,h,d.bounceBezier,o),a=Math.max(a,u?o+h:r),v[n]=!1===c?i:c)}return y&&a&&vt.push(setTimeout(function(){for(var n in v)v.hasOwnProperty(n)&&(nt[n]=v[n]);dt()},a)),y},hi=function(n){var i,u=n?100:350,t=nt,r;d.snapping&&(hu=ku(t),t=yr(hu,t));t=wr(t);r=!1;for(i in ri)ri.hasOwnProperty(i)&&t[i]!==nt[i]&&(r=!0);if(!r)return!1;for(i in ri)ri.hasOwnProperty(i)&&bt(i,t[i],u);return vt.push(setTimeout(function(){nt=t;dt(n)},u)),!0},ku=function(n){var t,i={x:0,y:0};for(t in it)it.hasOwnProperty(t)&&tt[t]&&(i[t]=Math.round(n[t]/tt[t]));return i},yr=function(n,t){var i,r={x:t.x,y:t.y};for(i in it)it.hasOwnProperty(i)&&(r[i]=n[i]*tt[i]);return r},pr=function(){var n,t,i;for(n in it)it.hasOwnProperty(n)&&(t=0,i=ft[n],d.singlePageScrolls&&d.snapping&&(t=Math.min(t,-(kt[n]-1)*tt[n]),i=Math.max(i,-(kt[n]+1)*tt[n])),ht[n]>t?ht[n]=t+gr(ht[n]-t,n):ht[n]<i&&(ht[n]=i+gr(ht[n]-i,n)));ei||nu()},wr=function(n){var t,i={x:n.x,y:n.y};for(t in it)it.hasOwnProperty(t)&&(0<n[t]?i[t]=0:n[t]<ft[t]&&(i[t]=ft[t]));return i},du=function(){var t,r,u,s,f,e,i,n,o;if((t=gt.firstElementChild)&&-1!==t.className.indexOf("ftscroller_container")){if(d.scrollingX){if(r=t.firstElementChild,!r||-1===r.className.indexOf("ftscroller_x"))return;if(s=r,d.scrollbars){if(i=t.getElementsByClassName("ftscroller_scrollbarx"))for(n=0,o=i.length;n<o;n+=1)if(i[n].parentNode===t){f=i[n];break}if(!f)return}}else s=t;if(d.scrollingY){if(u=s.firstElementChild,!u||-1===u.className.indexOf("ftscroller_y"))return;if(d.scrollbars){if(i=t.getElementsByClassName("ftscroller_scrollbary"))for(n=0,o=i.length;n<o;n+=1)if(i[n].parentNode===t){e=i[n];break}if(!e)return}}return g=t,r&&(lt.x=r),u&&(lt.y=u),f&&(at.x=f),e&&(at.y=e),ot=d.scrollingY?u:r,!0}},ii=function(n){ti&&window.clearTimeout(ti);n&&"resize"===n.type?wi():ti=setTimeout(function(){wi()},100)},wi=function(n){var t,e,o,r;if(!g||!ot)return!1;ti&&(window.clearTimeout(ti),ti=!1);r={x:!1,y:!1};for(t in r)r.hasOwnProperty(t)&&(0===nt[t]?r[t]=-1:nt[t]<=ft[t]?r[t]=1:2*nt[t]<=ft[t]+5&&2*nt[t]>=ft[t]-5&&(r[t]=0));e=g.offsetWidth;o=g.offsetHeight;var s=k.contentWidth||ot.offsetWidth,h=k.contentHeight||ot.offsetHeight,u=s,f=h,i={x:nt.x,y:nt.y};if(tt.userX||(tt.x=e),tt.userY||(tt.y=o),d.snapping&&(u=tt.userX?Math.ceil(u/tt.userX)*tt.userX:Math.ceil(u/tt.x)*tt.x,f=tt.userY?Math.ceil(f/tt.userY)*tt.userY:Math.ceil(f/tt.y)*tt.y),st.x!==e||st.y!==o||ut.x!==u||ut.y!==f)if(st.x=e,st.y=o,ut.x=u,ut.rawX=s,ut.y=f,ut.rawY=h,ft.x=e-u,ft.y=o-f,br(),ni)nt.x--,nt.y--,pr();else{!n&&d.snapping&&(ci(),i=yr(hu,nt));for(t in i)!i.hasOwnProperty(t)||st[t]<ut[t]&&au&&d.baseAlignments[t]!==r[t]||(1===d.baseAlignments[t]?i[t]=ft[t]:0===d.baseAlignments[t]?i[t]=Math.floor(ft[t]/2):-1===d.baseAlignments[t]&&(i[t]=0));i=wr(i);d.scrollingX&&i.x!==nt.x&&(bt("x",i.x,0),et.x=i.x);d.scrollingY&&i.y!==nt.y&&(bt("y",i.y,0),et.y=i.y)}},br=function(){d.scrollbars&&(d.scrollingX&&(at.x.style.width=Math.max(6,Math.round(st.x/ut.x*st.x-4))+"px"),d.scrollingY&&(at.y.style.height=Math.max(6,Math.round(st.y/ut.y*st.y-4))+"px"));it={};d.scrollingX&&(ut.x>st.x||d.alwaysScroll)&&(it.x=!0);d.scrollingY&&(ut.y>st.y||d.alwaysScroll)&&(it.y=!0)},gu=function(){var n,t;for(n in it)it.hasOwnProperty(n)&&(t=window.getComputedStyle(lt[n],null)[f],t=t.split(", "),et[n]=6===t.length?parseInt(t["y"===n?5:4],10):parseInt(t["y"===n?13:12],10),nt[n]=et[n])},ci=function(n){var i,t={x:0,y:0};if(d.snapping){for(i in it)it.hasOwnProperty(i)&&(t[i]=Math.max(0,Math.min(Math.ceil(ut[i]/tt[i])-1,Math.round(-nt[i]/tt[i]))));(t.x!==cu||t.y!==lu)&&(cu=t.x,lu=t.y,yt("segmentwillchange",{segmentX:t.x,segmentY:t.y}));n&&(t.x!==kt.x||t.y!==kt.y)&&(kt.x=t.x,kt.y=t.y,yt("segmentdidchange",{segmentX:t.x,segmentY:t.y}))}},bt=function(n,i,r,u,f){var e=null;if(!lt[n])return!1;r?(u||(u=d.flingBezier),u=t+"transform "+r+"ms "+u.toString()):u="";lt[n].style[o]=u;d.scrollbars&&(at[n].style[o]=u);lt[n].style[v]=y+p[n]+i+"px"+w[n];d.scrollbars&&(at[n].style[v]=y+p[n]+-i*st[n]/ut[n]+"px"+w[n]);0<=i?e="start":i<=ft[n]&&(e="end");e!==ff[n]&&(null!==e&&(r?vt.push(setTimeout(function(){yt("reached"+e,{axis:n})},f||r)):yt("reached"+e,{axis:n})),ff[n]=e);r||(nt[n]=i)},ui=function(){return{scrollLeft:-nt.x,scrollTop:-nt.y}},kr=function(n,t,i,r,u){vt.push(setTimeout(function(){bt(n,t,i,r)},u))},yt=function(n,t){var r,u;for(t.srcObject=sr,r=0,u=wt[n].length;r<u;r+=1)try{wt[n][r](t)}catch(i){window.console&&window.console.error&&(i.message?window.console.error(i.message+" ("+i.sourceURL+", line "+i.line+")"):(window.console.error("Error encountered executing FTScroller event listener callback for ["+n+']. Add a "debugger" statement here to obtain a full backtrace.'),window.console.dir&&window.console.dir(i)))}},dr=function(n){var r,t;n=su(n.target);var i=su(g),u={x:"left",y:"top"},e={x:"right",y:"bottom"},f={x:"width",y:"height"};if(!1===rt){for(t in it)!it.hasOwnProperty(t)||n[u[t]]>=i[u[t]]&&n[e[t]]<=i[e[t]]||n[f[t]]>i[f[t]]&&(r=n[f[t]]-Math.max(0,i[u[t]]-n[u[t]])-Math.max(0,n[e[t]]-i[e[t]]),r>=i[f[t]]/2)||(r=-Math.round(n[f[t]]/2-nt[t]+n[u[t]]-i[u[t]]-i[f[t]]/2),r=Math.min(0,Math.max(ft[t],r)),bt(t,r,0),et[t]=r);yt("scroll",ui())}},gr=function(n,t){if(!d.bouncing)return 0;var i=Math.exp(n/st[t]);return Math.round(.6*st[t]*(i-1)/(i+1))},nf=function(n){var t,i,r={};for(t in n)n.hasOwnProperty(t)&&(i=n[t],r[t]=0<=i?i:i>ft[t]?-1:ft[t]-i);return r},tf=function(){ei&&(li(),fr=ei(nu))},nu=function ef(){var n,t;ei&&(fr=ei(ef));for(n in it)it.hasOwnProperty(n)&&ht[n]!==nt[n]&&(bt(n,ht[n]),t=!0);ni&&t&&(yt("scroll",ui()),ci(!1))},li=function(){!1!==fr&&vr&&(vr(fr),fr=!1)},rf=function(){iu();tu()},tu=function(){var t;g&&(r&&!d.disabledInputMethods.pointer?s?(g.addEventListener("MSPointerDown",ki),g.addEventListener("MSPointerMove",di),g.addEventListener("MSPointerUp",gi),g.addEventListener("MSPointerCancel",nr)):(g.addEventListener("pointerdown",ki),g.addEventListener("pointermove",di),g.addEventListener("pointerup",gi),g.addEventListener("pointercancel",nr)):(b&&!d.disabledInputMethods.touch&&(g.addEventListener("touchstart",ru),g.addEventListener("touchmove",uu),g.addEventListener("touchend",bi),g.addEventListener("touchcancel",bi)),d.disabledInputMethods.mouse||g.addEventListener("mousedown",fu)),d.disabledInputMethods.scroll||(g.addEventListener("DOMMouseScroll",ir),g.addEventListener("mousewheel",ir)),d.disabledInputMethods.mouse&&d.disabledInputMethods.touch&&d.disabledInputMethods.pointer||(r?document.addEventListener("click",tr,!0):g.addEventListener("click",tr,!0)),d.disabledInputMethods.focus||ot.addEventListener("focus",dr),d.updateOnChanges&&(vi||(t=window.MutationObserver||window.WebKitMutationObserver||window[n+"MutationObserver"])&&(vi=new t(ii)),vi?vi.observe(ot,{childList:!0,characterData:!0,subtree:!0}):ot.addEventListener("DOMSubtreeModified",function(n){n&&(n.srcElement===ot||-1!==n.srcElement.className.indexOf("ftscroller_"))||ii()},!0),ot.addEventListener("load",ii)),d.updateOnWindowResize&&window.addEventListener("resize",ii))},iu=function(){g&&(g.removeEventListener("MSPointerDown",ki),g.removeEventListener("MSPointerMove",di),g.removeEventListener("MSPointerUp",gi),g.removeEventListener("MSPointerCancel",nr),g.removeEventListener("pointerdown",ki),g.removeEventListener("pointermove",di),g.removeEventListener("pointerup",gi),g.removeEventListener("pointercancel",nr),g.removeEventListener("touchstart",ru),g.removeEventListener("touchmove",uu),g.removeEventListener("touchend",bi),g.removeEventListener("touchcancel",bi),g.removeEventListener("mousedown",fu),g.removeEventListener("DOMMouseScroll",ir),g.removeEventListener("mousewheel",ir),g.removeEventListener("click",tr,!0));ot&&(ot.removeEventListener("focus",dr),ot.removeEventListener("DOMSubtreeModified",ii),ot.removeEventListener("load",ii));vi&&vi.disconnect();document.removeEventListener("mousemove",er);document.removeEventListener("mouseup",eu);document.removeEventListener("click",tr,!0);window.removeEventListener("resize",ii)},ru=function(n){var t,i;if(rt)for(t=0,i=n.touches.length;t<i;t+=1)n.touches[t].identifier===rt&&(rr=t);else t=n.touches[0],rt=t.identifier,rr=0,pi(t.clientX,t.clientY,n.timeStamp,n)},uu=function(n){if(!1!==rt){var t=n.touches[rr];oi(t.clientX,t.clientY,n.timeStamp,n)}},bi=function(n){var t,i;if(n.touches)for(t=0,i=n.touches.length;t<i;t+=1)if(n.touches[t].identifier===rt){rr=t;return}si(n.timeStamp,n)},fu=function(n){n.button&&2===n.button||n.ctrlKey||(g.setCapture&&g.setCapture(),document.addEventListener("mousemove",er,!0),document.addEventListener("mouseup",eu,!0),rt=n.button||1,rr=0,pi(n.clientX,n.clientY,n.timeStamp,n))},er=function(n){rt&&oi(n.clientX,n.clientY,n.timeStamp,n)},eu=function of(n){n.button&&n.button!==rt||(document.removeEventListener("mousemove",er,!0),document.removeEventListener("mouseup",of,!0),g.releaseCapture&&g.releaseCapture(),si(n.timeStamp,n))},ki=function(n){if(!rt||n.isPrimary){if(n.pointerType===l){if(d.disabledInputMethods.touch)return}else if(d.disabledInputMethods.mouse)return;rt=n.pointerId;pi(n.clientX,n.clientY,n.timeStamp,n)}},di=function(n){rt===n.pointerId&&oi(n.clientX,n.clientY,n.timeStamp,n)},gi=function(n){rt===n.pointerId&&si(n.timeStamp,n)},nr=function(n){si(n.timeStamp,n)},ou=function(){ur=!1},tr=function(n){return ai?(n.preventDefault(),n.stopPropagation(),rt||(ai=!1),!1):!0},ir=function(n){var t,r;if("scrollwheel"!==rt){if(!1!==rt)return!0;if(rt="scrollwheel",ar=lr=0,!pi(n.clientX,n.clientY,Date.now(),n))return}n.wheelDelta?n.wheelDeltaX?(t=n.wheelDeltaX/2,r=n.wheelDeltaY/2):(t=0,r=n.wheelDelta/2):n.axis&&n.axis===n.HORIZONTAL_AXIS?(t=-10*n.detail,r=0):(t=0,r=-10*n.detail);d.scrollingY||t||(t=r,r=0);lr=Math.round(lr+t);ar=Math.round(ar+r);oi(vu+lr,yu+ar,n.timeStamp,n);pu&&clearTimeout(pu);pu=setTimeout(function(){or();i=fi=ai=ni=rt=!1;d.windowScrollingActiveFlag&&(window[d.windowScrollingActiveFlag]=!1);li();hi()||dt()},300)},uf=function(){ur||!1===rt||"scrollwheel"===rt||(r&&(g[h](rt),g.addEventListener(e,ou,!1)),ur=!0)},or=function(){ur&&(r&&(g.removeEventListener(e,ou,!1),g[c](rt)),ur=!1)},su=function(n){if(n.getBoundingClientRect)return n.getBoundingClientRect();for(var i=0,r=0,t=n;t;)i=i+t.offsetLeft-t.scrollLeft,r=r+t.offsetTop-t.scrollTop,t=t.offsetParent;return{left:i,top:r,width:n.offsetWidth,height:n.offsetHeight}},function(){var n,t;if(!du()){for(n=gt.ownerDocument.createDocumentFragment(),t=document.createElement("DIV"),n.appendChild(t),t.innerHTML=FTScroller.prototype.getPrependedHTML(!d.scrollingX,!d.scrollingY,d.hwAccelerationClass)+FTScroller.prototype.getAppendedHTML(!d.scrollingX,!d.scrollingY,d.hwAccelerationClass,d.scrollbars),n=g=t.firstElementChild,d.scrollingX&&(lt.x=g.firstElementChild,n=lt.x,d.scrollbars&&(at.x=g.getElementsByClassName("ftscroller_scrollbarx")[0])),d.scrollingY?(lt.y=n.firstElementChild,d.scrollbars&&(at.y=g.getElementsByClassName("ftscroller_scrollbary")[0]),ot=lt.y):ot=lt.x;gt.firstChild;)ot.appendChild(gt.firstChild);gt.appendChild(g)}}(),wi(),tu(),sr={destroy:function(n){var t,r;for(iu(),li(),ti&&(window.clearTimeout(ti),ti=!1),t=0,r=vt.length;t<r;t+=1)window.clearTimeout(vt[t]);if(vt.length=0,n&&gt){for(;ot.firstChild;)gt.appendChild(ot.firstChild);gt.removeChild(g)}ot=g=gt=null;lt.x=null;lt.y=null;at.x=null;at.y=null;for(t in wt)wt.hasOwnProperty(t)&&(wt[t].length=0);i&&i===hr&&(i=!1,d.windowScrollingActiveFlag&&(window[d.windowScrollingActiveFlag]=!1))},setSnapSize:function(n,t){tt.userX=n;tt.userY=t;tt.x=n;tt.y=t;ut.x=Math.ceil(ut.rawX/n)*n;ut.y=Math.ceil(ut.rawY/t)*t;ft.x=st.x-ut.x;ft.y=st.y-ut.y;br();hi();ci(!0)},scrollTo:yi,scrollBy:function(n,t,i){yi(parseFloat(n)-et.x,parseFloat(t)-et.y,i)},updateDimensions:function(n,t,i){k.contentWidth=n||k.contentWidth;k.contentHeight=t||k.contentHeight;wi(!!i)},addEventListener:function(n,t){return wt.hasOwnProperty(n)?(wt[n].push(t),!0):!1},removeEventListener:function(n,t){var i;if(!wt.hasOwnProperty(n))return!1;for(i=wt[n].length;0<=i;--i)wt[n][i]===t&&wt[n].splice(i,1);return!0},setDisabledInputMethods:function(n){var t,i;for(t in d.disabledInputMethods)n[t]=!!n[t],d.disabledInputMethods[t]!==n[t]&&(i=!0),d.disabledInputMethods[t]=n[t];i&&rf()}},Object.defineProperties&&Object.defineProperties(sr,{scrollHeight:{get:function(){return ut.y},set:function(n){throw new SyntaxError("scrollHeight is currently read-only - ignoring "+n);}},scrollLeft:{get:function(){return-nt.x},set:function(n){return yi(n,!1,!1),-nt.x}},scrollTop:{get:function(){return-nt.y},set:function(n){return yi(!1,n,!1),-nt.y}},scrollWidth:{get:function(){return ut.x},set:function(n){throw new SyntaxError("scrollWidth is currently read-only - ignoring "+n);}},segmentCount:{get:function(){return d.snapping?{x:Math.ceil(ut.x/tt.x),y:Math.ceil(ut.y/tt.y)}:{x:NaN,y:NaN}},set:function(n){throw new SyntaxError("segmentCount is currently read-only - ignoring "+n);}},currentSegment:{get:function(){return{x:cu,y:lu}},set:function(n){throw new SyntaxError("currentSegment is currently read-only - ignoring "+n);}},contentContainerNode:{get:function(){return ot},set:function(n){throw new SyntaxError("contentContainerNode is currently read-only - ignoring "+n);}}}),sr};FTScroller.prototype.getPrependedHTML=function(n,t,i){i||(i="object"==typeof FTScrollerOptions&&FTScrollerOptions.hwAccelerationClass?FTScrollerOptions.hwAccelerationClass:"ftscroller_hwaccelerated");var r='<div class="ftscroller_container">';return n||(r+='<div class="ftscroller_x '+i+'">'),t||(r+='<div class="ftscroller_y '+i+'">'),r};FTScroller.prototype.getAppendedHTML=function(n,t,i,r){i||(i="object"==typeof FTScrollerOptions&&FTScrollerOptions.hwAccelerationClass?FTScrollerOptions.hwAccelerationClass:"ftscroller_hwaccelerated");var u="";return n||(u+="<\/div>"),t||(u+="<\/div>"),r&&(n||(u+='<div class="ftscroller_scrollbar ftscroller_scrollbarx '+i+'"><div class="ftscroller_scrollbarinner"><\/div><\/div>'),t||(u+='<div class="ftscroller_scrollbar ftscroller_scrollbary '+i+'"><div class="ftscroller_scrollbarinner"><\/div><\/div>')),u+"<\/div>"}}(),function(){CubicBezier=function(n,t,i,r){this._p1={x:1<n?1:0>n?0:n,y:1<t?1:0>t?0:t};this._p2={x:1<i?1:0>i?0:i,y:1<r?1:0>r?0:r}};CubicBezier.prototype._getCoordinateForT=function(n,t,i){var r=3*t;return t=3*(i-t)-r,(((1-r-t)*n+t)*n+r)*n};CubicBezier.prototype._getCoordinateDerivateForT=function(n,t,i){var r=3*t;return t=3*(i-t)-r,(3*(1-r-t)*n+2*t)*n+r};CubicBezier.prototype._getTForCoordinate=function(n,t,i,r){if(!isFinite(r)||0>=r)throw new RangeError('"epsilon" must be a number greater than 0.');for(var o,e,u=n,f=0;8>f;f+=1){if(o=this._getCoordinateForT(u,t,i)-n,Math.abs(o)<r)return u;if(e=this._getCoordinateDerivateForT(u,t,i),1e-6>Math.abs(e))break;u-=o/e}if(u=n,f=0,e=1,u<f)return f;if(u>e)return e;for(;f<e;){if(o=this._getCoordinateForT(u,t,i),Math.abs(o-n)<r)break;n>o?f=u:e=u;u=.5*(e-f)+f}return u};CubicBezier.prototype.getPointForT=function(n){return 0===n||1===n?{x:n,y:n}:((0>n||1<n)&&_throwRangeError("t",n),{x:this._getCoordinateForT(n,this._p1.x,this._p2.x),y:this._getCoordinateForT(n,this._p1.y,this._p2.y)})};CubicBezier.prototype.getTForX=function(n,t){return this._getTForCoordinate(n,this._p1.x,this._p2.x,t)};CubicBezier.prototype.getTForY=function(n,t){return this._getTForCoordinate(n,this._p1.y,this._p2.y,t)};CubicBezier.prototype._getAuxPoints=function(n){(0>=n||1<=n)&&_throwRangeError("t",n);var i={x:n*this._p1.x,y:n*this._p1.y},t={x:this._p1.x+n*(this._p2.x-this._p1.x),y:this._p1.y+n*(this._p2.y-this._p1.y)},u={x:this._p2.x+n*(1-this._p2.x),y:this._p2.y+n*(1-this._p2.y)},r={x:i.x+n*(t.x-i.x),y:i.y+n*(t.y-i.y)},f={x:t.x+n*(u.x-t.x),y:t.y+n*(u.y-t.y)};return{i0:i,i1:t,i2:u,j0:r,j1:f,k:{x:r.x+n*(f.x-r.x),y:r.y+n*(f.y-r.y)}}};CubicBezier.prototype.divideAtT=function(n){var i,u,f,e,o,t,s,r;return((0>n||1<n)&&_throwRangeError("t",n),0===n||1===n)?(t=[],t[n]=CubicBezier.linear(),t[1-n]=this.clone(),t):(t=this._getAuxPoints(n),e=t.i0,n=t.i2,u=t.j0,f=t.j1,t=t.k,i=t.x,r=t.y,t=e.x/i,s=e.y/r,e=u.x/i,o=u.y/r,u=(f.x-i)/(1-i),f=(f.y-r)/(1-r),i=(n.x-i)/(1-i),n=(n.y-r)/(1-r),[new CubicBezier(t,s,e,o),new CubicBezier(u,f,i,n)])};CubicBezier.prototype.divideAtX=function(n,t){(0>n||1<n)&&_throwRangeError("x",n);var i=this.getTForX(n,t);return this.divideAtT(i)};CubicBezier.prototype.divideAtY=function(n,t){(0>n||1<n)&&_throwRangeError("y",n);var i=this.getTForY(n,t);return this.divideAtT(i)};CubicBezier.prototype.clone=function(){return new CubicBezier(this._p1.x,this._p1.y,this._p2.x,this._p2.y)};CubicBezier.prototype.toString=function(){return"cubic-bezier("+[this._p1.x,this._p1.y,this._p2.x,this._p2.y].join(", ")+")"};CubicBezier.linear=function(){return new CubicBezier};CubicBezier.ease=function(){return new CubicBezier(.25,.1,.25,1)};CubicBezier.linear=function(){return new CubicBezier(0,0,1,1)};CubicBezier.easeIn=function(){return new CubicBezier(.42,0,1,1)};CubicBezier.easeOut=function(){return new CubicBezier(0,0,.58,1)};CubicBezier.easeInOut=function(){return new CubicBezier(.42,0,.58,1)}}();"undefined"!=typeof define&&define.amd?define(function(){return{FTScroller:FTScroller,CubicBezier:CubicBezier}}):"undefined"!=typeof module&&module.exports&&(module.exports=function(n,t){return new FTScroller(n,t)},module.exports.FTScroller=FTScroller,module.exports.CubicBezier=CubicBezier),function(n,t){var i=function(n,t,i){var r;return function(){var u=this,f=arguments;r?clearTimeout(r):i&&n.apply(u,f);r=setTimeout(function(){i||n.apply(u,f);r=null},t||100)}};jQuery.fn[t]=function(n){return n?this.bind("resize",i(n)):this.trigger(t)}}(jQuery,"smartresize"),function(n){n.Wizard&&n.Wizard.length&&0<n.Wizard.length||(n.Wizard.Module=function(){var i={},t,a=0,w={orientation:""},c,v=null,o=null,s;i.init=function(n,i,r){document.getElementById(n).width=i.width;document.getElementById(n).height=i.height;s=r;t=new fabric.Canvas(n,{stateful:!0,selection:!1,allowTouchScrolling:!0,containerClass:"canvas-inner-container"});fabric.Object.NUM_FRACTION_DIGITS=17;b();t.freeDrawingBrush=new fabric.PencilBrush(t);a=new fabric.Point(t.getWidth()/2,t.getHeight()/2);this.setBackgroundColour("white");t.controlsAboveOverlay=!0;t.freeDrawingBrush.width=2;t.freeDrawingBrush.color="#010101";k()};i.canvas=function(){return t};i.canvasRaw=function(){return t.getElement()};i.getSize=function(){return{width:t.width,height:t.height}};i.centrePoint=function(){return a};i.clear=function(n){n=n||{};n=n.hasOwnProperty("callback")?n.callback:null;this.setImageBackground();o=null;t.clear();n&&n()};i.resize=function(){};i.rasterize=function(n){var i;if(n=n||{mode:"svg",console:!0,win:!1},n.hasOwnProperty("mode")||(n.mode="json"),n.hasOwnProperty("console")||(n.console=!0),n.hasOwnProperty("win")||(n.win=!1),"bitmap"===n.mode&&!n.hasOwnProperty("size"))return null;if(t.deactivateAll().renderAll(),dispatchEvent(new CustomEvent(Gillette.Enum.Event.WIZARD_NO_OBJECT_SELECTED,{detail:null})),"svg"===n.mode)return i="data:image/svg+xml;utf8,"+encodeURIComponent(t.toSVG()),n.hasOwnProperty("console")&&!0===n.console&&console.log(i),n.hasOwnProperty("win")&&!0===n.win&&window.open(i),i;if("json"===n.mode)return i=!1,n.hasOwnProperty("dataless")&&!0===n.dataless&&(i=!0),n.hasOwnProperty("readonly"),i=!0===i?t.toDatalessJSON():t.toJSON(),i.config=null!=o?o:w,i.config.orientation=s,i=JSON.stringify(i),n.hasOwnProperty("console")&&!0===n.console&&console.log(i),n.hasOwnProperty("win")&&!0===n.win&&window.open("data:text/json,"+encodeURIComponent(i)),i;if("bitmap"===n.mode){n=n||{console:!1,win:!1,format:"png",quality:1,multiplier:1};var i=n.format||"png",u=n.quality||1,f=n.multiplier||1,r=n.size||null;if(null===r)n=void 0;else{var e=Math.round((t.getWidth()-r.width)/2),h=Math.round((t.getHeight()-r.height)/2),i=t.toDataURL({left:e,top:h,width:r.width,height:r.height,format:i,quality:u,multiplier:f});n.hasOwnProperty("console")&&!0===n.console&&console.log(i);n.hasOwnProperty("win")&&!0===n.win&&window.open(i);n=i}return n}return null};i.loadTemplate=function(n){n=n||{clear:!1,svg:"",json:{},grouped:!0};n.hasOwnProperty("clear")||(n.clear=!1);n.hasOwnProperty("grouped")||(n.grouped=!1);var r=n.complete||null,i=n.profanityFilter||null;n.hasOwnProperty("svg")&&""!=n.svg?(!0===n.clear&&this.clear(),i=ot(n.svg),!0===n.grouped?ut(i):ft(i)):n.hasOwnProperty("json")&&""!=n.json&&0<Object.keys(n.json).length&&(!0===n.clear&&t.clear(),o=n.json.hasOwnProperty("config")?n.json.config:null,g(n.json,i),et(n.json,function(){null!=r&&r.call(this,n.json)}))};i.setImageBackground=function(n){n=n||{url:""};n.hasOwnProperty("url")||(n.url="");nt(n.url,n.tracking||null)};i.setBackgroundColour=function(n){n=n||{colour:"#FFFFFF"};t.setBackgroundColor(void 0!=n.colour?n.colour:"#FFFFFF")};i.loadClipart=function(n){n=n||{url:"",select:!1};var t=n.hasOwnProperty("coords")?n.coords:null;n.hasOwnProperty("url")&&""!=n.url&&tt(n.url,t,n.select||!1,n.tracking||null)};i.addText=function(i){var r=i.text||"",o=i.fontFamily||"Arial",u;return(i=i.colour||"#2a5f8d",""!=r)?(u=l(),r=new fabric.Text(r,{left:u.left,top:u.top,fontFamily:o,fill:i,scaleX:1,scaleY:1,fontWeight:"",originX:"left",originT:"top",hasRotatingPoint:!0,centerTransform:!0}),r.left-=r.width/2,r.top-=r.height/2,e(r),r.identify=f({type:n.Enum.ToolTypes.Text,colourable:!0,selectable:!0,trackingLabel:"texttool-"+o.split(" ").join("_")}),t.add(r),r):null};i.updateText=function(n){var i=n.text||"";""!==i&&((n=n.target||null)?n&&(n.set("text",i).setCoords(),t.renderAll()):u("text",i),dispatchEvent(new CustomEvent(Gillette.Enum.Event.WIZARD_OBJECT_MODIFIED,{detail:null})))};i.getText=function(){return r("text")};i.updateFontFamily=function(n){n=n.fontFamily||"";""!==n&&(u("fontFamily",n),t.getActiveObject().identify.tracking="texttool-"+n.split(" ").join("_"),dispatchEvent(new CustomEvent(Gillette.Enum.Event.WIZARD_OBJECT_MODIFIED,{detail:null})))};i.getFontFamily=function(){return r("fontFamily")};i.enterDrawMode=function(i){i&&(v=i);i=t.isDrawingMode;t.isDrawingMode=!i;!1===i?h():t.allowTouchScrolling=!0;i&&0<t.getObjects("path").length&&(i=f({selectable:!0,colourable:!0,type:n.Enum.ToolTypes.Pencil,trackingLabel:v}),rt(i))};i.isDrawModeEnabled=function(){return t.isDrawingMode};i.abortDrawingMode=function(){if(t.isDrawingMode){if(0<t.getObjects("path").length){var n=t.getObjects("path");t.discardActiveObject();t.discardActiveGroup();n.forEach(function(n){t.remove(n)});dispatchEvent(new CustomEvent(Gillette.Enum.Event.WIZARD_OBJECT_REMOVED,{detail:null}))}t.renderAll()}};i.didUserMakeDrawing=function(){return 0<t.getObjects("path").length};i.getActiveObjectColour=function(){var i=t.getActiveObject(),u,r,f;if(null===i)return null;if("group"===i.type&&i.identify&&i.identify.type===n.Enum.ToolTypes.Pencil)return i.getObjects()[0].get("stroke");if("path-group"===i.type&&i.identify&&i.identify.type===n.Enum.ToolTypes.Clipart){for(r=0,f=i.paths.length;r<f;r++)if(i.paths[r].id&&0===i.paths[r].id.indexOf("COLOURABLE-")){u=i.paths[r].get("fill");break}return u||i.paths[0].get("fill")}return i.get("fill")};i.setObjectFillColour=function(i){var r,u,f;if(i=i||"#000000",r=t.getActiveObject(),null!==r){if("path-group"===r.type&&r.identify&&r.identify.type===n.Enum.ToolTypes.Clipart)for(u=0,f=r.paths.length;u<f;u++)r.paths[u].id&&0===r.paths[u].id.indexOf("COLOURABLE-")&&(r.paths[u].set("fill",i),t.renderAll());else r.set("fill",i),t.renderAll();dispatchEvent(new CustomEvent(Gillette.Enum.Event.WIZARD_OBJECT_MODIFIED,{detail:r}))}};i.setObjectPathColour=function(i){var r=i||"#000000";i=t.getActiveObject();null!==i&&("group"===i.type&&i.identify&&i.identify.type===n.Enum.ToolTypes.Pencil?i.forEachObject(function(n){n.set("stroke",r);t.renderAll()}):(i.set("stroke",r),t.renderAll()),dispatchEvent(new CustomEvent(Gillette.Enum.Event.WIZARD_OBJECT_MODIFIED,{detail:i})))};i.setMask=function(n){n&&fabric.loadSVGFromURL(n,d)};i.setOverlay=function(n){t.setOverlayImage(n,t.renderAll.bind(t))};i.getActiveObject=function(){return t.getActiveObject()};i.setActiveObject=function(n){n=n.obj||null;null!==n&&t.setActiveObject(n)};i.deleteActiveObject=function(){var n=t.getActiveObject();return n?(t.remove(n),t.renderAll(),dispatchEvent(new CustomEvent(Gillette.Enum.Event.WIZARD_OBJECT_REMOVED,{detail:null})),!0):!1};i.deselectAllObjects=function(){t.deactivateAllWithDispatch().renderAll()};i.adjustObject=function(n,i,f){var e=t.getActiveObject(),o;if(!e)return!1;switch(n){case"point":f=f||10;n="down"===i||"right"==i?f:-1*f;f=r("left");e=r("top");i="up"===i||"down"===i?"top":"left";u(i,"top"===i?e+n:f+n);dispatchEvent(new CustomEvent(Gillette.Enum.Event.WIZARD_OBJECT_MODIFIED,{detail:null}));break;case"scale":i="up"===i?.2:-.2;n=t.getActiveObject();f=!1;n&&(e=r("scaleX"),o=r("scaleY"),("center"!==n.originX||"center"!==n.originY)&&n.centeredRotation&&(n._setOriginToCenter()&&n._setOriginToCenter()(),f=!0),u("scaleX",e+i),u("scaleY",o+i),f&&n._setOriginToCenter()&&n._setOriginToCenter()(),t.renderAll(),dispatchEvent(new CustomEvent(Gillette.Enum.Event.WIZARD_OBJECT_MODIFIED,{detail:null})));break;case"rotate":n="90"===f?90:5;n="pos"===i?n:-1*n;(i=t.getActiveObject())&&(n=i.getAngle()+n,i.setAngle(n).setCoords(),t.renderAll(),dispatchEvent(new CustomEvent(Gillette.Enum.Event.WIZARD_OBJECT_MODIFIED,{detail:null})));break;case"order":switch(i){case"front":t.bringToFront(e);break;case"forward":t.bringForward(e);break;case"backward":t.sendBackwards(e);break;case"back":t.sendToBack(e)}dispatchEvent(new CustomEvent(Gillette.Enum.Event.WIZARD_OBJECT_MODIFIED,{detail:e}))}};i.addImage=function(n,t,i,r){it(n,t||null,i||null,r||null)};i.setBoundingBox=function(n){var i=t.getActiveObject();i&&(i.hasBorders=i.hasControls=n,t.renderAll())};i.getObjectColourable=function(n){return!1==!!n?!1:n&&n.identify&&!0===n.identify.colourable?!0:!1};i.getObjects=function(n){return t.getObjects(n)};i.setDrawingWidth=function(n){n=n||2;0>=n&&(n=2);t.freeDrawingBrush.width=parseInt(n,10)||2};i.rotateCanvas=function(){return y()};var b=function(){fabric.Object.prototype.toObject=function(n){return function(){return fabric.util.object.extend(n.call(this),{id:this.id,identify:this.identify})}}(fabric.Object.prototype.toObject);fabric.PathGroup.prototype.toObject=function(n){return function(){return fabric.util.object.extend(n.call(this),{id:this.id,identify:this.identify})}}(fabric.PathGroup.prototype.toObject)},y=function(n){var i,r;n=null===n?90:n;i=t.getObjects();0<i.length&&(r=new fabric.Rect({left:(t.width-t.height)/2,top:(t.height-t.width)/2,fill:"#00FF00",width:t.height,height:t.width,opacity:.5}),t.add(r),i=i.map(function(n){return n.set("active",!0)}),i=new fabric.Group(i,{originX:"center",originY:"center"}),t._activeObject=null,t.setActiveGroup(i.setCoords()).renderAll(),i.setAngle(0===n?270:n),t.deactivateAll(),t.remove(r));t.backgroundImage&&t.backgroundImage.setAngle(n);t.renderAll()},h=function(){t.allowTouchScrolling=!1},k=function(){t.on("object:selected",function(n){dispatchEvent(new CustomEvent(Gillette.Enum.Event.WIZARD_OBJECT_SELECTED,{detail:n.target}))});t.on("object:added",function(n){dispatchEvent(new CustomEvent(Gillette.Enum.Event.WIZARD_OBJECT_ADDED,{detail:n.target}))});t.on("object:modified",function(){dispatchEvent(new CustomEvent(Gillette.Enum.Event.WIZARD_OBJECT_MODIFIED,{detail:null}))});t.on("object:moving",h);t.on("object:scaling",h);t.on("object:rotating",h);t.on("mouse:up",function(n){t.isDrawingMode||(t.allowTouchScrolling=!0);dispatchEvent(new CustomEvent(Gillette.Enum.Event.WIZARD_CANVAS_MOUSE_UP,{detail:n.e}));null!==t.getActiveObject()||null!==t.getActiveGroup()||t.isDrawingMode||dispatchEvent(new CustomEvent(Gillette.Enum.Event.WIZARD_NO_OBJECT_SELECTED,{detail:null}))})},p=function(n,i){return"X"===n?(t.getWidth()-i)/2:(t.getHeight()-i)/2},d=function(n,i){c=fabric.util.groupSVGElements(n,i);c.set({left:0,top:0});t.clipTo=function(n){c.render(n)};t.renderAll()},r=function(n){var i=t.getActiveObject();return i?i[n]||"":""},u=function(n,i){var r=t.getActiveObject();r&&(r.set(n,i).setCoords(),t.renderAll())},f=function(t){var i=t.trackingLabel||null;return t={selectable:!0===(t.selectable||!1),colourable:!0===(t.colourable||!1),type:t.type||n.Enum.ToolTypes.Object},i&&(t.tracking=i),t},e=function(n){n.set({borderColor:"#2a5f8d",cornerColor:"#2a5f8d",padding:14,cornerSize:24,transparentCorners:!1,borderScaleFactor:.5,centeredRotation:!0})},g=function(t,i){t.objects&&t.objects.forEach(function(t){"text"===t.type&&(i&&(t.text=i.sanitise(t.text)),t.identify&&t.identify.type===n.Enum.ToolTypes.Text&&t.text.length>n.Config.Validation.textMaxLength&&(t.text=t.text.substr(0,n.Config.Validation.textMaxLength)))})},nt=function(i,r){if(""==i)t.backgroundImage=0,t.renderAll(),dispatchEvent(new CustomEvent(Gillette.Enum.Event.WIZARD_OBJECT_ADDED));else{var u=new Image;u.onload=function(){t.setBackgroundImage(u.src,function(){s===Gillette.Enum.Orientation.Portrait&&t.backgroundImage.setAngle(90);t.renderAll()},{width:u.width,height:u.height,originX:"left",originY:"top",left:p("X",u.width),top:p("Y",u.height),identify:f({type:n.Enum.ToolTypes.Background,colourable:!1,selectable:!1,trackingLabel:r})});dispatchEvent(new CustomEvent(Gillette.Enum.Event.WIZARD_OBJECT_ADDED))};u.src=i}},tt=function(i,r,u,o){return r=r||l(),fabric.loadSVGFromURL(i,function(s,h){var c=fabric.util.groupSVGElements(s,h,i);c.set({originX:"center",originY:"center",left:r.left,top:r.top}).setCoords();for(var a=!1,l=0,v=c.paths.length;l<v;l++)if(c.paths[l].id&&0===c.paths[l].id.indexOf("COLOURABLE-")){a=!0;break}e(c);c.identify=f({type:n.Enum.ToolTypes.Clipart,colourable:a,selectable:!0,trackingLabel:o});t.add(c);t.renderAll();!0===u&&t.setActiveObject(c)}),null},it=function(i,r,u,o){""!=i&&(r=r||l(),fabric.Image.fromURL(i,function(i){i.set({left:r.left,top:r.top}).scale(1).setCoords();e(i);i.identify=f({type:n.Enum.ToolTypes.Image,colourable:!1,selectable:!0,trackingLabel:u});t.add(i);t.setActiveObject(i);o&&o.call(this,i)}))},rt=function(n){var r,i;n=n||{};r=t.getObjects("path");0>=r.length||(i=new fabric.Group,t.discardActiveObject(),t.discardActiveGroup(),r.forEach(function(n){n.hasControls=n.hasBorders=!1;i.addWithUpdate(n);t.remove(n)}),t.add(i),i.set("fill",null),i.identify=n,e(i),t.setActiveObject(i.setCoords()).renderAll())},l=function(){return{left:t.getWidth()/2,top:t.getHeight()/2}},ut=function(n){fabric.loadSVGFromString(n,function(n,i){var r=fabric.util.groupSVGElements(n,i);t.add(r).centerObject(r).renderAll();r.setCoords()})},ft=function(n){fabric.loadSVGFromString(n,function(n){t.add.apply(t,n);t.renderAll()})},et=function(n,i){var f=!1,r,u;if(!0===n.hasOwnProperty("config")&&!0===n.config.hasOwnProperty("readonly")&&(f=!0===n.config.readonly),r=Gillette.Enum.Orientation.Landscape,!0===n.hasOwnProperty("config")&&!0===n.config.hasOwnProperty("orientation")&&(r=n.config.orientation,r!==Gillette.Enum.Orientation.Landscape&&r!==Gillette.Enum.Orientation.Portrait&&(r=Gillette.Enum.Orientation.Landscape)),!0===f)for(u in n.objects)n.objects[u].identify&&(n.objects[u].identify.selectable=!1);t.loadFromJSON(n,function(){t.getObjects().forEach(function(n){n.identify&&!0===n.identify.selectable&&e(n)});t.renderAll();s!==r&&y(r===Gillette.Enum.Orientation.Portrait?0:90);dispatchEvent(new CustomEvent(Gillette.Enum.Event.WIZARD_OBJECT_MODIFIED,{detail:null}));i&&i()})},ot=function(n){return-1!=n.indexOf("<\/svg>")?n:'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="{0}" height="{1}" xml:space="preserve">{2}<\/svg>'.replace("{0}",t.getWidth()).replace("{1}",t.getHeight()).replace("{2}",n)};return i}())}(Gillette);Projector.TwoD=function(n,t){var h,c;this.parent.constructor.call(this,n,t);var l,a,o=null,u,f,r,e,s=!1,i=this,y=this.init,p=this.update2DModel,w=this.adjustProjection,b=this.loadSceneFromUrl,v;i.setType(i.PROJECTOR_2D);this.init=function(n,t){v=t;y.call(this,0);l=n;for(var u=document.getElementById(l),i=u.getElementsByTagName("canvas"),r=0,f=i.length;r<f;r++)"CANVAS"===i[r].tagName&&u.removeChild(i[r]);i=document.createElement("img");i.setAttribute("id","preview2d");a=$(u.appendChild(i))};this.loadSceneFromUrl=function(n,t,i,r,f,e){n&&""!=n&&(b.call(this,n,null,i,r,f,null,t),o=e||null,s=!1,u=document.createElement("img"),u.addEventListener("load",h),u.src=n)};h=function(){u.removeEventListener("load",h);f=document.createElement("img");f.addEventListener("load",c);f.src=i.overlayPath};c=function(){f.removeEventListener("load",c);r=document.createElement("canvas");r.width=u.width;r.height=u.height;e=r.getContext("2d");dispatchEvent(new CustomEvent(i.PROJECTOR_INITIALISED,{detail:""}));o&&o()};this.update2DModel=function(){e.clearRect(0,0,r.width,r.height);!1===s?e.drawImage(f,i.overlayPosition.x,i.overlayPosition.y,i.overlayPosition.width,i.overlayPosition.height):(p.call(this,v===Gillette.Enum.Orientation.Landscape?90:0),e.drawImage(i._drawCanvas,i.overlayPosition.x,i.overlayPosition.y,i._drawCanvas.width,i._drawCanvas.height));e.drawImage(u,0,0,r.width,r.height);a.attr("src",r.toDataURL("image/png"))};this.reset=function(){};this.adjustProjection=function(n,t){w.call(i,n,t)};this.resize=function(){};this.setModified=function(n){s=n}};Projector.TwoD.prototype=Object.create(Projector.prototype);Projector.TwoD.prototype.constructor=Projector.TwoD;Projector.TwoD.prototype.parent=Projector.prototype,function(n){n.Client&&n.Client.length&&0<n.Client.length||(n.Client.Module=function(t){function hr(n){return("0"+parseInt(n).toString(16)).slice(-2)}var si={},u=n.Wizard.Module,f=null,ft=null,tt=[],ht=!0,cr,ri,dt,i,ki=null,ct={},hi={},ci={},gt=[],li=[],ai=[],lt={},lr=null,au,di=!1,ui=!1,ar,vr=!1,at=!1,vi=!0,yr=null,c=null,e=null,fi=null,vt=null,pr=null,gi=null,wr=null,v=null,h=null,vu=null,br=null,y=null,it=!1,nr=null,k=null,ni=!1,et=null,d=null,p=null,r={},yi=null,tr=null,kr=null,g=!1,pi=!1,yt=!1,ot=!1,w=null,ir=!1,rr=!1,yu=!1,st=null,ei=null,dr=!1,pu=!0,pt=!1,ur=null,l=null,wu=0,ti=null,b=null,ii=null,wt=!1,gr=null;si.init=function(i,r,u){ki=i;pu=r||!1;ht=u||!1;au=!!navigator.userAgent.match(/Trident\/7.0/)&&null===navigator.userAgent.match(/MSIE 10.0/);wo();wt=-1<navigator.userAgent.indexOf("Android");p=new ModalAlert(t);p.init("alertPopup");addEventListener(n.Enum.Event.CLIENT_CONFIGURATION_LOAD_ERROR,bt);addEventListener(n.Enum.Event.CLIENT_CONFIGURATION_PROCESS_ERROR,bt);addEventListener(n.Enum.Event.CLIENT_SAVE_DESIGN_ERROR,bt);addEventListener(n.Enum.Event.CLIENT_TEMPLATE_LOAD_ERROR,bt);addEventListener(n.Enum.Event.CLIENT_IMAGE_UPLOAD_ERROR,bt);addEventListener(n.Enum.Event.CLIENT_IMAGE_UPLOAD_TOO_BIG_ERROR,bt);addEventListener(n.Enum.Event.CLIENT_IMAGE_UPLOAD_INVALID_FORMAT,bt);addEventListener(n.Enum.Event.PROJECTOR_MODEL_LOAD_ERROR,bt);ri=t("#wizardContainer");window.scrollTo(0,0);o(n.Enum.Progressor.SHOW,{cb:te})};si.isDirty=function(){return ni};si.getExitMessage=function(){return i.translate("alerts.savedesign.copy")};si.showExitPanel=function(n){gr=null;n&&(gr=n);ku(n)};var bu=function(){null===ur&&(ur=new ModalAlert(t),ur.init("readonlyPopup"));ur.show(null,null,{icon:p.iconType.None,formattedTitle:!1,preformatted:!0,buttons:{button1:{label:i.translate("buttons.createown"),onclick:df},button2:{label:i.translate("buttons.order"),data:{mode:n.Enum.SaveMode.order},onclick:uf}}})},ku=function(){},bo=function(){ni=!1;var n=0<t("ul.nav.navbar-nav.navbar-nav-custom>li>a").length?t("ul.nav.navbar-nav.navbar-nav-custom>li>a").attr("href"):t("div.navbar .navbar-close-btn>a").attr("href");window.location.href=n},df=function(){o(n.Enum.Progressor.SHOW,{cb:gf})},gf=function(){u.clear({callback:ne})},ne=function(){hf();s();o(n.Enum.Progressor.HIDE)},te=function(){t.ajax({url:n.Config.Api.GetConfig,dataType:"json",contentType:"application/x-www-form-urlencoded; charset=utf-8",cache:!1,method:"GET",timeout:n.Config.AjaxTimeout,success:ie,error:re})},ie=function(t){0===t.result.code?ue(t.response):(console.error(t.result.code,t.result.message),o(n.Enum.Progressor.HIDE),dispatchEvent(new CustomEvent(n.Enum.Event.CLIENT_CONFIGURATION_LOAD_ERROR,{detail:"Config load failure."})))},re=function(t,i,r){console.log("config response error",t,i,r.toString());console.error(t,i,r.toString());o(n.Enum.Progressor.HIDE);dispatchEvent(new CustomEvent(n.Enum.Event.CLIENT_CONFIGURATION_LOAD_ERROR,{detail:"Config load failure."}))},ue=function(u){var f,o;try{if(i=new WizardConfig(document,u,n.Enum),i.init(n.Config.Scroll["max-icons-desktop"]),t("body").addClass("locale-"+i.getLanguage().locale.toLowerCase()),!0===wt&&t("body").addClass("isAndroid"),!0===ht&&ft.setText(i.translate("alerts.loading.title")),i.translate("alerts.loadingmodel.title"),f=i.getMenu(),!f)throw new Exception(n.Enum.Exception.CONFIGURATION_MENU,"Failed to process client menu object");f.prependTo("tools",f.MenuType.Menu);f.appendTo("toolContainer",f.MenuType.Groups);cr=0<t("#header").length?t("#header"):t(".navbar").filter(":visible");dt=t("#toolControls");vt=t("#tools");ti=t("#utilityControls");pr=t("#utilities");e=t("#canvasParent");yi=t("#previewContainer");fi=t("#previewParent");tr=t("#btnPreview");kr=t("#previewControls");l=t("#btnChangeProduct");k=t("#imageUpload");b=t("#btnConfirmSave");ii=t("#btnDone");1>=i.getProducts().length&&(l.remove(),l=null);w=new Tracker("undefined"==typeof ga?null:ga);tt.push(t("#content3d"));tt.push(e);fe();ee();!0===i.getKstatus()&&t("a[data-id='image']",vt).addClass("disabled");i.setCanvasOrientation(r.isValidMobile?n.Enum.Orientation.Landscape:n.Enum.Orientation.Portrait);i.translateAll(t("*[data-translate]"));t("#image-panel div.upload-notice a.page-link").on("click",to);v=t("a[data-id='pencil']",vt);t("#userFont").dropdown();o=n.Config.WebFontConfig;o.active=function(){du(u)};o.inactive=function(){du(u)};WebFont&&WebFont.load(o)}catch(s){dispatchEvent(new CustomEvent(n.Enum.Event.CLIENT_CONFIGURATION_PROCESS_ERROR,{detail:JSON.stringify(s.message)}))}},du=function(){var e,o,c,s,h;try{e=t("#"+ki);o={width:e.width(),height:e.height()};u.init(ki,o,i.getCanvasOrientation());c=n.Config.Paths.Mask+i.getActiveProduct().overlay[i.getCanvasOrientationString()];u.setMask(c,i.getActiveProduct().dimensions[i.getCanvasOrientationString()]);tr.attr("class","proshieldnongift"===i.getDefaults().product?"button-preview-chill":"button-preview-manual");l&&(l.attr("class","proshieldnongift"===i.getDefaults().product?"button-change-product-manual":"button-change-product-chill"),l.attr("data-product","proshieldnongift"===i.getDefaults().product?"proshieldgift":"proshieldnongift"));s=t.cookie(n.Enum.Cookies.returningUser);(void 0===s||"true"!==s)&&(ir=!0,t.cookie(n.Enum.Cookies.returningUser,"true",{path:"/",expires:1825}));r.isValidMobile&&(ri.addClass("width"+screen.width+" height"+screen.height),wt)&&(h=Math.min(screen.width,t(window).width()),b.css("width",h-20),ii.css("width",h-20));t("#previewControls").addClass("reducedPreviewControls");t("#content3d").addClass("restrictHeight");f=new Projector.TwoD(ki,o);f.init("projector3d",i.getCanvasOrientation());f.loadSceneFromUrl(n.Config.Paths.Models+i.getActiveProduct().twoD.model,i.getActiveProduct().twoD.editableAreaPosition,i.getActiveProduct().dimensions[i.getCanvasOrientationString()],n.Config.Paths.Images+i.getActiveProduct().twoD.overlay,!1,nu)}catch(a){dispatchEvent(new CustomEvent(n.Enum.Event.CLIENT_CONFIGURATION_PROCESS_ERROR,{detail:JSON.stringify(a.message)}))}},nu=function(){var r;if(at=vi||di&&!ui?!1:!0,f.type()!==f.PROJECTOR_2D&&(co(!f.isZoomed()),lo(),vi||f.reset()),!0===vi){if(""!=i.getDefaults().design&&null!=i.getDefaults().design)0===i.getDefaults().userDesignId||"0"===i.getDefaults().userDesignId?(r=oi(n.Enum.ToolTypes.Template,i.getDefaults().design),fr(r)):sf(i.getDefaults().design);else if(!0===pu){var r=t("#"+n.Enum.ToolTypes.Template+"-group ul:first-child > li:first-child a",dt).attr("data-id"),u=t("#"+r+"-group ul:first-child > li:first-child a",dt).attr("data-id"),r=i.setTemplateFullPath(r.replace("-","/")+"/"+u),r=oi(n.Enum.ToolTypes.Template,r);fr(r)}}else!0===ir&&!1===rr&&cu();di&&(di=!1,!0===ui&&(at=!0));f.type()===f.PROJECTOR_JSC3D&&setTimeout(function(){f.reset()},250);f.type()===f.PROJECTOR_2D&&l?o(n.Enum.Progressor.HIDE,{cb:function(){f.isZoomed()&&!l.hasClass("hidden")?l.addClass("hidden"):!f.isZoomed()&&l.hasClass("hidden")&&l.removeClass("hidden")}}):!0===ht&&o(n.Enum.Progressor.HIDE);!1===ht&&(ht=!0);dispatchEvent(new CustomEvent(n.Enum.Event.WIZARD_READY,{detail:null}));gu()},gu=function(){lr=setTimeout(function(){(!0===at||f.type()===f.PROJECTOR_2D&&!0===vi)&&!1===vr&&!1===di&&(vr=!0,u.setBoundingBox(!1),f.type()===f.PROJECTOR_2D?(f.setModified(ui),f.update2DModel()):f.update3DModel(!1),u.setBoundingBox(!0),vi=at=vr=!1);ar=window.requestAnimationFrame(gu)},f.type()===f.PROJECTOR_2D?250:750)},nf=function(){clearTimeout(lr);window.cancelAnimationFrame(ar);lr=ar=null},fe=function(){t("div.level-container",dt).each(function(n){n=t(this);var i=uu(n.attr("class"));ct[n.attr("data-id")]={el:n,level:i}});t("#controlPanels div.utility-panel").each(function(n){n=t(this);var i=uu(n.attr("class"));hi[n.attr("data-id")]={el:n,level:i}});t("#controlPanels div.panel-container").each(function(n){n=t(this);ci[n.attr("data-id")]={el:n}});t("div.utility-panel",ti).each(function(n){n=t(this);var i=uu(n.attr("class"));hi[n.attr("data-id")]={el:n,level:i}})},ee=function(){t("a.subsection,a.subselection,a.subaction",dt).on("click",ff);t("a.subsection,a.subselection,a.subaction",ti).off("click",ff);e.on("click",tu);t("a",ti).on("click",ef);t("#controlPanels a:not(.font-option)").on("click",ef);t("a.menu-nav",dt).on("click",pe);t("input","#text-panel").on("change",eu);t("a.font-option","#text-panel").on("click",eu);t("a",kr).on("click",we);if(l)l.on("click",eo);t("#btnTour").on("click",cu);t("#btnTourClose").on("click",cu);b.on("click",uf);ii.on("click",ce);t("#phoneLandscapeBlocker button.close").on("click",he);if(0<t("ul.nav.navbar-nav.navbar-nav-custom>li>a").length)t("ul.nav.navbar-nav.navbar-nav-custom>li>a").on("click",rf);else t("div.navbar .navbar-close-btn").on("click",rf);t("#previewCloseBtn").on("click",ye);k.on("change",fu);tr.on("click",ve);d=t("#colourScroller");addEventListener(n.Enum.Event.WIZARD_OBJECT_SELECTED,ho);addEventListener(n.Enum.Event.WIZARD_OBJECT_ADDED,vo);addEventListener(n.Enum.Event.WIZARD_OBJECT_REMOVED,po);addEventListener(n.Enum.Event.WIZARD_OBJECT_MODIFIED,yo);addEventListener(n.Enum.Event.WIZARD_NO_OBJECT_SELECTED,s);addEventListener(n.Enum.Event.WIZARD_CANVAS_MOUSE_UP,ao);var i=t(window);i.smartresize(tf,100);tf(window);i.on("orientationchange",se);i.on("keydown",oe);(r.isValidPhone||r.breakpoint===n.Enum.MqBreakpoint.Tablet)&&t("input","#text-panel").off("change",eu);t("#btnEditText").on("click",fo)},oe=function(n){r.isValidPhone||8===n.keyCode&&(!/INPUT|SELECT|TEXTAREA/i.test(n.target.tagName)||n.target.disabled||n.target.readOnly)&&n.preventDefault()},tf=function(i){var u,e;if(i=t(this),!1===yt&&(-1===navigator.userAgent.indexOf("Android")||wt&&t(window).width()!=wu)){if(wu=t(window).width(),c&&c.isActive()&&t("#btnTourClose").click(),!0===pi&&(it&&nt(v),a(n.Enum.MenuTypes.Tool),s()),r.width=i.width(),r.height=i.height(),r.orientation=r.width>=r.height?n.Enum.Orientation.Landscape:n.Enum.Orientation.Portrait,window.matchMedia("(min-device-width:1200px)").matches?u=n.Enum.MqBreakpoint.DesktopLarge:window.matchMedia("(min-width:1200px)").matches&&(u=n.Enum.MqBreakpoint.DesktopLarge),window.matchMedia("(min-device-width:1024px) and (max-device-width:1199px)").matches?u=n.Enum.MqBreakpoint.DesktopSmall:window.matchMedia("(min-width:1024px) and (max-width:1199px)").matches&&(u=n.Enum.MqBreakpoint.DesktopSmall),window.matchMedia("(min-device-width:768px) and (max-device-width:1024px)").matches?u=n.Enum.MqBreakpoint.Tablet:window.matchMedia("(min-width:768px) and (max-width:1024px)").matches&&(u=n.Enum.MqBreakpoint.Tablet),window.matchMedia("(min-device-width:320px) and (max-device-width:767px)").matches?u=n.Enum.MqBreakpoint.Phone:window.matchMedia("(min-width:320px) and (max-width:767px)").matches&&(u=n.Enum.MqBreakpoint.Phone),!1==!!u&&window.matchMedia("(max-device-width:320px)").matches?u=n.Enum.MqBreakpoint.Other:!1==!!u&&window.matchMedia("(max-width:320px)").matches&&(u=n.Enum.MqBreakpoint.Other),r.breakpoint=u,r.menuItemsMax=r.breakpoint===n.Enum.MqBreakpoint.DesktopLarge||r.breakpoint===n.Enum.MqBreakpoint.DesktopLarge?n.Config.Scroll["max-icons-desktop"]:n.Config.Scroll["max-icons-phone"],r.isValidMobile=r.breakpoint===n.Enum.MqBreakpoint.Phone||r.breakpoint===n.Enum.MqBreakpoint.Tablet&&r.orientation===n.Enum.Orientation.Portrait,r.isValidPhone=r.breakpoint===n.Enum.MqBreakpoint.Phone,r.isValidMobile){if(yi.addClass("hidden"),null!==et&&r.isValidMobile&&(et.destroy(!0),et=null),0<Object.keys(lt).length){u=!0;for(e in lt)lt[e].destroy(u),delete lt[e]}}else yi.removeClass("hidden");f&&!r.isValidMobile&&(f.offset=kr.height());r.height<n.Config.DesktopTooSmallBreakpoint&&!r.isValidMobile&&(r.breakpoint>=n.Enum.MqBreakpoint.DesktopSmall||r.breakpoint===n.Enum.MqBreakpoint.Tablet&&r.orientation===n.Enum.Orientation.Landscape)?t("#phoneLandscapeBlocker").css("background-color","rgba(0, 0, 0, 0.5)").find("button.alert-close").css("display",""):(t("#phoneLandscapeBlocker").css({"background-color":"#878787",display:""}).find("button.alert-close").css("display","none"),0>=t("#header").length&&(cr=t(".navbar").filter(":visible")),e=cr.height()+ri.height(),r.height<e?(u=parseInt(tt[0].css("height"),10)-(e-r.height),u=Math.min(u,parseInt(tt[1].css("height"),10)-(e-r.height)),tt[0].css("height",u+"px"),tt[1].css("height",u+"px")):r.height>e&&769>e&&(u=parseInt(tt[0].css("height"),10)+(r.height-e),u=Math.max(u,parseInt(tt[1].css("height"),10)+(r.height-e)),tt[0].css("height",u+"px"),tt[1].css("height",u+"px")))}},se=function(){pi=!1;s();it&&nt(v);f.type()===f.PROJECTOR_2D&&t("#preview2d").hide({complete:function(){t(this).show()}})},tu=function(t){t.target===this&&(t.preventDefault(),it&&nt(v),a(n.Enum.MenuTypes.Tool),s())},rf=function(n){if(!1===ni)return!0;n.preventDefault();ku()},he=function(n){n&&n.preventDefault&&n.preventDefault();t("#phoneLandscapeBlocker").css("display","none")},iu=function(n){!1==!!n&&(n="save");switch(n){case"done":b.hasClass("hidden")||b.addClass("hidden");ii.hasClass("hidden")&&ii.removeClass("hidden");break;case"save":b.hasClass("hidden")&&b.removeClass("hidden");ii.hasClass("hidden")||ii.addClass("hidden")}},ce=function(n){n&&n.preventDefault&&n.preventDefault();var t=currentCulture;typeof ga!="undefined"&&ga("send","event",t.toUpperCase()+"_wizard","click","finish_design");s();iu("save");window.scrollTo(0,0)},uf=function(r){var h;if(r&&r.preventDefault&&r.preventDefault(),h=currentCulture,typeof ga!="undefined"&&ga("send","event",h.toUpperCase()+"_wizard","click","finish_design"),!b.hasClass("disabled")){for(var e=u.getObjects("text"),o=!1,f=0,s=e.length;f<s;f++)if(i.getProfanityFilter().check(e[f].text)){o=!0;e=i.translate("validation.profanity.title",!0);f=i.translate("validation.profanity.copy");s={icon:p.iconType.Error,formattedTitle:!0,buttons:{button1:{label:i.translate("buttons.tandc"),onclick:yf}}};p.show(e,f,s);break}else if(e[f].text.length>n.Config.Validation.textMaxLength){o=!0;e=i.translate("validation.texttoolong.title",!0);f=i.translate("validation.texttoolong.copy").replace("[0]",n.Config.Validation.textMaxLength);p.show(e,f,{icon:p.iconType.Alert,formattedTitle:!0});break}o||(0<t(r).length&&"btnConfirmSave"===t(r.currentTarget).attr("id")?ru({mode:n.Enum.SaveMode.order}):r.mode===n.Enum.SaveMode.order?ru({mode:n.Enum.SaveMode.order}):ru({mode:n.Enum.SaveMode.draft}))}},ru=function(r){if(document.getElementById("TandCAccept").checked){if(!1!=!!r&&!1!=!!r.mode&&(r.mode===n.Enum.SaveMode.draft||r.mode===n.Enum.SaveMode.order)){r.mode===n.Enum.SaveMode.draft&&typeof ga!="undefined"&&ga("send","event",currentCulture+"_save_des","click","savedesign");r=r.mode;b.addClass("disabled");o(n.Enum.Progressor.SHOW,{label:i.translate("alerts.savingdesign.title")});var f=u.rasterize({mode:"bitmap",format:"png",console:!1,win:!1,size:i.getActiveProduct().dimensions[i.getCanvasOrientationString()]}),e=u.rasterize({mode:"json",readonly:pt,dataless:!1,console:!1,win:!1});r={UserDesignId:i.getDefaults().userDesignId,Mode:r,product:i.getDefaults().product,DesignData:e,ImageData:f,MenuUrl:gr,IsGift:isgift};t.ajax({url:n.Config.Api.Save,dataType:"json",timeout:n.Config.AjaxTimeout,contentType:"application/x-www-form-urlencoded; charset=utf-8",cache:!1,method:"POST",data:r,success:le,error:ae})}}else alert("Please accept Terms and Condition")},le=function(i){0===i.result.code?(ni=at=!1,o(n.Enum.Progressor.HIDE),i.response.location?parent.window.location.href=i.response.location:(nr=i.response.pdfPath,t("#btnView").attr("href",nr),t("#btnView").removeClass("disabled"),b.removeClass("disabled"))):(b.removeClass("disabled"),t("#btnView").removeClass("disabled").addClass("disabled"),o(n.Enum.Progressor.HIDE),dispatchEvent(new CustomEvent(n.Enum.Event.CLIENT_SAVE_DESIGN_ERROR,{detail:JSON.stringify(i.result.message)})))},ae=function(i,r,u){o(n.Enum.Progressor.HIDE);t("#btnView").removeClass("disabled").addClass("disabled");b.removeClass("disabled");console.error(i,r,u.toString());dispatchEvent(new CustomEvent(n.Enum.Event.CLIENT_SAVE_DESIGN_ERROR,{detail:JSON.stringify(u.toString())}))},ve=function(n){n.preventDefault();t("#previewCloseBtn").removeClass("hidden");yi.removeClass("hidden").removeClass("visible").addClass("visible");f.resize()},ye=function(n){n.preventDefault();yi.removeClass("visible").removeClass("hidden").addClass("hidden");window.scrollTo(0,0)},uu=function(t){var i=0;return(t=t.match(n.Config.RegEx.LevelFromClass))&&t.length&&(i=parseInt(t[0].match(n.Config.RegEx.LevelNumFromString),10)),isNaN(i)&&(i=-1),i},ff=function(i){var f,o,l,y,p;if(i.preventDefault(),f=t(i.currentTarget),f.hasClass("disabled"))return i.stopPropagation&&i.stopPropagation(),!1;if(i&&i.preventDefault&&i.preventDefault(),!1!=!!c&&c.isActive()?(c.update(i.target,r.isValidMobile),i=!0):i=!1,!i)if(o=f.attr("data-id"),i=f.hasClass("subsection"),y=f.hasClass("subaction"),l=f.hasClass("icon-on"),!0===pt&&!1==(-1===t.inArray(n.Enum.ToolTypes.Template+"-group",gt)?!1:!0)&&o!==n.Enum.ToolTypes.Template)a(n.Enum.MenuTypes.Tool),bu();else if(i)if(it&&o===n.Enum.ToolTypes.Pencil)nt(v);else if(i=o+"-group",it&&nt(v),l)a(n.Enum.MenuTypes.Tool);else{if(ct[i].el.hasClass("level-1")?(kt(w.Type.Category,{label:o}),s()):kt(w.Type.SubCategory,{label:o}),rt(f,"subsection","on"),f=n.Enum.MenuTypes.Tool,l=f===n.Enum.MenuTypes.Tool?gt.length:li.length,!(0>=l||(y=f===n.Enum.MenuTypes.Tool?ct[i].level:hi[i].level,y>l)))for(o=0,l-=y;o<=l;o++)y=lu(f),p=t("#"+y),y&&(p.toggleClass("hidden"),rt(p,"menu","off"));ct[i].el.toggleClass("hidden");0<t(">div.menu-scroll-container",ct[i].el).length&&void 0==lt[t(">div.menu-scroll-container",ct[i].el).attr("id")]&&(r.breakpoint>=n.Enum.MqBreakpoint.DesktopSmall||r.breakpoint===n.Enum.MqBreakpoint.Tablet&&r.orientation===n.Enum.Orientation.Landscape)&&(t(">div.menu-scroll-container",ct[i].el).addClass("vertical-align"),f=[t(">div.menu-scroll-container",ct[i].el).attr("id")],o=new FTScroller(t("#"+f)[0],{scrollbars:!1,scrollingX:!0,scrollingY:!0,updateOnWindowResize:!0}),lt[f]=o);bf(n.Enum.MenuTypes.Tool,i)}else if(!0===pt&&!1===f.hasClass("icon-template"))a(n.Enum.MenuTypes.Tool),bu();else if(!0===y)switch(o!==n.Enum.ToolTypes.Product&&s(),i=o.toLowerCase().split("-"),i[0]!==n.Enum.ToolTypes.Pencil&&it&&nt(v),i[0]){case n.Enum.ToolTypes.Text:a(n.Enum.MenuTypes.Tool);kt(w.Type.Category,{label:"texttool"});rt(f,"subaction","on");null===h?af():su(br);hu(r.isValidPhone);i=u.addText({text:"Text Here",fontFamily:br});null!=i&&u.setActiveObject({obj:i});break;case n.Enum.ToolTypes.Image:a(n.Enum.MenuTypes.Tool);kt(w.Type.Category,{label:"photo"});e.off("click",tu);k.click();e.on("click",tu)}else switch(f=o.toLowerCase(),it&&nt(v),i=gt.slice(),a(n.Enum.MenuTypes.Tool),l=i[i.length-1].split("-"),"group"===l[l.length-1].toLowerCase()&&--l.length,o=l[0].toLowerCase(),i=l.join("-")+"-"+f.split("-").join("_"),kt(w.Type.Item,{label:i}),o){case n.Enum.ToolTypes.Template:i=oi(n.Enum.ToolTypes.Template,l.join("/")+"/"+f+"/"+f);fr(i);break;case n.Enum.ToolTypes.Background:!1===pt&&(f=oi(n.Enum.ToolTypes.Background,l.join("/")+"/"+f),u.setImageBackground({url:f,tracking:i||null}));break;case n.Enum.ToolTypes.Clipart:!1===pt&&(f=oi(n.Enum.ToolTypes.Clipart,l.join("/")+"/"+f),u.loadClipart({url:f,select:!0,tracking:i||null}))}},pe=function(n){n.preventDefault();var i=t(n.target);if(i.hasClass("disabled"))return n.stopPropagation&&n.stopPropagation(),!1;n=i.attr("data-id");i=i.attr("data-target");lt[i]&&lt[i].scrollBy(0,"menu-nav-prev"===n?-50:50,1)},rt=function(n,i,r){"subsection"!==i&&"subaction"!==i||n.hasClass("icon-on")?"menu"===i&&"off"===r&&t("a.icon-on",n).removeClass("icon-on"):t("a.icon-on",n.closest("ul")).removeClass("icon-on");"subaction"===i&&"toggle"===r&&n.toggleClass("icon-on");"on"===r&&n.hasClass("icon")&&!n.hasClass("icon-on")&&n.addClass("icon-on")},ef=function(i){var f,e,o;if(i.preventDefault&&i.preventDefault(),t(i.target),!0!=!!c||1!=c.isActive())if(it&&nt(v),f=t(i.target),e=f.attr("data-id"),f.hasClass("subsection"))i=e+"-group",bi("image-panel")&&ut(),hi[i].el.hasClass("level-1")&&a(n.Enum.MenuTypes.Utility),rt(f,"subsection","on"),hi[i].el.toggleClass("hidden"),bf(n.Enum.MenuTypes.Utility,i),"colour"===e&&(null!==et||r.isValidMobile||(et=new FTScroller(d[0],{scrollbars:!1,scrollingX:!1,scrollingY:!0})),r.isValidMobile?t(".utilities-container",ti).scrollLeft(t("li > a.icon-on",pr).closest("li").position().left):et.updateDimensions(d.find("ul").width(),d.find("ul").height(),!1),t("li > a.icon-on",d).removeClass("icon-on"),of());else{o=e.split("-");switch(o[0].toLowerCase()){case"colour":"nav"===o[1]?e&&et.scrollBy(0,"colour-nav-prev"===e?-50:50,0):(t("li > a.icon-on",d).removeClass("icon-on"),f.toggleClass("icon-on"),"path"===y.type||"path-group"===y.type||"text"===y.type?u.setObjectFillColour(f.css("backgroundColor")):"group"===y.type?u.setObjectPathColour(f.css("backgroundColor")):(alert("Not implemented"),rt(f,"subsection","off")));break;case"point":case"scale":case"order":case"rotate":u.adjustObject.apply(this,o);break;case"delete":u.deleteActiveObject()&&s();break;case"image":cf(i)}}},oi=function(t,i){switch(t){case n.Enum.ToolTypes.Template:return n.Config.Paths.Assets+i+n.Config.Ext.Template;case n.Enum.ToolTypes.Background:return n.Config.Paths.Assets+i+n.Config.Ext.Background;case n.Enum.ToolTypes.Clipart:return n.Config.Paths.Assets+i+n.Config.Ext.Clipart;default:return null}},of=function(){var i=u.getActiveObjectColour(),f,e;if(null!==i){"rgb(0,0,0)"==i&&(i="#010101");i=i.toUpperCase();e=null;for(f in n.Enum.Colour)if(n.Enum.Colour[f]===i){e=f;break}f=e;null!==f&&(t("li > a.icon-on",d).removeClass("icon-on"),t("a."+f,d).addClass("icon-on"),et?et.scrollLeft=t("a."+f,d).closest("li").position().left:r.isValidMobile&&d.scrollLeft(t("li > a.icon-on",d).closest("li").position().left))}},we=function(r){var e,s,h,u,c;r.preventDefault();u=t(r.target);r=u.attr("data-id").toLowerCase().split("-");r.shift();switch(r[0].toLowerCase()){case"zoom":f.type()===f.PROJECTOR_2D?(u=!1,c=f.isZoomed(),r[1]===f.ZOOM_IN&&!1===c?(f.adjustProjection.apply(this,r),e=n.Config.Paths.Models+i.getActiveProduct().twoD.zoomed.model,s=i.getActiveProduct().twoD.zoomed.editableAreaPosition,h=n.Config.Paths.Images+i.getActiveProduct().twoD.zoomed.overlay,u=!0):r[1]===f.ZOOM_OUT&&!0===f.isZoomed()&&(f.adjustProjection.apply(this,r),e=n.Config.Paths.Models+i.getActiveProduct().twoD.model,s=i.getActiveProduct().twoD.editableAreaPosition,h=n.Config.Paths.Images+i.getActiveProduct().twoD.overlay,u=!0),!0===u&&(o(n.Enum.Progressor.SHOW,{label:i.translate("alerts.loading.title")}),nf(),f.loadSceneFromUrl(e,s,i.getActiveProduct().dimensions[i.getCanvasOrientationString()],h,!c,nu))):f.adjustProjection.apply(this,r)}},fr=function(r){o(n.Enum.Progressor.SHOW,{label:i.translate("alerts.loading.title")});t.ajax({dataType:"json",url:r,timeout:n.Config.AjaxTimeout,success:sf,error:be})},sf=function(n){u.loadTemplate({clear:!0,svg:"",json:n,grouped:!1,product:i.getDefaultProduct().dimensions[i.getCanvasOrientationString()],complete:ke})},be=function(t,i,r){s();o(n.Enum.Progressor.HIDE);console.error(t,i,r);dispatchEvent(new CustomEvent(n.Enum.Event.CLIENT_TEMPLATE_LOAD_ERROR,{detail:JSON.stringify(r.toString())}))},ke=function(t){if(!1===t.hasOwnProperty("config")||!1===t.config.hasOwnProperty("background")||!1===t.config.background.hasOwnProperty("class"))hf();else if(pt=t.config.hasOwnProperty("readonly")?t.config.readonly:!1,!0===t.config.hasOwnProperty("background")&&!0===t.config.background.hasOwnProperty("class")){if(!1===e.hasClass(t.config.background["class"])){var i=e.attr("class").split(" ")[0];e.attr("class",i+" "+t.config.background["class"])}!1===fi.hasClass(t.config.background["class"])&&(i=fi.attr("class").split(" ")[0],fi.attr("class",i+" "+t.config.background["class"]))}s();o(n.Enum.Progressor.HIDE);!0===ir&&!1===rr;!1===ht&&(ht=!0);dispatchEvent(new CustomEvent(n.Enum.Event.WIZARD_TEMPLATE_LOADED,{detail:null}))},hf=function(){for(var n=e.attr("class").split(" ");1<n.length;)n.pop();for(e.attr("class",n.join("")),n=fi.attr("class").split(" ");1<n.length;)n.pop();fi.attr("class",n.join(""));pt=!1},fu=function(){cf()},cf=function(r){if(r&&r.preventDefault&&r.preventDefault(),!0!==i.getKstatus())if((r=k[0].files[0].size/1024e3)&&r>i.getImageUploads()[n.Enum.FileUploadsObject.MaxUploadSize])er(),dispatchEvent(new CustomEvent(n.Enum.Event.CLIENT_IMAGE_UPLOAD_TOO_BIG_ERROR,{detail:null}));else{kt(w.Type.Item,{label:"photo-select_image"});o(n.Enum.Progressor.SHOW,{label:i.translate("alerts.uploadingimage.title")});r=n.Config.Api.Upload+(/\?/.test(n.Config.Api.Upload)?"&":"?")+(new Date).getTime();var u=new FormData;u.append("ImageData",k[0].files[0]);t.ajax({url:r,dataType:"json",timeout:n.Config.AjaxTimeout,contentType:!1,cache:!1,method:"POST",data:u,processData:!1,success:de,error:ge})}},de=function(t){if(!0!==i.getKstatus())if(0===t.result.code){ft.setText(i.translate("alerts.downloadingimage.title"));nr=t.response.imagePath;t=nr;var r=no;!0!==i.getKstatus()&&u.addImage(t,null,"photo-select_image",r||null)}else console.error(t.result.message),er(),o(n.Enum.Progressor.HIDE),3===t.result.code?dispatchEvent(new CustomEvent(n.Enum.Event.CLIENT_IMAGE_UPLOAD_TOO_BIG_ERROR,{detail:JSON.stringify(t.result.message)})):1===t.result.code||2===t.result.code?dispatchEvent(new CustomEvent(n.Enum.Event.CLIENT_IMAGE_UPLOAD_INVALID_FORMAT,{detail:JSON.stringify(t.result.message)})):dispatchEvent(new CustomEvent(n.Enum.Event.CLIENT_IMAGE_UPLOAD_ERROR,{detail:JSON.stringify(t.result.message)}))},ge=function(t,r,u){"timeout"===r.toLowerCase()&&t.abort();o(n.Enum.Progressor.HIDE);console.error(t,r,u);er();t="timeout"===r.toLowerCase()?i.translate("alerts.timeout.title")+"\n"+i.translate("alerts.timeout.copy"):u?JSON.stringify(u.toString()):JSON.stringify(r);dispatchEvent(new CustomEvent(n.Enum.Event.CLIENT_IMAGE_UPLOAD_ERROR,{detail:t}))},no=function(t){!0!==i.getKstatus()&&(er(),u.adjustObject("point","left",t.width/2),u.adjustObject("point","up",t.height/2),o(n.Enum.Progressor.HIDE))},er=function(){k.off("change",fu);k.replaceWith(k.val("").clone(!0));k=null;k=t("#imageUpload");k.on("change",fu)},to=function(n){n.preventDefault();t("#terms-conditions-modal").modal()},eu=function(n){console.log("__onChangeTextPanelField");n.preventDefault&&n.preventDefault();var i=n.target.id;"userText"===i&&null!==u.getActiveObject()?ou():"userFont"!==i&&(console.log("__onFontFamilyUpdate"),n=t(n.target).text(),kt(w.Type.Item,{label:"texttool-"+n.split(" ").join("_")}),su(n),u.updateFontFamily({fontFamily:n}))},io=function(n){13===n.keyCode&&(n.preventDefault(),ou())},ou=function(){var t=h.val().trim();if(console.log("__onTextUpdate",t,st),""!==t)if(i.getProfanityFilter().check(t)){var t=i.translate("validation.profanity.title",!0),f=i.translate("validation.profanity.copy"),e={icon:p.iconType.Error,formattedTitle:!0,buttons:{button1:{label:i.translate("buttons.tandc"),onclick:yf}}};p.show(t,f,e);console.log("_savedTextValue",ei);h.val(ei);t={text:ei};(null===u.getActiveObject()||u.getActiveObject()!=st)&&(t.target=st);u.updateText(t);s()}else t.length<=n.Config.Validation.textMaxLength?(console.log("__onTextUpdate: update wizard.text"),t={text:t},null!==u.getActiveObject()&&u.getActiveObject()==st||!wt&&!0!==r.isValidPhone&&r.breakpoint!==n.Enum.MqBreakpoint.Tablet||(console.log("set last target"),t.target=st),u.updateText(t),lf(!0)):(f=i.translate("validation.texttoolong.title",!0),e=i.translate("validation.texttoolong.copy"),p.show(f,e,{icon:p.iconType.Alert,formattedTitle:!0}),t=t.substring(0,n.Config.Validation.textMaxLength),h.val(t),t={text:t},(null===u.getActiveObject()||u.getActiveObject()!=st)&&(t.target=st),u.updateText(t),s())},lf=function(n){r.isValidPhone&&!0===g&&(n&&h.blur(),g=!1,vf())},su=function(n){t("#userFont").attr("class","font-option font-"+n.split(" ").join("")).text(n)},af=function(){if(null===h){if(h=t("#userText"),!Modernizr.smil||wt||r.isValidPhone||r.breakpoint===n.Enum.MqBreakpoint.Tablet)h.on("keypress",io);(wt||r.isValidPhone||r.breakpoint===n.Enum.MqBreakpoint.Tablet)&&(h.on("focus",ro),h.on("blur",uo));vu=t("#fontSelector");br=t("#dropDownFontSelector li:first-child",vu).text()}},ro=function(){ei=u.getText();r.isValidMobile&&r.orientation===n.Enum.Orientation.Portrait&&setTimeout(function(){0<window.scrollY&&window.scrollBy(0,-1*(window.scrollY/2-t("#text-panel").height()/2))},1e3)},uo=function(i){if(!0!==dr){if(u.getActiveObject()===st){if(dr=!0,i=h.val(),""===i){console.log("Empty wizrd text, assuming click away. exiting function.");return}i!=ei?(console.log("Call __onTextUpdate",i,ei),""===h.val()&&h.val(i),ou()):lf(!1)}else null!==u.getActiveObject()?(!0===g&&(e.hasClass("visibleTextOnly")&&e.removeClass("visibleTextOnly"),e.hasClass("full-panels")&&e.removeClass("full-panels"),g=!1),ot&&!yt&&(t("body").removeClass("deviceKeyboardFocus"),ot=!1),sr(n.Enum.MenuTypes.Utility,"")):s();window.scrollTo(0,0);dr=!1}},hu=function(n){n?(g=!0,e.addClass("visibleTextOnly").removeClass("full-panels"),t("#text-panel>div:last-of-type").removeClass("hidden").addClass("visible"),t("#text-panel>div:first-of-type").removeClass("visible").addClass("hidden")):(e.removeClass("visibleTextOnly").removeClass("full-panels"),t("#text-panel>div:last-of-type").removeClass("hidden").removeClass("visible"),t("#text-panel>div:first-of-type").removeClass("hidden").removeClass("visible"))},vf=function(){e.removeClass("visibleTextOnly").addClass("full-panels");t("#text-panel>div:last-of-type").removeClass("visible").addClass("hidden");t("#text-panel>div:first-of-type").removeClass("hidden").addClass("visible");wi(!0===u.getObjectColourable(u.getActiveObject())?n.Enum.MenuTypes.Colour:n.Enum.MenuTypes.Pointer);!0===yt?setTimeout(function(){t("body").removeClass("deviceKeyboardFocus");t("body").removeClass("androidKeyboardFocus");ot=yt=!1},4e3):ot&&(t("body").removeClass("deviceKeyboardFocus"),ot=!1)},fo=function(){var n=u.getActiveObject();s();hu(!0);u.setActiveObject({obj:n})},yf=function(){window.open(n.Config.Locations.tandcs,"tandcwindow")},nt=function(i,r,f){rt(v,"subaction","toggle");(it=!u.isDrawModeEnabled())&&(u.setDrawingWidth(parseInt(r,10)),!1===yu&&(yu=!0,t("#btnPencilCancel").on("click",pf),t("#btnPencilOk").on("click",pf)),wf(n.Enum.ToolTypes.Pencil));u.enterDrawMode(f||null)},pf=function(n){n.preventDefault&&n.preventDefault();switch(t(this).attr("data-id")){case"cancelPencil":u.isDrawModeEnabled()&&(u.abortDrawingMode(),nt(v),s());break;case"okPencil":n=u.didUserMakeDrawing();nt(v);n||s()}},eo=function(r){r.preventDefault();r=t(this).attr("data-product");("proshieldnongift"===r&&"proshieldnongift"!=i.getDefaults().product||"proshieldgift"===r&&"proshieldgift"!=i.getDefaults().product)&&i.setActiveProduct(r)&&(kt(w.Type.Item,{label:"razor-"+r}),l.attr("class","proshieldnongift"===r?"button-change-product-manual":"button-change-product-chill"),l.attr("data-product","proshieldnongift"===r?"proshieldgift":"proshieldnongift"),tr.attr("class","proshieldnongift"===r?"button-preview-chill":"button-preview-manual"),rt(vt,"menu","off"),ut(),o(n.Enum.Progressor.SHOW,{label:i.translate("alerts.loading.title"),cb:oo}))},oo=function(){var t,r,e;nf();u.resize(i.getActiveProduct().dimensions[i.getCanvasOrientationString()]);t=n.Config.Paths.Mask+i.getActiveProduct().overlay[i.getCanvasOrientationString()];u.setMask(t,i.getActiveProduct().dimensions[i.getCanvasOrientationString()]);!0===f.isZoomed()?(t=n.Config.Paths.Models+i.getActiveProduct().twoD.zoomed.model,r=i.getActiveProduct().twoD.zoomed.editableAreaPosition,e=n.Config.Paths.Images+i.getActiveProduct().twoD.zoomed.overlay):(t=n.Config.Paths.Models+i.getActiveProduct().twoD.model,r=i.getActiveProduct().twoD.editableAreaPosition,e=n.Config.Paths.Images+i.getActiveProduct().twoD.overlay);f.loadSceneFromUrl(t,r,i.getActiveProduct().dimensions[i.getCanvasOrientationString()],e,f.isZoomed(),nu)},cu=function(i){if(i&&i.preventDefault&&i.preventDefault(),!1==!!c&&(c=new Tour(document,jQuery),c.init("toolTour",t("#toolContainer"),so)),!c.isActive())if(it&&nt(v),u.deselectAllObjects(),a(n.Enum.MenuTypes.Tool),s(),r.isValidMobile?t("#helpArrowBottom").hasClass("hidden")?(t("#helpArrowBottom").removeClass("hidden"),t("#helpArrowRight").addClass("hidden")):t("#helpArrowRight").hasClass("hidden")||t("#helpArrowRight").addClass("hidden"):t("#helpArrowRight").hasClass("hidden")?(t("#helpArrowRight").removeClass("hidden"),t("#helpArrowBottom").addClass("hidden")):t("#helpArrowBottom").hasClass("hidden")||t("#helpArrowBottom").addClass("hidden"),r.isValidMobile){i=ri.height()-(ri.height()-dt.position().top)-10;var f=t("#toolsScroller").width(),f=Math.min(f,vt.width());t("#toolTour").css({height:i,width:f})}else t("#toolTour").css({height:"",width:""});c.toggle(r.isValidMobile,pt);c.isActive()&&!0===ir&&!1===rr&&(rr=!0,c.autoPlay(n.Config.TourPanel.autoCycleInitialTimeout,n.Config.TourPanel.autoCycleTimeout,r.isValidMobile))},so=function(i){c.toggle(r.isValidMobile);i=t(this).attr("data-id");0>i.indexOf("-")||(i="template/"+i.split("-")[0]+"/"+i+"/"+i,i=oi(n.Enum.ToolTypes.Template,i),fr(i))},wi=function(i){sr(n.Enum.MenuTypes.Utility,"");i===n.Enum.MenuTypes.Colour?(null===wr&&(wr=t("a[data-id='colour']","#utilities")[0]),wr.click()):i===n.Enum.MenuTypes.Pointer&&(null===yr&&(yr=t("a[data-id='point']","#utilities")[0]),yr.click())},wf=function(i){i===n.Enum.ToolTypes.Text?(bi("text-panel")||(ut(),or("text-panel"),ci["text-panel"].el.removeClass("hidden")),(!1===r.isValidPhone||r.isValidPhone&&!1===g)&&wi(!0===u.getObjectColourable(u.getActiveObject())?n.Enum.MenuTypes.Colour:n.Enum.MenuTypes.Pointer),st=u.getActiveObject(),null===h?af():of(),h.val(u.getText()),su(u.getFontFamily()),r.isValidMobile&&window.scrollTo(0,0),r.isValidPhone&&!1===g?vf():r.breakpoint!==n.Enum.MqBreakpoint.Tablet&&(r.isValidPhone||hu(r.isValidPhone),wt?(t("body").addClass("androidKeyboardFocus"),yt=!0):r.isValidPhone&&(t("body").addClass("deviceKeyboardFocus"),ot=!0),h.focus())):i===n.Enum.ToolTypes.Image?(i="image-panel",bi(i)||(ut(),a(n.Enum.MenuTypes.Utility),or(i),ci[i].el.removeClass("hidden"))):i===n.Enum.ToolTypes.Product?(i="product-panel",bi(i)||(ut(),or(i),ci[i].el.removeClass("hidden"))):i===n.Enum.ToolTypes.Pencil&&(i="pencil-panel",bi(i)||(ut(),or(i),ci[i].el.removeClass("hidden")))},a=function(i){var e=i===n.Enum.MenuTypes.Tool?gt.length:li.length,r,u,f;if(!(0>=e)){for(r=0;r<e;r++)u=lu(i),f=t("#"+u),u&&(f.toggleClass("hidden"),rt(f,"menu","off"));lu(i,!0);rt(i===n.Enum.MenuTypes.Tool?vt:pr,"menu","off")}},bf=function(t,i){pi=!0;t===n.Enum.MenuTypes.Tool?gt.push(i):t===n.Enum.MenuTypes.Utility&&li.push(i)},lu=function(t,i){if(i=i||!1,t===n.Enum.MenuTypes.Tool)if(i)gt.length=0;else return gt.pop();else if(t===n.Enum.MenuTypes.Utility)if(i)li.length=0;else return li.pop()},ut=function(){var r=ai.length,n,i;if(!(0>=r)){for(n=0;n<r;n++)i=kf(),i&&t("#"+i).addClass("hidden");kf(!0)}},or=function(n){pi=!0;ai.push(n)},kf=function(n){if(n)ai.length=0;else return ai.pop()},bi=function(n){return-1===t.inArray(n,ai)?!1:!0},ho=function(i){y=i.detail;i=y.type.toLowerCase();sr(n.Enum.MenuTypes.Utility,"");var r=(!0===u.getObjectColourable(y)?"":"disabled")||"";n.Enum.MenuTypes.Utility===n.Enum.MenuTypes.Utility&&n.Enum.MenuTypes.Colour===n.Enum.MenuTypes.Colour&&(""===r?t("#btnUtilitiesColour").removeClass("disabled"):t("#btnUtilitiesColour").addClass(r));switch(i){case"path":ut();wi(n.Enum.MenuTypes.Colour);break;case"group":case"path-group":ut();y.identify&&y.identify.type&&(y.identify.type===n.Enum.ToolTypes.Pencil||y.identify.type===n.Enum.ToolTypes.Clipart)?(i=y.identify||!1,wi(!0==(i&&!0===i.colourable?!0:!1)?n.Enum.MenuTypes.Colour:n.Enum.MenuTypes.Pointer)):a(n.Enum.MenuTypes.Utility);break;case"text":wf(n.Enum.ToolTypes.Text);break;case"image":ut();wi(n.Enum.MenuTypes.Pointer)}},sr=function(i,u){var f=u||"";i===n.Enum.MenuTypes.Utility?(null===gi&&r.isValidMobile&&(gi=t("#utilityControls")),""===f?(ti.removeClass("hidden"),e.hasClass("utility-menu")||e.addClass("utility-menu"),r.isValidMobile&&!1===g&&gi.addClass("visible"),iu("done")):(ti.addClass(f),e.removeClass("utility-menu"),r.isValidMobile&&!1===g&&gi.removeClass("visible"),iu("save"))):i===n.Enum.MenuTypes.Tool&&t("a[data-id!='template']",vt).each(function(){""===f?t(this).removeClass("disabled"):t(this).addClass("disabled")})},co=function(n){!0===n&&!0===t("#previewTools a.icon-preview-zoom-in").hasClass("disabled")?t("#previewTools a.icon-preview-zoom-in,#previewTools a.icon-preview-zoom-out").removeClass("disabled"):!1===n&&!1===t("#previewTools a.icon-preview-zoom-in").hasClass("disabled")&&t("#previewTools a.icon-preview-zoom-in,#previewTools a.icon-preview-zoom-out").addClass("disabled")},lo=function(){var n=t("#previewTools a.icon[data-id='preview-update-view']");!0!==f.isZoomed()||n.hasClass("icon-preview-model-full")?!1!==f.isZoomed()||n.hasClass("icon-preview-model-half")||n.addClass("icon-preview-model-half").removeClass("icon-preview-model-full"):n.removeClass("icon-preview-model-half").addClass("icon-preview-model-full")},ao=function(){a(n.Enum.MenuTypes.Tool);!0===yt&&setTimeout(function(){t("body").removeClass("deviceKeyboardFocus");t("body").removeClass("androidKeyboardFocus");ot=yt=!1},4e3)},s=function(){pi=!1;u.deselectAllObjects();y=null;rt(vt,"menu","off");sr(n.Enum.MenuTypes.Utility,"hidden");a(n.Enum.MenuTypes.Utility);ut();!0===g?(e.hasClass("visibleTextOnly")&&e.removeClass("visibleTextOnly"),e.hasClass("full-panels")&&e.removeClass("full-panels"),g=!1):e.hasClass("full-panels")&&e.removeClass("full-panels");e.hasClass("utility-menu")&&e.removeClass("utility-menu");ot&&!yt&&(t("body").removeClass("deviceKeyboardFocus"),ot=!1);window.scrollTo(0,0)},vo=function(n){try{if(ni=at=ui=!0,n.detail){var t=n.detail;!1===t.identify.selectable&&t.set("selectable",!1)}}catch(i){}},yo=function(){ni=at=ui=!0},po=function(){ni=at=ui=!0},o=function(t,i){t=t||"hide";var f=i&&i.dispose?i.dispose:!1,u=i&&i.label?i.label:null,r=i&&i.cb?i.cb:null;!0===ht?ft?(u&&ft.setText(u),t===n.Enum.Progressor.SHOW?ft.show({callback:r}):t===n.Enum.Progressor.HIDE&&ft.hide(f,{callback:r})):"show"===t&&(ft=new Progressor(document,jQuery),u&&ft.setText(u),ft.show({labelClass:"progress-label",callback:r},ri[0])):r&&r()},bt=function(t){console.error(t);var r;if(o("hide"),i)switch(t.type){case n.Enum.Event.CLIENT_IMAGE_UPLOAD_TOO_BIG_ERROR:r=i.translate("validation.uploadtoobig.title");t=i.translate("validation.uploadtoobig.copy").replace("[0]",i.getImageUploads()[n.Enum.FileUploadsObject.MaxUploadSize]);break;case n.Enum.Event.CLIENT_IMAGE_UPLOAD_INVALID_FORMAT:r=i.translate("validation.uploadinvalidformat.title");t=i.translate("validation.uploadinvalidformat.copy").replace("[0]",n.Config.ValidUploadFormats);break;default:r=t.type===n.Enum.Event.CLIENT_CONFIGURATION_PROCESS_ERROR?i.translate("errors.generic.title"):i.translate("errors.network.title");t=t.type===n.Enum.Event.CLIENT_CONFIGURATION_PROCESS_ERROR?i.translate("errors.generic.copy"):i.translate("errors.network.copy")}else r="An error occurred",t="We're experiencing some technical difficulties at the moment, please try again later.";p.show(r,t,{icon:p.iconType.Error})},wo=function(){if(!0===au)return!1;try{var n=document.createElement("canvas");return!(!window.WebGLRenderingContext||!n.getContext("webgl")&&!n.getContext("experimental-webgl"))}catch(t){return!1}},kt=function(n,t){null!==n&&(0==!!w&&(w=new Tracker(ga)),t.locale=i.getLanguage().locale.toUpperCase().split("-")[1],w.track(n,t))};return t.cssHooks.backgroundColor={get:function(n){if(n.currentStyle)var t=n.currentStyle["background-color"];else window.getComputedStyle&&(t=document.defaultView.getComputedStyle(n,null).getPropertyValue("background-color"));return-1==t.search("rgb")?t:(t=t.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/),"#"+hr(t[1])+hr(t[2])+hr(t[3]))}},si}(jQuery))}(Gillette),function(){"use strict";var n=function(){function n(){window.addEventListener(Gillette.Enum.Event.WIZARD_READY,onWizardEvent);window.addEventListener(Gillette.Enum.Event.WIZARD_TEMPLATE_LOADED,onWizardEvent);Gillette.Client.Module.init("drawcanvas",!0,!0)}return{init:n}}();$(window).load(n.init)}();eventCount=0